VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /var/www/html/matadoor-plus/dist/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/matadoor-plus/dist/matadoor_plus.js
/******/ (() => { // webpackBootstrap
/******/ 	"use strict";
/******/ 	var __webpack_modules__ = ({

/***/ 1422:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = exports._g = exports._ = exports.$ = void 0;

var _Svg = _interopRequireDefault(__webpack_require__(8315));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var GCore = new _Svg["default"]();
var _ = GCore._;
exports._ = _;
var _g = GCore._;
exports._g = _g;
var $ = GCore.$;
exports.$ = $;
var _default = GCore;
exports["default"] = _default;

/***/ }),

/***/ 6865:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _Fragment = _interopRequireDefault(__webpack_require__(5925));

var _OOP = _interopRequireDefault(__webpack_require__(8608));

var _ACore = __webpack_require__(4093);

__webpack_require__(7402);

var _SvgCanvas = _interopRequireDefault(__webpack_require__(5519));

var _dxfParser = _interopRequireDefault(__webpack_require__(2431));

var _Vec = _interopRequireDefault(__webpack_require__(3316));

var _Rectangle = _interopRequireDefault(__webpack_require__(2986));

var _GCore = __webpack_require__(1422);

var _DXFPolyline = _interopRequireDefault(__webpack_require__(2403));

var _ResizeSystem = _interopRequireDefault(__webpack_require__(2826));

var _DXFEye = _interopRequireDefault(__webpack_require__(8637));

var _Hanger = _interopRequireDefault(__webpack_require__(3561));

var _Color = _interopRequireDefault(__webpack_require__(4974));

var _FileSaver = __webpack_require__(3069);

var _generator = __webpack_require__(8528);

var _DXFLine = _interopRequireDefault(__webpack_require__(5918));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

//['LINE', 'POLYLINE', 'INSERT', 'ARC', 'DIMENSION', 'TEXT', 'CIRCLE']

/***
 * @extends Fragment
 * @constructor
 */
function ComponentMaker(opt) {
  _Fragment["default"].call(this);

  this.opt = opt || {};
  this.dxfParser = new _dxfParser["default"]();
  this.dxfData = null;
}

_OOP["default"].mixClass(ComponentMaker, _Fragment["default"]);

ComponentMaker.prototype.createView = function () {
  this.$view = (0, _ACore._)({
    "class": 'md-component-maker',
    child: (0, _GCore._g)({
      tag: 'svg',
      "class": 'md-component-maker-canvas',
      child: [{
        tag: 'g',
        "class": 'md-space',
        child: [{
          tag: _DXFEye["default"],
          child: [{
            tag: 'g',
            "class": 'md-dxf'
          }]
        }]
      }]
    })
  });
  this.$canvas = (0, _ACore.$)('.md-component-maker-canvas', this.$view);
  (0, _ACore._)({
    elt: this.$canvas,
    tag: _Hanger["default"]
  });
  this.$space = (0, _ACore.$)('.md-space', this.$canvas);
  this.$attachook = (0, _GCore._g)('sattachhook').addTo(this.$canvas);
  this.$attachook.requestUpdateSize = this.updateCanvasSize.bind(this);
  this.$attachook.once('attached', function () {
    _ResizeSystem["default"].add(this.$attachook);

    this.updateCanvasSize();
  }.bind(this));
  this.$eye = (0, _ACore.$)(_DXFEye["default"].tag, this.$canvas);
  this.$eye.touchController = this.$canvas;
  this.$dfx = (0, _ACore.$)('.md-dxf', this.$canvas);
};

ComponentMaker.prototype.onStart = function () {
  var _this = this;

  fetch('Xingfa.dxf').then(function (res) {
    return res.text();
  }).then(function (text) {
    return _this.dxfParser.parse(text);
  }).then(function (obj) {
    _this.dxfData = obj; // this._calcBound();

    _this._drawDfx();
  });
};

ComponentMaker.prototype.updateCanvasSize = function () {
  var bound = this.$canvas.getBoundingClientRect();
  this.$canvas.attr('viewBox', [-0.5, -0.5, bound.width, bound.height].join(' '));
};

ComponentMaker.prototype._drawEntities = function () {};

ComponentMaker.prototype._drawDfx = function () {
  var _this2 = this;

  var entities = this.dxfData.entities;
  console.log(this.dxfData); // var typeDict = {};

  this.$layers = {};
  var vertices = [];
  var logged = false;
  entities.forEach(function (entity) {
    var elt;

    if (entity.type === 'POLYLINE' || entity.type === 'LWPOLYLINE') {
      elt = (0, _GCore._g)({
        tag: _DXFPolyline["default"],
        props: {
          shape: entity.shape,
          vertices: entity.vertices.map(function (vtx) {
            return new _Vec["default"](vtx.x, -vtx.y);
          }),
          data: entity
        }
      });
      vertices = vertices.concat(elt.vertices);
    } else if (entity.type === 'LINE') {
      elt = (0, _GCore._g)({
        tag: _DXFLine["default"],
        props: {
          vertices: entity.vertices.map(function (vtx) {
            return new _Vec["default"](vtx.x, -vtx.y);
          }),
          data: entity
        }
      });
      vertices = vertices.concat(elt.vertices);
    }

    if (!elt) return;
    var layerName = entity.layer;
    var layerElt = _this2.$layers[layerName];

    if (!layerElt) {
      layerElt = (0, _GCore._g)({
        tag: 'g',
        "class": 'md-dxf-layer',
        attr: {
          'data-name': layerName
        }
      });
      var layerData = _this2.dxfData.tables.layer.layers[layerName];
      layerElt.data = layerData;

      if (layerData) {
        var color = _Color["default"].fromInt(layerData.color, 32);

        layerElt.addStyle('--dxf-stroke-color', color.toString('rgb'));
      }

      _this2.$layers[layerName] = layerElt;
    }

    layerElt.addChild(elt);
  });
  var layerArr = Object.keys(this.$layers).map(function (key) {
    return _this2.$layers[key];
  });
  layerArr.sort(function (a, b) {
    return -a.data.colorIndex + b.data.colorIndex;
  });
  this.dxfBound = _Rectangle["default"].boundingPoints(vertices);
  this.$dfx.attr('transform', "translate(".concat(-this.dxfBound.x, ", ").concat(-this.dxfBound.y, ")"));
  var bound = this.$canvas.getBoundingClientRect();
  this.$eye.scale = Math.min((bound.width - 10) / this.dxfBound.width, (bound.height - 10) / this.dxfBound.height);
  this.$eye.O = new _Vec["default"](5, 5);
  this.$eye.updateMatrix();
  this.$dfx.addChild(layerArr);
};

var _default = ComponentMaker;
exports["default"] = _default;

/***/ }),

/***/ 8637:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _GCore = __webpack_require__(1422);

var _Vec = _interopRequireDefault(__webpack_require__(3316));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/***
 * @extends AElementNS
 * @constructor
 */
function DXFEye() {
  /***
   *
   * @type {null|AElement}
   * @private
   */
  this._touchController = null;
  this._O = new _Vec["default"](0, 0);
  this._scale = 1;
  /***
   * @type {Vec2}
   * @name O
   * @memberOf #DXFEye
   */

  /***
   * @type {number}
   * @name scale
   * @memberOf #DXFEye
   */
}

DXFEye.tag = 'DXFEye'.toLowerCase();

DXFEye.render = function () {
  return (0, _GCore._)('g.md-dxf-eye');
};

DXFEye.prototype.updateMatrix = function () {
  var a = [this._scale, 0, 0, this._scale, this._O.x, this._O.y];
  this.attr('transform', 'matrix(' + a.join(' ') + ')');
};

DXFEye.prototype.posOfMouse = function (x, y) {
  var bound = this._touchController.getBoundingClientRect();

  return new _Vec["default"](x - bound.left, y - bound.top);
};

DXFEye.property = {};
DXFEye.property.touchController = {
  /***
   * @this DXFEye
   * @param elt
   */
  set: function set(elt) {
    if (this._touchController) {}

    this._touchController = elt;

    if (this._touchController) {
      this._touchController.on({
        mousedown: this.eventHandler.dragStart,
        wheel: this.eventHandler.wheel
      });
    }
  },
  get: function get() {}
};
DXFEye.property.O = {
  set: function set(O) {
    O = O || new _Vec["default"](0, 0);
    this._O = O;
    this.updateMatrix();
  },
  get: function get() {
    return this._O;
  }
};
DXFEye.property.scale = {
  set: function set(value) {
    this._scale = Math.max(0.01, value || 0);
    this.addStyle('--dxf-scale', this._scale + '');
    this.updateMatrix();
  },
  get: function get() {
    return this._scale;
  }
};
/***
 * @memberOf DXFEye#
 * @type {{}}
 */

DXFEye.eventHandler = {};
/***
 * @this DXFEye
 * @param {MouseEvent} event
 */

DXFEye.eventHandler.dragStart = function (event) {
  if (!event.ctrlKey) return;
  this._dragData = {
    O: this._O,
    m0: this.posOfMouse(event.clientX, event.clientY)
  };
  document.addEventListener('mousemove', this.eventHandler.drag);
  document.addEventListener('mouseup', this.eventHandler.dragEnd);
};
/***
 * @this DXFEye
 * @param {MouseEvent} event
 */


DXFEye.eventHandler.drag = function (event) {
  var dragData = this._dragData;
  var m1 = this.posOfMouse(event.clientX, event.clientY);
  var d = m1.sub(dragData.m0);
  this.O = dragData.O.add(d);
};

DXFEye.eventHandler.dragEnd = function (event) {
  this._dragData = null;
  document.removeEventListener('mousemove', this.eventHandler.drag);
  document.removeEventListener('mouseup', this.eventHandler.dragEnd);
};
/***
 * @this DXFEye
 * @param {WheelEvent} event
 */


DXFEye.eventHandler.wheel = function (event) {
  if (!event.ctrlKey) return;
  event.preventDefault();
  var hs = Math.max(0.1, event.deltaY < 0 ? 1.25 : 1 / 1.25);
  this.scale *= hs;
  var M = this.posOfMouse(event.clientX, event.clientY);
  var OM = M.sub(this.O);
  this.O = M.sub(OM.mult(hs));
  this.updateMatrix();
};

var _default = DXFEye;
exports["default"] = _default;

/***/ }),

/***/ 5918:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _Vec = _interopRequireDefault(__webpack_require__(3316));

var _GCore = _interopRequireWildcard(__webpack_require__(1422));

__webpack_require__(4518);

function _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); }

function _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; }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/***
 * @extends AElementNS
 * @constructor
 */
function DXFLine() {
  this._vertices = [];
  this._d = null;
  /***
   * @type {boolean}
   * @name shape
   * @memberOf DXFLine#
   */
}

DXFLine.tag = 'DXFPolyline';

DXFLine.render = function () {
  return (0, _GCore._)('path.md-polyline');
};

DXFLine.prototype._updatePath = function () {
  var d = '';
  var vts = this._vertices;

  for (var i = 0; i < vts.length; ++i) {
    d += i === 0 ? 'M' : 'L';
    d += vts[i].x + ' ' + vts[i].y;
  }

  this._d = d;
  this.attr('d', d);
};

DXFLine.property = {};
DXFLine.property.vertices = {
  set: function set(vertices) {
    vertices = vertices || [];
    this._vertices = vertices;

    this._updatePath();
  },
  get: function get() {
    return this._vertices;
  }
};

_GCore["default"].install(DXFLine);

var _default = DXFLine;
exports["default"] = _default;

/***/ }),

/***/ 2403:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _Vec = _interopRequireDefault(__webpack_require__(3316));

var _GCore = _interopRequireWildcard(__webpack_require__(1422));

__webpack_require__(4518);

function _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); }

function _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; }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/***
 * @extends AElementNS
 * @constructor
 */
function DXFPolyline() {
  this._vertices = [];
  this._d = null;
  /***
   * @type {boolean}
   * @name shape
   * @memberOf DXFPolyline#
   */
}

DXFPolyline.tag = 'DXFPolyline';

DXFPolyline.render = function () {
  return (0, _GCore._)('path.md-polyline');
};

DXFPolyline.prototype._updatePath = function () {
  var d = '';
  var vts = this._vertices;

  for (var i = 0; i < vts.length; ++i) {
    d += i === 0 ? 'M' : 'L';
    d += vts[i].x + ' ' + vts[i].y;
  }

  this._d = d;
  if (this.shape) d += 'z';
  this.attr('d', d);
};

DXFPolyline.property = {};
DXFPolyline.property.vertices = {
  set: function set(vertices) {
    vertices = vertices || [];
    this._vertices = vertices;

    this._updatePath();
  },
  get: function get() {
    return this._vertices;
  }
};
DXFPolyline.property.shape = {
  set: function set(value) {
    if (value) {
      this.addClass('md-dxf-shape');
      if (this._d) this.attr('d', this._d + 'z');
    } else {
      if (this._d) this.attr('d', this._d);
      this.removeClass('md-dxf-shape');
    }
  },
  get: function get() {
    return this.hasClass('md-dxf-shape');
  }
};

_GCore["default"].install(DXFPolyline);

var _default = DXFPolyline;
exports["default"] = _default;

/***/ }),

/***/ 4093:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = exports._ = exports.$$ = exports.$ = void 0;

__webpack_require__(4733);

var _Dom = _interopRequireDefault(__webpack_require__(4821));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var ACore = new _Dom["default"]({
  creator: Object.assign({}, _Dom["default"].ShareInstance.creator)
});
var _ = ACore._;
exports._ = _;
var $ = ACore.$;
exports.$ = $;
var $$ = ACore.$$;
exports.$$ = $$;
var _default = ACore;
exports["default"] = _default;

/***/ }),

/***/ 3561:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

__webpack_require__(9007);

var _ACore = _interopRequireDefault(__webpack_require__(4093));

var _Vec = _interopRequireDefault(__webpack_require__(3316));

var _BrowserDetector = _interopRequireDefault(__webpack_require__(9638));

var _EventEmitter = __webpack_require__(6833);

var _AElement = _interopRequireDefault(__webpack_require__(3445));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
/****
 * @extends AElement
 * @constructor
 */

function Hanger() {
  this.addClass('as-hanger');
  this.defineEvent(['predrag', 'dragstart', 'drag', 'dragend']);
  this._hangOn = 0;
  this._hangerPointerData = null;
  this.on2({
    mousedown: this.eventHandler.hangerPointerDown,
    touchstart: this.eventHandler.hangerPointerDown
  });
  this._touchEvents = {
    touchend: this.eventHandler.hangerPointerFinish,
    touchcancel: this.eventHandler.hangerPointerFinish,
    touchmove: this.eventHandler.hangerPointerMove
  };
  this._mouseEvents = {
    mouseup: this.eventHandler.hangerPointerFinish,
    mouseleave: this.eventHandler.hangerPointerFinish,
    mousemove: this.eventHandler.hangerPointerMove
  };
}

Hanger.tag = 'hanger';

Hanger.render = function () {
  return _('div');
};

Hanger.prototype.on2 = function () {
  if (arguments.length == 1) {
    for (var name in arguments[0]) {
      Hanger.prototype.on2.call(this, name, arguments[0][name]);
    }
  } else if (arguments.length == 2) {
    this.addEventListener(arguments[0], arguments[1], _BrowserDetector["default"].supportPassiveEvent ? {
      passive: false
    } : true);
  }
};

Hanger.prototype.off2 = function () {
  if (arguments.length == 1) {
    for (var name in arguments[0]) {
      Hanger.prototype.off2.call(this, name, arguments[0][name]);
    }
  } else if (arguments.length == 2) {
    this.removeEventListener(arguments[0], arguments[1], _BrowserDetector["default"].supportPassiveEvent ? {
      passive: false
    } : true);
  }
};

Hanger.property = {};
/**
 * @type {Hanger}
 */

Hanger.property.hangOn = {
  set: function set(value) {
    if (!(value > 0)) value = 0;
    this._hangOn = value;
  },
  get: function get() {
    return this._hangOn;
  }
};
/**
 * @type {Hanger}
 */

Hanger.eventHandler = {};

Hanger.eventHandler.hangerPointerDown = function (event) {
  if (this._hangerPointerData) return;
  var bound = this.getBoundingClientRect();
  var startingPoint;
  var isTouch = event.type === 'touchstart';
  var pointerIdent = -1;
  var target;

  if (isTouch) {
    var touch = event.changedTouches[0];
    target = touch.target;
    pointerIdent = touch.identifier;
    startingPoint = new _Vec["default"](touch.clientX, touch.clientY);
  } else {
    startingPoint = new _Vec["default"](event.clientX, event.clientY);
    target = event.target;
  }

  var offsetVec = startingPoint.sub(new _Vec["default"](bound.left, bound.top));
  this._hangerPointerData = {
    state: 0,
    isTouch: isTouch,
    bound: bound,
    startingPoint: startingPoint,
    offsetVec: offsetVec,
    pointerIdent: pointerIdent,
    target: target
  };
  var preDragEvent = {
    type: 'predrag',
    originEvent: event,
    isTouch: isTouch,
    bound: bound,
    startingPoint: startingPoint,
    currentPoint: startingPoint,
    offsetVec: offsetVec,
    pointerIdent: pointerIdent,
    canceled: false,
    cancel: function cancel() {
      this.canceled = true;
    },
    clientX: startingPoint.x,
    clientY: startingPoint.y,
    target: target,
    preventDefault: function preventDefault() {
      event.preventDefault();
    }
  };
  this.emit('predrag', preDragEvent, this);

  if (preDragEvent.canceled) {
    this._hangerPointerData = null;
    return;
  }

  ;
  if (isTouch) this.on2.call(document.body, this._touchEvents);else this.on2.call(document.body, this._mouseEvents);
};

Hanger.eventHandler.hangerPointerMove = function (event) {
  var pointerData = this._hangerPointerData;
  var isTouch = pointerData.isTouch;
  var pointerIdent = -2;
  var currentPoint;

  if (isTouch) {
    var touch = (0, _EventEmitter.findChangedTouchByIdent)(event, pointerData.pointerIdent);

    if (touch) {
      pointerIdent = touch.identifier;
      currentPoint = new _Vec["default"](touch.clientX, touch.clientY);
    }
  } else {
    currentPoint = new _Vec["default"](event.clientX, event.clientY);
    pointerIdent = -1;
  }

  if (pointerIdent != pointerData.pointerIdent) return;
  pointerData.currentPoint = currentPoint;

  if (pointerData.state == 0) {
    var distance = currentPoint.sub(pointerData.startingPoint).abs();

    if (distance >= this._hangOn) {
      var dragStartEvent = {
        type: 'dragstart',
        originEvent: event,
        isTouch: isTouch,
        bound: pointerData.bound,
        startingPoint: pointerData.startingPoint,
        offsetVec: pointerData.offsetVec,
        pointerIdent: pointerIdent,
        currentPoint: currentPoint,
        target: pointerData.target,
        clientX: currentPoint.x,
        clientY: currentPoint.y,
        preventDefault: function preventDefault() {
          event.preventDefault();
        }
      };
      pointerData.state = 1;
      this.emit('dragstart', dragStartEvent, this);
    }
  }

  if (pointerData.state === 1) {
    var dragEvent = {
      type: 'drag',
      originEvent: event,
      isTouch: isTouch,
      bound: pointerData.bound,
      startingPoint: pointerData.startingPoint,
      offsetVec: pointerData.offsetVec,
      pointerIdent: pointerIdent,
      currentPoint: currentPoint,
      target: pointerData.target,
      clientX: currentPoint.x,
      clientY: currentPoint.y,
      preventDefault: function preventDefault() {
        event.preventDefault();
      }
    };
    this.emit('drag', dragEvent, this);
  }
};

Hanger.eventHandler.hangerPointerFinish = function (event) {
  var pointerData = this._hangerPointerData;
  var isTouch = event.type === 'touchend';
  if (pointerData.isTouch !== isTouch) return;
  var pointerIdent = -2;
  var currentPoint;

  if (isTouch) {
    var touch = (0, _EventEmitter.findChangedTouchByIdent)(event, pointerData.pointerIdent);

    if (touch) {
      pointerIdent = touch.identifier;
      currentPoint = new _Vec["default"](touch.clientX, touch.clientY);
    }
  } else {
    currentPoint = new _Vec["default"](event.clientX, event.clientY);
    pointerIdent = -1;
  }

  if (pointerIdent !== pointerData.pointerIdent) return;

  if (pointerData.state === 1) {
    var dragEndEvent = {
      type: 'dragend',
      originEvent: event,
      isTouch: isTouch,
      bound: pointerData.bound,
      startingPoint: pointerData.startingPoint,
      offsetVec: pointerData.offsetVec,
      pointerIdent: pointerIdent,
      currentPoint: currentPoint,
      target: pointerData.target,
      clientX: currentPoint.x,
      clientY: currentPoint.y,
      preventDefault: function preventDefault() {
        event.preventDefault();
      }
    };
    this.emit('dragend', dragEndEvent, this);
  }

  this._hangerPointerData = null;
  if (isTouch) this.off2.call(document.body, this._touchEvents);else this.off2.call(document.body, this._mouseEvents);
};

_ACore["default"].install(Hanger);

var _default = Hanger;
exports["default"] = _default;

/***/ }),

/***/ 3947:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

/***
 *
 * @param {SvgCanvas} $svg
 * @constructor
 */
function CSvgBox($svg) {
  this.$svg = $svg;
  this._width = 0;
  this._height = 0;
  this.width = 0;
  this.height = 0;
}
/***
 *
 * @param {number} width
 * @param {number} height
 */


CSvgBox.prototype.setSize = function (width, height) {
  this.$svg.attr('width', width + '');
  this.$svg.attr('height', height + '');
  this.$svg.attr('viewBox', [-0.5, -0.5, width, height].join(' '));
  this._width = width;
  this._height = height;
};

Object.defineProperty(CSvgBox.prototype, 'width', {
  /***
   *
   * @param {Number} width
   */
  set: function set(width) {
    this.setSize(width, this._height);
  },

  /***
   *
   * @return {number}
   */
  get: function get() {
    return this._width;
  }
});
Object.defineProperty(CSvgBox.prototype, 'height', {
  /***
   *
   * @param {Number} height
   */
  set: function set(height) {
    this.setSize(this._width, height);
  },

  /***
   *
   * @return {number}
   */
  get: function get() {
    return this._height;
  }
});
Object.defineProperty(CSvgBox.prototype, 'size', {
  /***
   *
   * @param {{width: number, height:number}} size
   */
  set: function set(size) {
    this.setSize(size.width, size.height);
  },

  /***
   *
   * @return {{width: number, height: number}}
   */
  get: function get() {
    return {
      width: this._width,
      height: this._height
    };
  }
});
var _default = CSvgBox;
exports["default"] = _default;

/***/ }),

/***/ 5013:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _Svg = _interopRequireDefault(__webpack_require__(8315));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var Core = new _Svg["default"]();
var _default = Core;
exports["default"] = _default;

/***/ }),

/***/ 5519:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _Core = _interopRequireDefault(__webpack_require__(5013));

var _AElementNS = _interopRequireDefault(__webpack_require__(5658));

var _ResizeSystem = _interopRequireDefault(__webpack_require__(2826));

var _CSvgBox = _interopRequireDefault(__webpack_require__(3947));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var _ = _Core["default"]._;
var $ = _Core["default"].$;
/***
 * @extends AElementNS
 * @constructor
 */

function SvgCanvas() {
  var thisSC = this;
  this.box = new _CSvgBox["default"](this);
  this.$attachhook = $('sattachhook', this).on('attached', this.eventHandler.svgAttached);

  this.$attachhook.requestUpdateSize = function () {
    thisSC.updateSize();
  };
}

SvgCanvas.tag = 'svgcanvas';

SvgCanvas.render = function () {
  return _({
    tag: 'svg',
    "class": 'ag-canvas',
    child: 'sattachhook'
  });
};

SvgCanvas.prototype.clearChild = function () {
  while (this.lastChild && this.lastChild !== this.$attachhook) {
    this.removeChild(this.firstChild);
  }

  return this;
};

SvgCanvas.prototype._updateCanvasSize = function () {
  var bound = this.getBoundingClientRect();
  var width = bound.width;
  var height = bound.height;
  this.box.setSize(width, height);
};

SvgCanvas.prototype.updateSize = function () {
  this._updateCanvasSize();
};
/***
 * @type {SvgCanvas}
 */


SvgCanvas.eventHandler = {};

SvgCanvas.eventHandler.svgAttached = function () {
  _ResizeSystem["default"].add(this.$attachhook);

  this.updateSize();
};

_Core["default"].install(SvgCanvas);

var _default = SvgCanvas;
exports["default"] = _default;

/***/ }),

/***/ 6311:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _noop = _interopRequireDefault(__webpack_require__(5025));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function Context() {
  /****
   *
   * @type {"CREATE"|"PAUSE"|"RUNNING"|"STANDBY"|"DIE"|"STOP"}
   */
  this.state = "CREATE";
  /**
   * @type {Context}
   */

  this.parent = null;
  /***
   *
   * @type {null|ContextManager}
   */

  this.ctxMng = null;
}
/**
 * @returns {*}
 */


Context.prototype.getContext = function (key) {
  var ctx = this;
  var res;

  while (ctx && !res) {
    if (ctx.ctxMng) {
      res = ctx.ctxMng.get(key);
    }

    ctx = ctx.parent;
  }

  return res;
};
/**
 * @param {string} key
 * @param {*} value
 * @returns {*}
 */


Context.prototype.setContext = function (key, value) {
  return this.getContextManager().set(key, value);
};
/**
 * @returns {ContextManager}
 */


Context.prototype.getContextManager = function () {
  var ctx = this;
  var res;

  while (ctx && !res) {
    if (ctx.ctxMng) {
      res = ctx.ctxMng;
    }

    ctx = ctx.parent;
  }

  return res;
};
/**
 * @param {Context} parent
 */


Context.prototype.attach = function (parent) {
  //stop before attach to new context
  this.stop();
  /**
   * @type {Application}
   */

  this.parent = parent;
  this.onAttached && this.onAttached();
};

Context.prototype.detach = function () {
  this.stop();
  this.onDetached && this.onDetached();
  this.parent = null;
};

Context.prototype.pause = function () {
  if (this.state.match(/RUNNING|PAUSE/)) {
    if (this.state === "RUNNING") {
      this.state = "PAUSE";
      this.onPause && this.onPause();
    }
  } else {
    console.warn(this, "NOT RUNNING");
  }
};

Context.prototype.resume = function () {
  if (!this.state.match(/STANDBY|PAUSE|RUNNING/)) {
    console.error(this, 'NOT READY!', this.state);
    return;
  }

  if (this.state === "RUNNING") return;
  this.state = "RUNNING";
  this.onResume && this.onResume();
};
/***
 * @param {boolean=} standBy start but waiting for resume()
 */


Context.prototype.start = function (standBy) {
  if (this.state.match(/DIE/)) {
    console.error(this, 'DIED!');
    return;
  }

  if (this.state.match(/RUNNING/)) return;

  if (this.state.match(/STOP|CREATE/)) {
    this.state = "STANDBY";
    this.onStart && this.onStart();
  }

  if (!standBy && this.state.match(/STANDBY|PAUSE/)) {
    this.resume();
  }
};

Context.prototype.stop = function () {
  if (this.state.match(/STOP|DIE|CREATE/)) return;
  if (this.state.match(/RUNNING/)) this.pause();
  this.state = "STOP";
  this.onStop && this.onStop();
};

Context.prototype.destroy = function () {
  if (this.state.match(/DIE/)) return;
  if (this.state.match(/RUNNING|PAUSE/)) this.stop();
  this.state = "DIE";
  this.onDestroy && this.onDestroy();
};

Context.prototype.onDestroy = _noop["default"];
Context.prototype.onStop = _noop["default"];
Context.prototype.onStart = _noop["default"];
Context.prototype.onResume = _noop["default"];
Context.prototype.onPause = _noop["default"];
Context.prototype.onDetached = _noop["default"];
Context.prototype.onAttached = _noop["default"];
var _default = Context;
exports["default"] = _default;

/***/ }),

/***/ 8062:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

function ContextManager() {
  this.__contextData__ = {};
}
/**
 * @param {String} key
 * @returns {*}
 */


ContextManager.prototype.get = function (key) {
  return this.__contextData__[key];
};
/**
 * @param {String} key
 * @param {*} value
 * @returns {Context}
 */


ContextManager.prototype.set = function (key, value) {
  this.__contextData__[key] = value;
  return this;
};

ContextManager.prototype.assign = function (obj) {
  Object.assign(this.__contextData__, obj);
  return this;
};

ContextManager.prototype.remove = function (key) {
  delete this.__contextData__[key];
  return this;
};

ContextManager.prototype.contains = function (key) {
  return key in this.__contextData__;
};

var _default = ContextManager;
exports["default"] = _default;

/***/ }),

/***/ 5925:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _ContextManager = _interopRequireDefault(__webpack_require__(8062));

var _GrandContext = _interopRequireDefault(__webpack_require__(4179));

var _OOP = _interopRequireDefault(__webpack_require__(8608));

var _noop = _interopRequireDefault(__webpack_require__(5025));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/***
 * @extends GrandContext
 * @constructor
 */
function Fragment() {
  _GrandContext["default"].call(this);
}

_OOP["default"].mixClass(Fragment, _GrandContext["default"]);

Fragment.prototype.createView = function () {
  throw new Error("Not implement!");
};

Fragment.prototype.getView = function () {
  if (this.$view) return this.$view;
  this.$view = this.createView() || this.$view;
  if (!this.$view) throw new Error("this.$view must be not null!");
  if (this.onCreated) this.onCreated();
  return this.$view;
};

Fragment.prototype.onCreated = _noop["default"];
var _default = Fragment;
exports["default"] = _default;

/***/ }),

/***/ 4179:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _Context = _interopRequireDefault(__webpack_require__(6311));

var _ContextManager = _interopRequireDefault(__webpack_require__(8062));

var _OOP = _interopRequireDefault(__webpack_require__(8608));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/***
 * @extends Context
 * @constructor
 */
function GrandContext() {
  _Context["default"].call(this);

  this.ctxMng = new _ContextManager["default"]();
}

_OOP["default"].mixClass(GrandContext, _Context["default"]);

var _default = GrandContext;
exports["default"] = _default;

/***/ }),

/***/ 5025:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = noop;

function noop() {}

;

/***/ }),

/***/ 628:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = safeThrow;

function safeThrow(error) {
  setTimeout(function () {
    throw error;
  }, 0);
}

/***/ }),

/***/ 4974:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _TemplateString = _interopRequireDefault(__webpack_require__(3021));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function Color(rgba) {
  this.rgba = rgba.slice();
}
/***
 *
 * @returns {string}
 */


Color.prototype.toHex6 = function () {
  return this.rgba.slice(0, 3).map(function (b) {
    b = b * 255 >> 0;
    return (b < 16 ? '0' : '') + b.toString(16);
  }).join('');
};
/***
 *
 * @returns {string}
 */


Color.prototype.toHex8 = function () {
  return this.rgba.map(function (b) {
    b = b * 255 >> 0;
    return (b < 16 ? '0' : '') + b.toString(16);
  }).join('');
};
/***
 *
 * @returns {string}
 */


Color.prototype.toHex3 = function () {
  return this.rgba.slice(0, 3).map(function (b) {
    b = b * 255 / 17 >> 0;
    return b.toString(16);
  }).join('');
};
/***
 *
 * @returns {string}
 */


Color.prototype.toHex4 = function () {
  return this.rgba.map(function (b) {
    b = b * 255 / 17 >> 0;
    return b.toString(16);
  }).join('');
};
/***
 *
 * @returns {number[]}
 */


Color.prototype.toHSLA = function () {
  return Color.rgbaToHSLA(this.rgba);
};
/***
 *
 * @returns {number[]}
 */


Color.prototype.toHSBA = function () {
  return Color.rgbaToHSBA(this.rgba);
};
/***
 *
 * @returns {number[]}
 */


Color.prototype.toHWBA = function () {
  return Color.rgbaToHWBA(this.rgba);
};
/***
 *
 * @returns {Color}
 */


Color.prototype.getHighContrastColor = function () {
  var hsba = this.toHSBA();
  var h, s, b;
  h = hsba[0] > 0.5 ? hsba[0] - 0.5 : hsba[0] + 0.5;
  s = hsba[1] > 0.5 ? hsba[1] - 0.5 : hsba[1] + 0.5;
  b = hsba[2] > 0.5 ? hsba[2] - 0.5 : hsba[2] + 0.5;
  return Color.fromHSB(h, s, b);
};

Color.prototype.getHightContrastColor = Color.prototype.getHighContrastColor;

Color.prototype.getLuminance = function () {
  var a = this.rgba.slice(0, 3).map(function (v) {
    return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
  });
  return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;
};
/***
 *
 * @param {Color} other
 * @returns {number}
 */


Color.prototype.getContrastWith = function (other) {
  var lum1 = this.getLuminance();
  var lum2 = other.getLuminance();
  var brightest = Math.max(lum1, lum2);
  var darkest = Math.min(lum1, lum2);
  return (brightest + 0.05) / (darkest + 0.05);
};
/***
 *
 * @returns {Color}
 */


Color.prototype.getContrastYIQ = function () {
  var r = this.rgba[0] * 255;
  var g = this.rgba[1] * 255;
  var b = this.rgba[2] * 255;
  var yiq = (r * 299 + g * 587 + b * 114) / 1000;
  return yiq >= 128 ? new Color([0, 0, 0, 1]) : new Color([1, 1, 1, 1]);
};
/**
 *
 * @returns {Color}
 */


Color.prototype.clone = function () {
  return new Color(this.rgba.slice());
};
/**
 *
 *  ['rgba', 'rgba', 'rgba({{x[0]*255>>0}}, {{x[1]*255>>0}}, {{x[2]*255>>0}}, {{x[3]}})'],
 *     ['rgb', 'rgba', 'rgb({{x[0]*255>>0}}, {{x[1]*255>>0}}, {{x[2]*255>>0}})'],
 *     ['hsl', 'toHSLA()', 'hsl({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%)'],
 *     ['hsla', 'toHSLA()', 'hsla({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%, {{x[3]}})'],
 *     ['hsb', 'toHSBA()', 'hsb({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%)'],
 *     ['hsba', 'toHSBA()', 'hsba({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%, {{x[3]}})'],
 *     ['hex3', 'toHex3()', '#{{x}}'],
 *     ['hex4', 'toHex4()', '#{{x}}'],
 *     ['hex6', 'toHex6()', '#{{x}}'],
 *     ['hex6', 'toHex8()', '#{{x}}'],
 *     ['hwb', 'toHWBA()', 'hwb({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%)'],
 *     ['hwba', 'toHWBA()', 'hwba({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%, {{x[3]}})']
 */

/****
 *
 * @param {"rgba"|"rgb"|"hsl"|"hsla"|"hsb"|"hsba"|"hex3"|"hex4"|"hex6"|"hex6"|"hwb"|"hwba"} mode
 * @returns {string}
 */


Color.prototype.toString = function (mode) {
  mode = mode || 'rgba';
  mode = mode.toLocaleLowerCase();
  return Color.templates[mode](this);
};
/***
 *
 * @param notStandard
 * @param {number[]} hsbWeight
 * @returns {Color}
 */


Color.prototype.nearestNamedColor = function (notStandard, hsbWeight) {
  hsbWeight = hsbWeight || [5, 3, 1];
  var hsba = this.toHSBA();
  var bestMatch = null;
  var dist = 1000;
  Object.keys(Color.namedColors).concat(notStandard ? Object.keys(Color.nonStandarNamedColors) : []).forEach(function (name) {
    var c = Color.parse(Color.namedColors[name] || Color.nonStandarNamedColors[name]);
    var cHSBA = c.toHSBA();
    var cDist = Math.abs(hsba[0] - cHSBA[0]) * hsbWeight[0] + Math.abs(hsba[1] - cHSBA[1]) * hsbWeight[1] + Math.abs(hsba[2] - cHSBA[2]) * hsbWeight[2];

    if (cDist < dist) {
      dist = cDist;
      bestMatch = name;
    }
  });
  return bestMatch;
};

Color.templates = [['rgba', 'rgba', 'rgba({{x[0]*255>>0}}, {{x[1]*255>>0}}, {{x[2]*255>>0}}, {{x[3]}})'], ['rgb', 'rgba', 'rgb({{x[0]*255>>0}}, {{x[1]*255>>0}}, {{x[2]*255>>0}})'], ['hsl', 'toHSLA()', 'hsl({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%)'], ['hsla', 'toHSLA()', 'hsla({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%, {{x[3]}})'], ['hsb', 'toHSBA()', 'hsb({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%)'], ['hsba', 'toHSBA()', 'hsba({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%, {{x[3]}})'], ['hex3', 'toHex3()', '#{{x}}'], ['hex4', 'toHex4()', '#{{x}}'], ['hex6', 'toHex6()', '#{{x}}'], ['hex8', 'toHex8()', '#{{x}}'], ['hwb', 'toHWBA()', 'hwb({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%)'], ['hwba', 'toHWBA()', 'hwba({{x[0] * 360}}, {{x[1] * 100}}%, {{x[2] * 100}}%, {{x[3]}})']].reduce(function (ac, cr) {
  ac[cr[0]] = new Function('color', ['var x = color.' + cr[1] + ';', 'return ' + _TemplateString["default"].parse(cr[2]).toJSCode() + ';'].join('\n'));
  return ac;
}, {});
Color.regexes = {
  whiteSpace: /\s*/,
  // Match zero or more whitespace characters.
  integer: /(\d{1,3})/,
  // Match integers: 79, 255, etc.
  decimal: /((?:\d+(?:\.\d+)?)|(?:\.\d+))/,
  // Match 129.6, 79, .9, etc.
  percent: /((?:\d+(?:\.\d+)?)|(?:\.\d+))%/,
  // Match 12.9%, 79%, .9%, etc.
  hex3: /^#([a-f0-9])([a-f0-9])([a-f0-9])$/i,
  // Match colors in format #XXXX, e.g. #5123.
  hex4: /^#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])$/i,
  // Match colors in format #XXXXXX, e.g. #b4d455.
  hex6: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i,
  // Match colors in format #XXXXXXXX, e.g. #b4d45535.
  hex8: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i
};
Color.regexes.percent = new RegExp(Color.regexes.decimal.source + '%');
Color.regexes.rgb = new RegExp(['^rgb\\(', Color.regexes.integer.source, ',', Color.regexes.integer.source, ',', Color.regexes.integer.source, '\\)$'].join(Color.regexes.whiteSpace.source), 'i');
Color.regexes.rgbPercent = new RegExp(['^rgb\\(', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, '\\)$'].join(Color.regexes.whiteSpace.source), 'i'); // Match colors in format rgb(R, G, B, A), e.g. rgb(255, 0, 128, 0.25).

Color.regexes.rgba = new RegExp(['^rgba\\(', Color.regexes.integer.source, ',', Color.regexes.integer.source, ',', Color.regexes.integer.source, ',', Color.regexes.decimal.source, '\\)$'].join(Color.regexes.whiteSpace.source), 'i'); // Match colors in format rgb(R%, G%, B%, A), e.g. rgb(100%, 0%, 28.9%, 0.5).

Color.regexes.rgbaPercent = new RegExp(['^rgba\\(', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.decimal.source, '\\)$'].join(Color.regexes.whiteSpace.source), 'i'); // Match colors in format hsla(H, S%, L%), e.g. hsl(100, 40%, 28.9%).

Color.regexes.hsl = new RegExp(['^hsl\\(', Color.regexes.integer.source, '[deg]*', ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, '\\)$'].join(Color.regexes.whiteSpace.source), 'i'); // Match colors in format hsla(H, S%, L%, A), e.g. hsla(100, 40%, 28.9%, 0.5).

Color.regexes.hsla = new RegExp(['^hsla\\(', Color.regexes.integer.source, '[deg]*', ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.decimal.source, '\\)$'].join(Color.regexes.whiteSpace.source), 'i'); // Match colors in format hsb(H, S%, B%), e.g. hsb(100, 40%, 28.9%).

Color.regexes.hsb = new RegExp(['^hsb\\(', Color.regexes.integer.source, '[deg]*', ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, '\\)$'].join(Color.regexes.whiteSpace.source), 'i'); // Match colors in format hsba(H, S%, B%, A), e.g. hsba(100, 40%, 28.9%, 0.5).

Color.regexes.hsba = new RegExp(['^hsba\\(', Color.regexes.integer.source, '[deg]*', ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.decimal.source, '\\)$'].join(Color.regexes.whiteSpace.source), 'i');
Color.regexes.hwb = new RegExp(['^hwb\\(', Color.regexes.integer.source, '[deg]*', ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, '\\)$'].join(Color.regexes.whiteSpace.source), 'i'); // Match colors in format hsba(H, S%, B%, A), e.g. hsba(100, 40%, 28.9%, 0.5).

Color.regexes.hwba = new RegExp(['^hwba\\(', Color.regexes.integer.source, '[deg]*', ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.decimal.source, '\\)$'].join(Color.regexes.whiteSpace.source), 'i');
/***
 *
 * @param {number} code
 * @param {32|24|16|8} bits
 * @returns {Color}
 */

Color.fromInt = function (code, bits) {
  var r, g, b, a;

  if (bits == 32) {
    b = (code & 0xff) / 255;
    g = ((code & 0xff00) >> 8) / 255;
    r = ((code & 0xff0000) >> 16) / 255;
    a = (code >> 24) / 255;
  } else if (bits == 24) {
    b = (code & 0xff) / 255;
    g = ((code & 0xff00) >> 8) / 255;
    r = ((code & 0xff0000) >> 16) / 255;
    a = 1;
  } else if (bits == 16) {
    b = (code & 0x1f) / 0x1f;
    g = ((code & 0x7e0) >> 5) / 0x3f;
    b = (code >> 10) / 0x1f;
    a = 1;
  } else if (bits == 8) {
    //gray-scale
    b = (code & 0x3) / 0x3;
    g = ((code & 0x1c) >> 2) / 0x7;
    b = (code >> 5) / 0x7;
    a = 1;
  }

  return new Color([r, g, b, a]);
};
/**
 *
 * @param {number} r
 * @param {number} g
 * @param {number} b
 * @returns {Color}
 */


Color.fromRGB = function (r, g, b) {
  return new Color([r, g, b, 1]);
};
/**
 *
 * @param {number} r
 * @param {number} g
 * @param {number} b
 * @param {number} a
 * @returns {Color}
 */


Color.fromRGBA = function (r, g, b, a) {
  return new Color([r, g, b, a]);
};
/***
 *
 * @param {number} h
 * @param {number} s
 * @param {number} l
 * @returns {Color}
 */


Color.fromHSL = function (h, s, l) {
  var rgba = this.hslaToRGBA([h, s, l, 1]);
  return new Color(rgba);
};
/***
 *
 * @param {number} h
 * @param {number} s
 * @param {number} l
 * @param {number} a
 * @returns {Color}
 */


Color.fromHSLA = function (h, s, l, a) {
  var rgba = this.hslaToRGBA([h, s, l, a]);
  return new Color(rgba);
};
/***
 *
 * @param {number} h
 * @param {number} s
 * @param {number} b
 * @returns {Color}
 */


Color.fromHSB = function (h, s, b) {
  var rgba = this.hsbaToRGBA([h, s, b, 1]);
  return new Color(rgba);
};
/***
 *
 * @param {number} h
 * @param {number} s
 * @param {number} b
 * @param {number} a
 * @returns {Color}
 */


Color.fromHSBA = function (h, s, b, a) {
  var rgba = this.hsbaToRGBA([h, s, b, a]);
  return new Color(rgba);
};
/***
 *
 * @param {number} h
 * @param {number} s
 * @param {number} b
 * @returns {Color}
 */


Color.fromHWB = function (h, s, b) {
  var rgba = this.hwbaToRGBA([h, s, b, 1]);
  return new Color(rgba);
};
/***
 *
 * @param {number} h
 * @param {number} s
 * @param {number} b
 * @param {number} a
 * @returns {Color}
 */


Color.fromHWBA = function (h, s, b, a) {
  var rgba = this.hwbaToRGBA([h, s, b, a]);
  return new Color(rgba);
};
/**
 * @param {String} text
 * @returns {Color}
 */


Color.parse = function (text) {
  if (this.namedColors[text]) text = this.namedColors[text];
  if (this.nonStandarNamedColors[text]) text = this.nonStandarNamedColors[text];

  if (this.regexes.hex8.test(text)) {
    return this.fromRGBA.apply(this, this.regexes.hex8.exec(text).slice(1).map(function (v) {
      return parseInt(v, 16) / 255;
    }));
  } else if (this.regexes.hex6.test(text)) {
    return this.fromRGB.apply(this, this.regexes.hex6.exec(text).slice(1).map(function (v) {
      return parseInt(v, 16) / 255;
    }));
  } else if (this.regexes.hex4.test(text)) {
    return this.fromRGBA.apply(this, this.regexes.hex4.exec(text).slice(1).map(function (v) {
      return parseInt(v + v, 16) / 255;
    }));
  } else if (this.regexes.hex3.test(text)) {
    return this.fromRGB.apply(this, this.regexes.hex3.exec(text).slice(1).map(function (v) {
      return parseInt(v + v, 16) / 255;
    }));
  } else if (this.regexes.rgba.test(text)) {
    return this.fromRGBA.apply(this, this.regexes.rgba.exec(text).slice(1).map(function (v, i) {
      return i < 3 ? parseFloat(v, 10) / 255 : parseFloat(v, 10);
    }));
  } else if (this.regexes.rgb.test(text)) {
    return this.fromRGB.apply(this, this.regexes.rgb.exec(text).slice(1).map(function (v, i) {
      return parseFloat(v, 10) / 255;
    }));
  } else if (this.regexes.rgbPercent.test(text)) {
    return this.fromRGB.apply(this, this.regexes.rgbPercent.exec(text).slice(1).map(function (v, i) {
      return parseFloat(v, 10) / 100;
    }));
  } else if (this.regexes.rgbaPercent.test(text)) {
    return this.fromRGBA.apply(this, this.regexes.rgbaPercent.exec(text).slice(1).map(function (v, i) {
      return parseFloat(v, 10) / (i < 3 ? 100 : 1);
    }));
  } else if (this.regexes.hsl.test(text)) {
    return this.fromHSL.apply(this, this.regexes.hsl.exec(text).slice(1).map(function (v, i) {
      return parseFloat(v, 10) / (i == 0 ? 360 : 100);
    }));
  } else if (this.regexes.hsla.test(text)) {
    return this.fromHSLA.apply(this, this.regexes.hsla.exec(text).slice(1).map(function (v, i) {
      return parseFloat(v, 10) / (i == 0 ? 360 : i < 3 ? 100 : 1);
    }));
  } else if (this.regexes.hsb.test(text)) {
    return this.fromHSB.apply(this, this.regexes.hsb.exec(text).slice(1).map(function (v, i) {
      return parseFloat(v, 10) / (i == 0 ? 360 : 100);
    }));
  } else if (this.regexes.hsba.test(text)) {
    return this.fromHSBA.apply(this, this.regexes.hsba.exec(text).slice(1).map(function (v, i) {
      return parseFloat(v, 10) / (i == 0 ? 360 : i < 3 ? 100 : 1);
    }));
  } else if (this.regexes.hwb.test(text)) {
    return this.fromHWB.apply(this, this.regexes.hwb.exec(text).slice(1).map(function (v, i) {
      return parseFloat(v, 10) / (i == 0 ? 360 : 100);
    }));
  } else if (this.regexes.hwba.test(text)) {
    return this.fromHWBA.apply(this, this.regexes.hwba.exec(text).slice(1).map(function (v, i) {
      return parseFloat(v, 10) / (i == 0 ? 360 : i < 3 ? 100 : 1);
    }));
  } else {
    throw new Error("Fail to parse " + text);
  }
};
/***
 * @typedef {"aliceblue"|"antiquewhite"|"aqua"|"aquamarine"|"azure"|"beige"|"bisque"|"black"|"blanchedalmond"|"blue"|"blueviolet"|"brown"|"burlywood"|"cadetblue"|"chartreuse"|"chocolate"|"coral"|"cornflowerblue"|"cornsilk"|"crimson"|"cyan"|"darkblue"|"darkcyan"|"darkgoldenrod"|"darkgray"|"darkgreen"|"darkgrey"|"darkkhaki"|"darkmagenta"|"darkolivegreen"|"darkorange"|"darkorchid"|"darkred"|"darksalmon"|"darkseagreen"|"darkslateblue"|"darkslategray"|"darkslategrey"|"darkturquoise"|"darkviolet"|"deeppink"|"deepskyblue"|"dimgray"|"dimgrey"|"dodgerblue"|"firebrick"|"floralwhite"|"forestgreen"|"fuchsia"|"gainsboro"|"ghostwhite"|"gold"|"goldenrod"|"gray"|"green"|"greenyellow"|"grey"|"honeydew"|"hotpink"|"indianred"|"indigo"|"ivory"|"khaki"|"lavender"|"lavenderblush"|"lawngreen"|"lemonchiffon"|"lightblue"|"lightcoral"|"lightcyan"|"lightgoldenrodyellow"|"lightgray"|"lightgreen"|"lightgrey"|"lightpink"|"lightsalmon"|"lightseagreen"|"lightskyblue"|"lightslategray"|"lightslategrey"|"lightsteelblue"|"lightyellow"|"lime"|"limegreen"|"linen"|"magenta"|"maroon"|"mediumaquamarine"|"mediumblue"|"mediumorchid"|"mediumpurple"|"mediumseagreen"|"mediumslateblue"|"mediumspringgreen"|"mediumturquoise"|"mediumvioletred"|"midnightblue"|"mintcream"|"mistyrose"|"moccasin"|"navajowhite"|"navy"|"oldlace"|"olive"|"olivedrab"|"orange"|"orangered"|"orchid"|"palegoldenrod"|"palegreen"|"paleturquoise"|"palevioletred"|"papayawhip"|"peachpuff"|"peru"|"pink"|"plum"|"powderblue"|"purple"|"red"|"rosybrown"|"royalblue"|"saddlebrown"|"salmon"|"sandybrown"|"seagreen"|"seashell"|"sienna"|"silver"|"skyblue"|"slateblue"|"slategray"|"slategrey"|"snow"|"springgreen"|"steelblue"|"tan"|"teal"|"thistle"|"tomato"|"turquoise"|"violet"|"wheat"|"white"|"whitesmoke"|"yellow"|"yellowgreen"|"transparent"} NamedColor
 */


Color.namedColors = {
  aliceblue: '#f0f8ff',
  antiquewhite: '#faebd7',
  aqua: '#00ffff',
  aquamarine: '#7fffd4',
  azure: '#f0ffff',
  beige: '#f5f5dc',
  bisque: '#ffe4c4',
  black: '#000000',
  blanchedalmond: '#ffebcd',
  blue: '#0000ff',
  blueviolet: '#8a2be2',
  brown: '#a52a2a',
  burlywood: '#deb887',
  cadetblue: '#5f9ea0',
  chartreuse: '#7fff00',
  chocolate: '#d2691e',
  coral: '#ff7f50',
  cornflowerblue: '#6495ed',
  cornsilk: '#fff8dc',
  crimson: '#dc143c',
  cyan: '#00ffff',
  darkblue: '#00008b',
  darkcyan: '#008b8b',
  darkgoldenrod: '#b8860b',
  darkgray: '#a9a9a9',
  darkgreen: '#006400',
  darkgrey: '#a9a9a9',
  darkkhaki: '#bdb76b',
  darkmagenta: '#8b008b',
  darkolivegreen: '#556b2f',
  darkorange: '#ff8c00',
  darkorchid: '#9932cc',
  darkred: '#8b0000',
  darksalmon: '#e9967a',
  darkseagreen: '#8fbc8f',
  darkslateblue: '#483d8b',
  darkslategray: '#2f4f4f',
  darkslategrey: '#2f4f4f',
  darkturquoise: '#00ced1',
  darkviolet: '#9400d3',
  deeppink: '#ff1493',
  deepskyblue: '#00bfff',
  dimgray: '#696969',
  dimgrey: '#696969',
  dodgerblue: '#1e90ff',
  firebrick: '#b22222',
  floralwhite: '#fffaf0',
  forestgreen: '#228b22',
  fuchsia: '#ff00ff',
  gainsboro: '#dcdcdc',
  ghostwhite: '#f8f8ff',
  gold: '#ffd700',
  goldenrod: '#daa520',
  gray: '#808080',
  green: '#008000',
  greenyellow: '#adff2f',
  grey: '#808080',
  honeydew: '#f0fff0',
  hotpink: '#ff69b4',
  indianred: '#cd5c5c',
  indigo: '#4b0082',
  ivory: '#fffff0',
  khaki: '#f0e68c',
  lavender: '#e6e6fa',
  lavenderblush: '#fff0f5',
  lawngreen: '#7cfc00',
  lemonchiffon: '#fffacd',
  lightblue: '#add8e6',
  lightcoral: '#f08080',
  lightcyan: '#e0ffff',
  lightgoldenrodyellow: '#fafad2',
  lightgray: '#d3d3d3',
  lightgreen: '#90ee90',
  lightgrey: '#d3d3d3',
  lightpink: '#ffb6c1',
  lightsalmon: '#ffa07a',
  lightseagreen: '#20b2aa',
  lightskyblue: '#87cefa',
  lightslategray: '#778899',
  lightslategrey: '#778899',
  lightsteelblue: '#b0c4de',
  lightyellow: '#ffffe0',
  lime: '#00ff00',
  limegreen: '#32cd32',
  linen: '#faf0e6',
  magenta: '#ff00ff',
  maroon: '#800000',
  mediumaquamarine: '#66cdaa',
  mediumblue: '#0000cd',
  mediumorchid: '#ba55d3',
  mediumpurple: '#9370db',
  mediumseagreen: '#3cb371',
  mediumslateblue: '#7b68ee',
  mediumspringgreen: '#00fa9a',
  mediumturquoise: '#48d1cc',
  mediumvioletred: '#c71585',
  midnightblue: '#191970',
  mintcream: '#f5fffa',
  mistyrose: '#ffe4e1',
  moccasin: '#ffe4b5',
  navajowhite: '#ffdead',
  navy: '#000080',
  oldlace: '#fdf5e6',
  olive: '#808000',
  olivedrab: '#6b8e23',
  orange: '#ffa500',
  orangered: '#ff4500',
  orchid: '#da70d6',
  palegoldenrod: '#eee8aa',
  palegreen: '#98fb98',
  paleturquoise: '#afeeee',
  palevioletred: '#db7093',
  papayawhip: '#ffefd5',
  peachpuff: '#ffdab9',
  peru: '#cd853f',
  pink: '#ffc0cb',
  plum: '#dda0dd',
  powderblue: '#b0e0e6',
  purple: '#800080',
  red: '#ff0000',
  rosybrown: '#bc8f8f',
  royalblue: '#4169e1',
  saddlebrown: '#8b4513',
  salmon: '#fa8072',
  sandybrown: '#f4a460',
  seagreen: '#2e8b57',
  seashell: '#fff5ee',
  sienna: '#a0522d',
  silver: '#c0c0c0',
  skyblue: '#87ceeb',
  slateblue: '#6a5acd',
  slategray: '#708090',
  slategrey: '#708090',
  snow: '#fffafa',
  springgreen: '#00ff7f',
  steelblue: '#4682b4',
  tan: '#d2b48c',
  teal: '#008080',
  thistle: '#d8bfd8',
  tomato: '#ff6347',
  turquoise: '#40e0d0',
  violet: '#ee82ee',
  wheat: '#f5deb3',
  white: '#ffffff',
  whitesmoke: '#f5f5f5',
  yellow: '#ffff00',
  yellowgreen: '#9acd32',
  transparent: '#00000000'
};
Color.nonStandarNamedColors = {
  night: '#0C090A',
  gunmetal: '#2C3539',
  midnight: '#2B1B17',
  charcoal: '#34282C',
  oil: '#3B3131',
  blackcat: '#413839',
  iridium: '#3D3C3A',
  blackeel: '#463E3F',
  blackcow: '#4C4646',
  graywolf: '#504A4B',
  vampiregray: '#565051',
  graydolphin: '#5C5858',
  carbongray: '#625D5D',
  ashgray: '#666362',
  cloudygray: '#6D6968',
  smokeygray: '#726E6D',
  granite: '#837E7C',
  battleshipgray: '#848482',
  graycloud: '#B6B6B4',
  graygoose: '#D1D0CE',
  platinum: '#E5E4E2',
  metallicsilver: '#BCC6CC',
  bluegray: '#98AFC7',
  raven: '#657383',
  jetgray: '#616D7E',
  mistblue: '#646D7E',
  marbleblue: '#566D7E',
  shipcove: '#737CA1',
  mariner: '#4863A0',
  bluejay: '#2B547E',
  biscay: '#2B3856',
  navyblue: '#000080',
  bluewhale: '#342D7E',
  lapisblue: '#15317E',
  denimdarkblue: '#151B8D',
  earthblue: '#0000A0',
  cobaltblue: '#0020C2',
  blueberryblue: '#0041C2',
  sapphireblue: '#2554C7',
  blueeyes: '#1569C7',
  blueorchid: '#1F45FC',
  bluelotus: '#6960EC',
  lightslateblue: '#736AFF',
  windowsblue: '#357EC7',
  glacialblueice: '#368BC1',
  silkblue: '#488AC7',
  blueivy: '#3090C7',
  bluekoi: '#659EC7',
  columbiablue: '#87AFC7',
  babyblue: '#95B9C7',
  oceanblue: '#2B65EC',
  blueribbon: '#306EFF',
  bluedress: '#157DEC',
  butterflyblue: '#38ACEC',
  iceberg: '#56A5EC',
  crystalblue: '#5CB3FF',
  denimblue: '#79BAEC',
  dayskyblue: '#82CAFF',
  jeansblue: '#A0CFEC',
  blueangel: '#B7CEEC',
  pastelblue: '#B4CFEC',
  seablue: '#C2DFFF',
  coralblue: '#AFDCEC',
  robineggblue: '#BDEDFF',
  palebluelily: '#CFECEC',
  water: '#EBF4FA',
  lightslate: '#CCFFFF',
  lightaquamarine: '#93FFE8',
  electricblue: '#9AFEFF',
  cyanoraqua: '#00FFFF',
  tronblue: '#7DFDFE',
  bluezircon: '#57FEFF',
  bluelagoon: '#8EEBEC',
  celeste: '#50EBEC',
  bluediamond: '#4EE2EC',
  tiffanyblue: '#81D8D0',
  cyanopaque: '#92C7C7',
  bluehosta: '#77BFC7',
  northernlightsblue: '#78C7C7',
  jellyfish: '#46C7C7',
  bluegreen: '#7BCCB5',
  macawbluegreen: '#43BFC7',
  seaturtlegreen: '#438D80',
  greenishblue: '#307D7E',
  grayishturquoise: '#5E7D7E',
  beetlegreen: '#4C787E',
  camouflagegreen: '#78866B',
  sagegreen: '#848b79',
  hazelgreen: '#617C58',
  venomgreen: '#728C00',
  ferngreen: '#667C26',
  darkforestgreen: '#254117',
  mediumforestgreen: '#347235',
  seaweedgreen: '#437C17',
  pinegreen: '#387C44',
  junglegreen: '#347C2C',
  shamrockgreen: '#347C17',
  greenonion: '#6AA121',
  clovergreen: '#3EA055',
  greensnake: '#6CBB3C',
  aliengreen: '#6CC417',
  greenapple: '#4CC417',
  kellygreen: '#4CC552',
  zombiegreen: '#54C571',
  froggreen: '#99C68E',
  greenpeas: '#89C35C',
  dollarbillgreen: '#85BB65',
  iguanagreen: '#9CB071',
  avocadogreen: '#B2C248',
  pistachiogreen: '#9DC209',
  saladgreen: '#A1C935',
  hummingbirdgreen: '#7FE817',
  nebulagreen: '#59E817',
  stoplightgogreen: '#57E964',
  algaegreen: '#64E986',
  jadegreen: '#5EFB6E',
  emeraldgreen: '#5FFB17',
  dragongreen: '#6AFB92',
  mintgreen: '#98FF98',
  greenthumb: '#B5EAAA',
  lightjade: '#C3FDB8',
  teagreen: '#CCFB5D',
  slimegreen: '#BCE954',
  harvestgold: '#EDE275',
  sunyellow: '#FFE87C',
  cornyellow: '#FFF380',
  parchment: '#FFFFC2',
  cream: '#FFFFCC',
  blonde: '#FBF6D9',
  champagne: '#F7E7CE',
  vanilla: '#F3E5AB',
  tanbrown: '#ECE5B6',
  peach: '#FFE5B4',
  mustard: '#FFDB58',
  rubberduckyyellow: '#FFD801',
  brightgold: '#FDD017',
  goldenbrown: '#EAC117',
  macaroniandcheese: '#F2BB66',
  saffron: '#FBB917',
  beer: '#FBB117',
  cantaloupe: '#FFA62F',
  beeyellow: '#E9AB17',
  brownsugar: '#E2A76F',
  deeppeach: '#FFCBA4',
  gingerbrown: '#C9BE62',
  schoolbusyellow: '#E8A317',
  fallleafbrown: '#C8B560',
  orangegold: '#D4A017',
  sand: '#C2B280',
  cookiebrown: '#C7A317',
  caramel: '#C68E17',
  brass: '#B5A642',
  camelbrown: '#C19A6B',
  bronze: '#CD7F32',
  tigerorange: '#C88141',
  cinnamon: '#C58917',
  bulletshell: '#AF9B60',
  copper: '#B87333',
  wood: '#966F33',
  oakbrown: '#806517',
  armybrown: '#827B60',
  sandstone: '#786D5F',
  mocha: '#493D26',
  taupe: '#483C32',
  coffee: '#6F4E37',
  brownbear: '#835C3B',
  reddirt: '#7F5217',
  sepia: '#7F462C',
  orangesalmon: '#C47451',
  rust: '#C36241',
  redfox: '#C35817',
  sedona: '#CC6600',
  papayaorange: '#E56717',
  halloweenorange: '#E66C2C',
  pumpkinorange: '#F87217',
  constructionconeorange: '#F87431',
  sunriseorange: '#E67451',
  mangoorange: '#FF8040',
  basketballorange: '#F88158',
  tangerine: '#E78A61',
  beanred: '#F75D59',
  valentinered: '#E55451',
  shockingorange: '#E55B3C',
  scarlet: '#FF2400',
  rubyred: '#F62217',
  ferrarired: '#F70D1A',
  fireenginered: '#F62817',
  lavared: '#E42217',
  lovered: '#E41B17',
  grapefruit: '#DC381F',
  chestnutred: '#C34A2C',
  cherryred: '#C24641',
  mahogany: '#C04000',
  chillipepper: '#C11B17',
  cranberry: '#9F000F',
  redwine: '#990012',
  burgundy: '#8C001A',
  chestnut: '#954535',
  bloodred: '#7E3517',
  sangria: '#7E3817',
  plumpie: '#7D0541',
  velvetmaroon: '#7E354D',
  plumvelvet: '#7D0552',
  rosyfinch: '#7F4E52',
  puce: '#7F5A58',
  dullpurple: '#7F525D',
  khakirose: '#C5908E',
  pinkbow: '#C48189',
  lipstickpink: '#C48793',
  rose: '#E8ADAA',
  rosegold: '#ECC5C0',
  desertsand: '#EDC9AF',
  pigpink: '#FDD7E4',
  cottoncandy: '#FCDFFF',
  pinkbubblegum: '#FFDFDD',
  flamingopink: '#F9A7B0',
  pinkrose: '#E7A1B0',
  pinkdaisy: '#E799A3',
  cadillacpink: '#E38AAE',
  carnationpink: '#F778A1',
  blushred: '#E56E94',
  watermelonpink: '#FC6C85',
  violetred: '#F6358A',
  pinkcupcake: '#E45E9D',
  pinklemonade: '#E4287C',
  neonpink: '#F535AA',
  dimorphothecamagenta: '#E3319D',
  brightneonpink: '#F433FF',
  tulippink: '#C25A7C',
  roguepink: '#C12869',
  burntpink: '#C12267',
  bashfulpink: '#C25283',
  darkcarnationpink: '#C12283',
  violapurple: '#7E587E',
  purpleiris: '#571B7E',
  plumpurple: '#583759',
  purplemonster: '#461B7E',
  purplehaze: '#4E387E',
  eggplant: '#614051',
  grape: '#5E5A80',
  purplejam: '#6A287E',
  purpleflower: '#A74AC7',
  purpleamethyst: '#6C2DC7',
  purplesagebush: '#7A5DC7',
  lovelypurple: '#7F38EC',
  aztechpurple: '#893BFF',
  jasminepurple: '#A23BEC',
  purpledaffodil: '#B041FF',
  tyrianpurple: '#C45AEC',
  crocuspurple: '#9172EC',
  purplemimosa: '#9E7BFF',
  heliotropepurple: '#D462FF',
  purpledragon: '#C38EC7',
  lilac: '#C8A2C8',
  blushpink: '#E6A9EC',
  mauve: '#E0B0FF',
  wisteriapurple: '#C6AEC7',
  blossompink: '#F9B7FF',
  periwinkle: '#E9CFEC',
  lavenderpinocchio: '#EBDDE2',
  lavenderblue: '#E3E4FA',
  pearl: '#FDEEF4',
  milkwhite: '#FEFCFF'
};
/********************** COLOR CONVERTER *******************/

Color.rgbToHex = function (rgb) {
  return '#' + rgb.slice(0, 3).map(function (c) {
    var res = (c * 255 >> 0).toString(16);
    if (res < 10) res = '0' + res;
    return res.toUpperCase();
  }).join('');
};

Color.rgbaToHex = function (rgb) {
  return '#' + rgb.map(function (c) {
    var res = (c * 255 >> 0).toString(16);
    if (res < 10) res = '0' + res;
    return res.toUpperCase();
  }).join('');
};

Color.hsbaToText = function (hsba) {
  return 'hsba(' + (hsba[0] * 360 >> 0) + 'deg, ' + (hsba[1] * 100 >> 0) + '%, ' + (hsba[2] * 100 >> 0) + '%, ' + hsba[3].toFixed(3) + ')';
};

Color.hslaToText = function (hsla) {
  return 'hsla(' + (hsla[0] * 360 >> 0) + 'deg, ' + (hsla[1] * 100 >> 0) + '%, ' + (hsla[2] * 100 >> 0) + '%, ' + hsla[3].toFixed(3) + ')';
};

Color.rgbaToText = function (rgba) {
  return 'rgba(' + (rgba[0] * 255 >> 0) + ', ' + (rgba[1] * 255 >> 0) + ', ' + (rgba[2] * 255 >> 0) + ', ' + rgba[3].toFixed(3) + ')';
};

Color.hsbToText = function (hsba) {
  return 'hsb(' + (hsba[0] * 360 >> 0) + 'deg, ' + (hsba[1] * 100 >> 0) + '%, ' + (hsba[2] * 100 >> 0) + '%)';
};

Color.hslToText = function (hsl) {
  return 'hsl(' + (hsl[0] * 360 >> 0) + 'deg, ' + (hsl[1] * 100 >> 0) + '%, ' + (hsl[2] * 100 >> 0) + '%)';
};

Color.rgbToText = function (rgba) {
  return 'rgb(' + (rgba[0] * 255 >> 0) + ', ' + (rgba[1] * 255 >> 0) + ', ' + (rgba[2] * 255 >> 0) + ')';
};

Color.hsbaToHSLA = function (hsba) {
  var hue = hsba[0];
  var sat = hsba[1];
  var val = hsba[2]; // Calculate lightness.

  var li = (2 - sat) * val / 2; // Convert saturation.

  if (li !== 0) {
    if (li === 1) {
      sat = 0;
    } else if (li < 0.5) {
      sat = sat / (2 - sat);
    } else {
      sat = sat * val / (2 - li * 2);
    }
  } // Hue and alpha stay the same.


  return [hue, sat, li, hsba[3]];
};

Color.hsbaToRGBA = function (hsba) {
  var hue = hsba[0] * 6; // We will split hue into 6 sectors.

  var sat = hsba[1];
  var val = hsba[2];
  var RGBA = [];

  if (sat === 0) {
    RGBA = [val, val, val, hsba[3]]; // Return early if grayscale.
  } else {
    var sector = Math.floor(hue);
    var tint1 = val * (1 - sat);
    var tint2 = val * (1 - sat * (hue - sector));
    var tint3 = val * (1 - sat * (1 + sector - hue));
    var red, green, blue;

    if (sector === 1) {
      // Yellow to green.
      red = tint2;
      green = val;
      blue = tint1;
    } else if (sector === 2) {
      // Green to cyan.
      red = tint1;
      green = val;
      blue = tint3;
    } else if (sector === 3) {
      // Cyan to blue.
      red = tint1;
      green = tint2;
      blue = val;
    } else if (sector === 4) {
      // Blue to magenta.
      red = tint3;
      green = tint1;
      blue = val;
    } else if (sector === 5) {
      // Magenta to red.
      red = val;
      green = tint1;
      blue = tint2;
    } else {
      // Red to yellow (sector could be 0 or 6).
      red = val;
      green = tint3;
      blue = tint1;
    }

    RGBA = [red, green, blue, hsba[3]];
  }

  return RGBA;
};

Color.hslaToHSBA = function (hsla) {
  var hue = hsla[0];
  var sat = hsla[1];
  var li = hsla[2]; // Calculate brightness.

  var val;

  if (li < 0.5) {
    val = (1 + sat) * li;
  } else {
    val = li + sat - li * sat;
  } // Convert saturation.


  sat = 2 * (val - li) / val; // Hue and alpha stay the same.

  return [hue, sat, val, hsla[3]];
};

Color.hslaToRGBA = function (hsla) {
  var hue = hsla[0] * 6; // We will split hue into 6 sectors.

  var sat = hsla[1];
  var li = hsla[2];
  var RGBA = [];

  if (sat === 0) {
    RGBA = [li, li, li, hsla[3]]; // Return early if grayscale.
  } else {
    // Calculate brightness.
    var val;

    if (li < 0.5) {
      val = (1 + sat) * li;
    } else {
      val = li + sat - li * sat;
    } // Define zest.


    var zest = 2 * li - val; // Implement projection (project onto green by default).

    var hzvToRGB = function hzvToRGB(hue, zest, val) {
      if (hue < 0) {
        // Hue must wrap to allow projection onto red and blue.
        hue += 6;
      } else if (hue >= 6) {
        hue -= 6;
      }

      if (hue < 1) {
        // Red to yellow (increasing green).
        return zest + (val - zest) * hue;
      } else if (hue < 3) {
        // Yellow to cyan (greatest green).
        return val;
      } else if (hue < 4) {
        // Cyan to blue (decreasing green).
        return zest + (val - zest) * (4 - hue);
      } else {
        // Blue to red (least green).
        return zest;
      }
    }; // Perform projections, offsetting hue as necessary.


    RGBA = [hzvToRGB(hue + 2, zest, val), hzvToRGB(hue, zest, val), hzvToRGB(hue - 2, zest, val), hsla[3]];
  }

  return RGBA;
};

Color.rgbaToHSBA = function (rgba) {
  var red = rgba[0];
  var green = rgba[1];
  var blue = rgba[2];
  var val = Math.max(red, green, blue);
  var chroma = val - Math.min(red, green, blue);
  var hue, sat;

  if (chroma === 0) {
    // Return early if grayscale.
    hue = 0;
    sat = 0;
  } else {
    sat = chroma / val;

    if (red === val) {
      // Magenta to yellow.
      hue = (green - blue) / chroma;
    } else if (green === val) {
      // Yellow to cyan.
      hue = 2 + (blue - red) / chroma;
    } else if (blue === val) {
      // Cyan to magenta.
      hue = 4 + (red - green) / chroma;
    }

    if (hue < 0) {
      // Confine hue to the interval [0, 1).
      hue += 6;
    } else if (hue >= 6) {
      hue -= 6;
    }
  }

  return [hue / 6, sat, val, rgba[3]];
};

Color.rgbaToHSLA = function (rgba) {
  var red = rgba[0];
  var green = rgba[1];
  var blue = rgba[2];
  var val = Math.max(red, green, blue);
  var min = Math.min(red, green, blue);
  var li = val + min; // We will halve this later.

  var chroma = val - min;
  var hue, sat;

  if (chroma === 0) {
    // Return early if grayscale.
    hue = 0;
    sat = 0;
  } else {
    if (li < 1) {
      sat = chroma / li;
    } else {
      sat = chroma / (2 - li);
    }

    if (red === val) {
      // Magenta to yellow.
      hue = (green - blue) / chroma;
    } else if (green === val) {
      // Yellow to cyan.
      hue = 2 + (blue - red) / chroma;
    } else if (blue === val) {
      // Cyan to magenta.
      hue = 4 + (red - green) / chroma;
    }

    if (hue < 0) {
      // Confine hue to the interval [0, 1).
      hue += 6;
    } else if (hue >= 6) {
      hue -= 6;
    }
  }

  return [hue / 6, sat, li / 2, rgba[3]];
};

Color.hwbaToHSBA = function (hwba) {
  return [hwba[0], 1 - hwba[1] / (1 - hwba[2]), 1 - hwba[2], hwba[3]];
};

Color.hsbaToHWBA = function (hsla) {
  return [hsla[0], (1 - hsla[1]) * hsla[2], 1 - hsla[2], hsla[3]];
};

Color.rgbaToHWBA = function (rgba) {
  return this.hsbaToHWBA(this.rgbaToHSBA(rgba));
};

Color.hwbaToRGBA = function (hwba) {
  return this.hsbaToRGBA(this.hwbaToHSBA(hwba));
};

var _default = Color;
exports["default"] = _default;

/***/ }),

/***/ 9638:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.calcBenchmark = calcBenchmark;
exports["default"] = void 0;

var _BrowserRules = _interopRequireDefault(__webpack_require__(885));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/**
 *
 * @param {BrowserRules} rulesheet
 */
function BrowserDetector(rulesheet) {
  this.au = __webpack_require__.g.navigator ? navigator.userAgent || '' : '';
  this.rulesheet = rulesheet;
  this.os = this.detectByRules(this.rulesheet.os);
  this.device = this.detectByRules(this.rulesheet.device);
  this.engine = this.detectByRules(this.rulesheet.engine);
  this.browser = this.detectByRules(this.rulesheet.browser);
  this.isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
  this.isCococ = navigator.userAgent.toLowerCase().indexOf('coc_coc_browser') >= 1;
  this.isSafari = !this.isCococ && navigator.userAgent.toLowerCase().indexOf('safari') > -1 && navigator.userAgent.toLowerCase().indexOf('win') < 0 && navigator.userAgent.toLowerCase().indexOf('android') < 0; // this.isSafari = /constructor/i.test(window.HTMLElement) || window.safari;

  this.isMobile = navigator.userAgent.indexOf('KFFOWI') > -1 || navigator.userAgent.toLowerCase().indexOf('mobile') > -1;
  this.isMacOSWebView = /Macintosh/.test(this.au) && /AppWebkit/.test(this.au) && !/Safari/.test(this.au);
  this.isChromeIOS = /CriOS\/[\d]+/.test(this.au);
  this.hasTouch = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch || navigator.maxTouchPoints > 0 || window.navigator.msMaxTouchPoints > 0;
  this.isTouchDevice = this.isMobile && this.hasTouch;

  this.supportPassiveEvent = function () {
    var supportsPassiveOption = false;

    try {
      var opts = Object.defineProperty({}, 'passive', {
        get: function get() {
          supportsPassiveOption = true;
        }
      });
      window.addEventListener('test', null, opts);
      window.removeEventListener('test', null, opts);
    } catch (e) {}

    return supportsPassiveOption;
  }();
}

BrowserDetector.prototype.detectByRules = function (rules) {
  var result = {};

  for (var i = 0; i < rules.length; ++i) {
    var rule = rules[i];
    var type = rule[0];
    var rgx = rule[1];

    if (typeof rgx == 'function') {
      rgx = rgx(this.au.toLowerCase());
    }

    if (Object.prototype.toString.call(rgx).indexOf('RegExp') >= 0) {
      var matched = this.au.toLowerCase().match(rgx);

      if (matched) {
        result.type = type;

        if (matched[1]) {
          result.version = matched[1];
        }

        break;
      }
    } else if (typeof rgx == 'string') {
      if (this.au.toLowerCase().indexOf(rgx) >= 0) {
        result.type = type;
      }
    }
  }

  return result;
};

function calcBenchmark() {
  var now = new Date().getTime();
  var i = 0;

  while (now === new Date().getTime()) {}

  now++;

  while (now === new Date().getTime()) {
    ++i;
  }

  return i;
}

BrowserDetector.prototype.calcBenchmark = calcBenchmark;

var _default = new BrowserDetector(_BrowserRules["default"]);

exports["default"] = _default;

/***/ }),

/***/ 885:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {



var external = __webpack_require__.g.external;
var re_msie = /\b(?:msie |ie |trident\/[0-9].*rv[ :])([0-9.]+)/;
var re_blackberry_10 = /\bbb10\b.+?\bversion\/([\d.]+)/;
var re_blackberry_6_7 = /\bblackberry\b.+\bversion\/([\d.]+)/;
var re_blackberry_4_5 = /\bblackberry\d+\/([\d.]+)/;
var NA_VERSION = "-1";
var DEVICES = [["nokia", function (ua) {
  //  nokia/-1
  if (ua.indexOf("nokia ") !== -1) {
    return /\bnokia ([0-9]+)?/;
  } else {
    return /\bnokia([a-z0-9]+)?/;
  }
}], //Android WP
["samsung", function (ua) {
  if (ua.indexOf("samsung") !== -1) {
    return /\bsamsung(?:[ \-](?:sgh|gt|sm))?-([a-z0-9]+)/;
  } else {
    return /\b(?:sgh|sch|gt|sm)-([a-z0-9]+)/;
  }
}], ["wp", function (ua) {
  return ua.indexOf("windows phone ") !== -1 || ua.indexOf("xblwp") !== -1 || ua.indexOf("zunewp") !== -1 || ua.indexOf("windows ce") !== -1;
}], ["pc", "windows"], ["ipad", "ipad"], // ipod iphone
["ipod", "ipod"], ["iphone", /\biphone\b|\biph(\d)/], ["mac", "macintosh"], ["mi", /\bmi[ \-]?([a-z0-9 ]+(?= build|\)))/], ["hongmi", /\bhm[ \-]?([a-z0-9]+)/], ["aliyun", /\baliyunos\b(?:[\-](\d+))?/], ["meizu", function (ua) {
  return ua.indexOf("meizu") >= 0 ? /\bmeizu[\/ ]([a-z0-9]+)\b/ : /\bm([0-9cx]{1,4})\b/;
}], ["nexus", /\bnexus ([0-9s.]+)/], ["huawei", function (ua) {
  var re_mediapad = /\bmediapad (.+?)(?= build\/huaweimediapad\b)/;

  if (ua.indexOf("huawei-huawei") !== -1) {
    return /\bhuawei\-huawei\-([a-z0-9\-]+)/;
  } else if (re_mediapad.test(ua)) {
    return re_mediapad;
  } else {
    return /\bhuawei[ _\-]?([a-z0-9]+)/;
  }
}], ["lenovo", function (ua) {
  if (ua.indexOf("lenovo-lenovo") !== -1) {
    return /\blenovo\-lenovo[ \-]([a-z0-9]+)/;
  } else {
    return /\blenovo[ \-]?([a-z0-9]+)/;
  }
}], ["zte", function (ua) {
  if (/\bzte\-[tu]/.test(ua)) {
    return /\bzte-[tu][ _\-]?([a-su-z0-9\+]+)/;
  } else {
    return /\bzte[ _\-]?([a-su-z0-9\+]+)/;
  }
}], ["vivo", /\bvivo(?: ([a-z0-9]+))?/], ["htc", function (ua) {
  if (/\bhtc[a-z0-9 _\-]+(?= build\b)/.test(ua)) {
    return /\bhtc[ _\-]?([a-z0-9 ]+(?= build))/;
  } else {
    return /\bhtc[ _\-]?([a-z0-9 ]+)/;
  }
}], ["oppo", /\boppo[_ ]([a-z0-9]+)/], ["konka", /\bkonka[_\-]([a-z0-9]+)/], ["sonyericsson", /\bmt([a-z0-9]+)/], ["coolpad", /\bcoolpad[_ ]?([a-z0-9]+)/], ["lg", /\blg[\-]([a-z0-9]+)/], ["android", /\bandroid\b|\badr\b/], ["blackberry", function (ua) {
  if (ua.indexOf("blackberry") >= 0) {
    return /\bblackberry\s?(\d+)/;
  }

  return "bb10";
}]];
var OS = [["wp", function (ua) {
  if (ua.indexOf("windows phone ") !== -1) {
    return /\bwindows phone (?:os )?([0-9.]+)/;
  } else if (ua.indexOf("xblwp") !== -1) {
    return /\bxblwp([0-9.]+)/;
  } else if (ua.indexOf("zunewp") !== -1) {
    return /\bzunewp([0-9.]+)/;
  }

  return "windows phone";
}], ["windows", /\bwindows nt ([0-9.]+)/], ["macosx", /\bmac os x ([0-9._]+)/], ["ios", function (ua) {
  if (/\bcpu(?: iphone)? os /.test(ua)) {
    return /\bcpu(?: iphone)? os ([0-9._]+)/;
  } else if (ua.indexOf("iph os ") !== -1) {
    return /\biph os ([0-9_]+)/;
  } else {
    return /\bios\b/;
  }
}], ["yunos", /\baliyunos ([0-9.]+)/], ["android", function (ua) {
  if (ua.indexOf("android") >= 0) {
    return /\bandroid[ \/-]?([0-9.x]+)?/;
  } else if (ua.indexOf("adr") >= 0) {
    if (ua.indexOf("mqqbrowser") >= 0) {
      return /\badr[ ]\(linux; u; ([0-9.]+)?/;
    } else {
      return /\badr(?:[ ]([0-9.]+))?/;
    }
  }

  return "android"; //return /\b(?:android|\badr)(?:[\/\- ](?:\(linux; u; )?)?([0-9.x]+)?/;
}], ["chromeos", /\bcros i686 ([0-9.]+)/], ["linux", "linux"], ["windowsce", /\bwindows ce(?: ([0-9.]+))?/], ["symbian", /\bsymbian(?:os)?\/([0-9.]+)/], ["blackberry", function (ua) {
  var m = ua.match(re_blackberry_10) || ua.match(re_blackberry_6_7) || ua.match(re_blackberry_4_5);
  return m ? {
    version: m[1]
  } : "blackberry";
}], ['ie', /\rv\:\/([0-9.]+)/]];
var ENGINE = [["edgehtml", /edge\/([0-9.]+)/], ["trident", re_msie], ["blink", function () {
  return "chrome" in __webpack_require__.g && "CSS" in __webpack_require__.g && /\bapplewebkit[\/]?([0-9.+]+)/;
}], ["webkit", /\bapplewebkit[\/]?([0-9.+]+)/], ["gecko", function (ua) {
  var match = ua.match(/\brv:([\d\w.]+).*\bgecko\/(\d+)/);

  if (match) {
    return {
      version: match[1] + "." + match[2]
    };
  }
}], ["presto", /\bpresto\/([0-9.]+)/], ["androidwebkit", /\bandroidwebkit\/([0-9.]+)/], ["coolpadwebkit", /\bcoolpadwebkit\/([0-9.]+)/], ["u2", /\bu2\/([0-9.]+)/], ["u3", /\bu3\/([0-9.]+)/]];
var BROWSER = [['coccoc', /coc_coc_browser\/([0-9.]+)/], // Microsoft Edge Browser, Default browser in Windows 10.
["edge", /edge\/([0-9.]+)/], ["chrome-edge", /chrome.+edg\/([0-9.]+)/], // Sogou.
["sogou", function (ua) {
  if (ua.indexOf("sogoumobilebrowser") >= 0) {
    return /sogoumobilebrowser\/([0-9.]+)/;
  } else if (ua.indexOf("sogoumse") >= 0) {
    return true;
  }

  return / se ([0-9.x]+)/;
}], // Maxthon
["maxthon", function () {
  try {
    if (external && (external.mxVersion || external.max_version)) {
      return {
        version: external.mxVersion || external.max_version
      };
    }
  } catch (ex) {
    /* */
  }

  return /\b(?:maxthon|mxbrowser)(?:[ \/]([0-9.]+))?/;
}], ["micromessenger", /\bmicromessenger\/([\d.]+)/], ["qq", /\bm?qqbrowser\/([0-9.]+)/], ["green", "greenbrowser"], ["tt", /\btencenttraveler ([0-9.]+)/], ["liebao", function (ua) {
  if (ua.indexOf("liebaofast") >= 0) {
    return /\bliebaofast\/([0-9.]+)/;
  }

  if (ua.indexOf("lbbrowser") === -1) {
    return false;
  }

  var version;

  try {
    if (external && external.LiebaoGetVersion) {
      version = external.LiebaoGetVersion();
    }
  } catch (ex) {
    /* */
  }

  return {
    version: version || NA_VERSION
  };
}], ["tao", /\btaobrowser\/([0-9.]+)/], ["coolnovo", /\bcoolnovo\/([0-9.]+)/], ["saayaa", "saayaa"], ["baidu", /\b(?:ba?idubrowser|baiduhd)[ \/]([0-9.x]+)/], ["ie", re_msie], ["mi", /\bmiuibrowser\/([0-9.]+)/], ["opera", function (ua) {
  var re_opera_old = /\bopera.+version\/([0-9.ab]+)/;
  var re_opera_new = /\bopr\/([0-9.]+)/;
  return re_opera_old.test(ua) ? re_opera_old : re_opera_new;
}], ["oupeng", /\boupeng\/([0-9.]+)/], ["yandex", /yabrowser\/([0-9.]+)/], ["ali-ap", function (ua) {
  if (ua.indexOf("aliapp") > 0) {
    return /\baliapp\(ap\/([0-9.]+)\)/;
  } else {
    return /\balipayclient\/([0-9.]+)\b/;
  }
}], ["ali-ap-pd", /\baliapp\(ap-pd\/([0-9.]+)\)/], ["ali-am", /\baliapp\(am\/([0-9.]+)\)/], ["ali-tb", /\baliapp\(tb\/([0-9.]+)\)/], ["ali-tb-pd", /\baliapp\(tb-pd\/([0-9.]+)\)/], ["ali-tm", /\baliapp\(tm\/([0-9.]+)\)/], ["ali-tm-pd", /\baliapp\(tm-pd\/([0-9.]+)\)/], ["uc", function (ua) {
  if (ua.indexOf("ucbrowser/") >= 0) {
    return /\bucbrowser\/([0-9.]+)/;
  } else if (ua.indexOf("ubrowser/") >= 0) {
    return /\bubrowser\/([0-9.]+)/;
  } else if (/\buc\/[0-9]/.test(ua)) {
    return /\buc\/([0-9.]+)/;
  } else if (ua.indexOf("ucweb") >= 0) {
    // `ucweb/2.0` is compony info.
    // `UCWEB8.7.2.214/145/800` is browser info.
    return /\bucweb([0-9.]+)?/;
  } else {
    return /\b(?:ucbrowser|uc)\b/;
  }
}], ["baiduboxapp", function (ua) {
  var back = 0;
  var a;

  if (/ baiduboxapp\//i.test(ua)) {
    a = /([\d+.]+)_(?:diordna|enohpi)_/.exec(ua);

    if (a) {
      a = a[1].split(".");
      back = a.reverse().join(".");
    } else if (a = /baiduboxapp\/([\d+.]+)/.exec(ua)) {
      back = a[1];
    }

    return {
      version: back
    };
  }

  return false;
}], ["oppobrowser", /\boppobrowser\/([0-9.]+)/], ["edge-android", / (?:edga)\/([0-9.]+)/], ["chrome", / (?:chrome|crios|crmo)\/([0-9.]+)/], // Android safari 
["android", function (ua) {
  if (ua.indexOf("android") === -1) {
    return;
  }

  return /\bversion\/([0-9.]+(?: beta)?)/;
}], ["blackberry", function (ua) {
  var m = ua.match(re_blackberry_10) || ua.match(re_blackberry_6_7) || ua.match(re_blackberry_4_5);
  return m ? {
    version: m[1]
  } : "blackberry";
}], ["safari", /\bversion\/([0-9.]+(?: beta)?)(?: mobile(?:\/[a-z0-9]+)?)? safari\//], //  Safari, WebView
["webview", /\bcpu(?: iphone)? os (?:[0-9._]+).+\bapplewebkit\b/], ["firefox", /\bfirefox\/([0-9.ab]+)/], ["nokia", /\bnokiabrowser\/([0-9.]+)/]];
module.exports = {
  device: DEVICES,
  os: OS,
  browser: BROWSER,
  engine: ENGINE,
  re_msie: re_msie
};

/***/ }),

/***/ 3445:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _EventEmitter = _interopRequireDefault(__webpack_require__(6833));

var _BrowserDetector = _interopRequireDefault(__webpack_require__(9638));

var _OOP = _interopRequireDefault(__webpack_require__(8608));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/***
 * @augments Node
 * @augments ChildNode
 * @augments ParentNode
 * @augments Element
 * @augments HTMLElement
 * @augments EventEmitter
 * @augments ElementCSSInlineStyle
 * @constructor
 */
function AElement() {
  _EventEmitter["default"].call(this);

  this._azar_extendAttributes = this._azar_extendAttributes || {};
  this._azar_extendTags = {};
  this.eventHandler = {};
}

_OOP["default"].mixClass(AElement, _EventEmitter["default"]);

AElement.prototype.init = function (props) {
  Object.assign(this, props || {});
};

AElement.prototype.eventHandler = {};
/***
 * run super-class method
 */

AElement.prototype["super"] = function () {
  /* nope */
};
/**
 * @typedef {Object} AttributeDefiner
 * @property {Function} set
 * @property {Function} get
 * @property {Function} remove
 *
 * @param {String} key
 * @param {AttributeDefiner} def
 */


AElement.prototype.defineAttribute = function (key, def) {
  this._azar_extendAttributes[key] = def;
};

AElement.prototype.defineAttributes = function (defs) {
  for (var key in defs) {
    this.defineAttribute(key, defs[key]);
  }
};

AElement.prototype.attr = function () {
  if (arguments.length === 1) {
    if (typeof arguments[0] == 'string') {
      if (this._azar_extendAttributes[arguments[0]]) {
        return this._azar_extendAttributes[arguments[0]].get.call(this);
      } else return this.getAttribute(arguments[0]);
    } else {
      for (var key in arguments[0]) {
        this.attr(key, arguments[0][key]);
      }
    }
  } else {
    if (arguments.length == 2) {
      if (arguments[1] === null || arguments[1] === undefined) {
        if (this._azar_extendAttributes[arguments[0]]) {
          this._azar_extendAttributes[arguments[0]].remove.call(this, arguments[1]);
        } else this.removeAttribute(arguments[0]);
      } else {
        if (this._azar_extendAttributes[arguments[0]]) {
          this._azar_extendAttributes[arguments[0]].set.call(this, arguments[1]);
        } else {
          this.setAttribute(arguments[0], arguments[1]);
        }
      }
    }
  }

  return this;
};
/***
 * add style
 * @param {CSSStyleDeclaration|string|{}} arg0
 * @param {string} arg1
 * @returns {AElement}
 */

/**
 * add style
 * @param {CSSStyleDeclaration|string|{}} arg0
 * @param {string|[]=} arg1
 * @returns {AElement}
 */


AElement.prototype.addStyle = function (arg0, arg1) {
  if (typeof arg0 == 'string') {
    if (arg0.indexOf('-') >= 0) {
      if (arg1 && arg1.forEach) {
        this.style.setProperty.apply(this.style, [arg0].concat(arg1));
      } else {
        this.style.setProperty(arg0, arg1);
      }
    } else {
      this.style[arg0] = arg1;
    }
  } else {
    for (var key in arg0) {
      this.addStyle(key, arg0[key]);
    }
  }
  return this;
};
/***
 *
 * @param {string|string[]|CSSStyleDeclaration} arg0
 * @returns {AElement}
 */


AElement.prototype.removeStyle = function (arg0) {
  var key;

  if (arg0.charAt) {
    if (arg0.indexOf('-') >= 0) {
      this.style.removeProperty(arg0);
    } else {
      this.style[arg0] = null;
      delete this.style[arg0];
    }
  } else {
    if (arg0.map && arg0.forEach) {
      for (var i = 0; i < arg0.length; ++i) {
        this.removeStyle(arg0[i]);
      }
    } else {
      for (key in arg0) {
        this.removeStyle(key);
      }
    }
  }

  return this;
};

AElement.prototype.addChild = function (child) {
  if (child.indexOf && child.map && child.forEach) {
    for (var i = 0; i < child.length; ++i) {
      this.appendChild(child[i]);
    }
  } else this.appendChild(child);

  return this;
};

AElement.prototype.addTo = function (parent) {
  if (parent && parent.appendChild) {
    if (parent.addChild) parent.addChild(this);else parent.appendChild(this);
  } else throw Error("Can not append to " + parent + "!");

  return this;
};

AElement.prototype.selfRemove = function () {
  if (this.parentElement) this.parentElement.removeChild(this);
  return this;
};

AElement.prototype.selfReplace = function (newNode) {
  if (this.parentElement) this.parentElement.replaceChild(newNode, this);
  return this;
};

AElement.prototype.clearChild = function () {
  while (this.firstChild) {
    this.removeChild(this.firstChild);
  }

  return this;
};
/**
 *
 * @param {string|Array} className
 * @returns {Boolean}
 */


AElement.prototype.hasClass = function (className) {
  return this.classList.contains(className);
};
/**
 *
 * @param {string|Array} className
 * @returns {AElement}
 */


AElement.prototype.addClass = function (className) {
  if (className && className.forEach && className.map) {
    for (var i = 0; i < className.length; ++i) {
      this.classList.add(className[i]);
    }
  } else this.classList.add(className);

  return this;
};
/**
 *
 * @param {string|Array} className
 * @returns {AElement}
 */


AElement.prototype.removeClass = function (className) {
  if (className && className.forEach && className.map) {
    for (var i = 0; i < className.length; ++i) {
      this.classList.remove(className[i]);
    }
  } else this.classList.remove(className);

  return this;
};

AElement.prototype.getComputedStyleValue = function (key) {
  return window.getComputedStyle(this).getPropertyValue(key);
};

AElement.prototype.getFontSize = function () {
  return parseFloat(this.getComputedStyleValue('font-size').replace('px', ''));
};

AElement.prototype.findChildAfter = function (obj) {
  var r = 0;

  for (var i = 0; i < this.childNodes.length; ++i) {
    if (obj == this.childNodes[i]) {
      r = i + 1;
      break;
    }
  }

  if (this.childNodes[r]) return this.childNodes[r];
  return undefined;
};

AElement.prototype.findChildBefore = function (obj) {
  var r = 0;

  for (var i = 0; i < this.childNodes.length; ++i) {
    if (obj == this.childNodes[i]) {
      r = i - 1;
      break;
    }
  }

  if (this.childNodes[r]) return this.childNodes[r];
  return undefined;
};

AElement.prototype.addChildBefore = function (newItem, bf) {
  this.insertBefore(newItem, bf);
  return this;
};

AElement.prototype.addChildAfter = function (newItem, at) {
  var atIdx;

  if (at) {
    atIdx = Array.prototype.indexOf.call(this.childNodes, at);

    if (atIdx >= 0) {
      this.insertBefore(newItem, this.childNodes[atIdx + 1]);
    } else {
      throw new Error("Failed to execute 'addChildAfter' on 'Node': The node before which the new node is to be inserted is not a child of this node.");
    }
  } else {
    this.insertBefore(newItem, this.firstChild);
  }

  return this;
};
/**
 * @returns {DOMRect}
 */


AElement.prototype.getBoundingRecursiveRect = function (depth) {
  if (depth === undefined) depth = 10000;
  var current, next;
  var oo = 1000000;
  var ac = {
    left: oo,
    right: -oo,
    top: oo,
    bottom: -oo,
    width: 0,
    height: 0
  };
  var stacks = [{
    e: this,
    d: 0
  }];

  while (stacks.length > 0) {
    current = stacks.pop();

    if (current.e.getBoundingClientRect) {
      var cRect = current.e.getBoundingClientRect();
      if (!cRect || !(cRect.width || cRect.height || cRect.left || cRect.right)) continue;
      ac.left = Math.min(ac.left, cRect.left);
      ac.top = Math.min(ac.top, cRect.top);
      ac.bottom = Math.max(ac.bottom, cRect.bottom);
      ac.right = Math.max(ac.right, cRect.right);
      ac.height = ac.bottom - ac.top;
      ac.width = ac.right - ac.left;
      var childNodes = current.e.childNodes;

      if (childNodes && childNodes.length > 0 && current.d < depth) {
        for (var i = 0; i < childNodes.length; ++i) {
          next = {
            e: childNodes[i],
            d: current.d + 1
          };
          stacks.push(next);
        }
      }
    }
  }

  return ac;
};
/***
 *
 * @param parent
 * @returns {boolean}
 */


AElement.prototype.isDescendantOf = function (parent) {
  var child = this;

  while (child) {
    if (child === parent) return true;
    child = child.parentNode;
  }

  return false;
};
/*************************** **********************/


AElement.prototype.getCSSRules = function () {
  var sheets = document.styleSheets;
  var ret = [];
  this.matches = this.matches || this.webkitMatchesSelector || this.mozMatchesSelector || this.msMatchesSelector || this.oMatchesSelector;

  for (var i in sheets) {
    if (sheets[i].href) continue; //because can not access, you must clone link node instead

    var rules = sheets[i].rules || sheets[i].cssRules;

    for (var r in rules) {
      if (this.matches(rules[r].selectorText)) {
        ret.push(rules[r]);
      }
    }
  }

  return ret;
};
/***
 * @returns {Promise}
 */

/***
 * WARNING: this function may be unsafe
 */


AElement.prototype.afterDisplayed = function (requestTimesOut) {
  if (!requestTimesOut) requestTimesOut = 24 * 3600 * 33; // var tracer = new Error();

  var current = this;
  return new Promise(function (resolve, reject) {
    function trace() {
      if (requestTimesOut < 0) {// reject(tracer);
        // if (absol.BUILD && absol.BUILD.version == "DEBUG")
        //     console.warn("Element not displayed", trace);
      } else {
        requestTimesOut--;
        var bound = current.getBoundingClientRect();

        if (bound.width > 0 || bound.height > 0) {
          resolve();
        } else {
          setTimeout(trace, 33);
          return;
        }
      }
    }

    trace();
  });
};

!function () {
  var origin = AElement.prototype.on;

  if (_BrowserDetector["default"].isSafari && !_BrowserDetector["default"].isMobile) {
    AElement.prototype.on = function () {
      if (!this.isSupportedEvent('mouseleave') && arguments[0] == 'mouseleave') {
        this.defineEvent('mouseleave');

        var mouseLeaveEventHandler = function mouseLeaveEventHandler(event) {
          var bound = this.getBoundingClientRect();
          var ok = false;
          ok |= event.clientX < bound.left + 1;
          ok |= event.clientX >= bound.right - 1;
          ok |= event.clientY < bound.top + 1;
          ok |= event.clientY >= bound.bottom - 1;
          if (ok) this.emit('mouseleave', event);
        };

        this.addEventListener('mouseleave', mouseLeaveEventHandler, true);
      }

      origin.apply(this, arguments);
      return this;
    };
  }

  if (_BrowserDetector["default"].isFirefox) {
    AElement.prototype.on = function () {
      if (!this.isSupportedEvent('wheel') && arguments[0] == 'wheel') {
        this.defineEvent('wheel');

        var wheelEventHandler = function wheelEventHandler(oldEvent) {
          //clone event to avoid some lib fix it
          var event = oldEvent.absolEvent;

          if (!event) {
            event = Object.assign({}, oldEvent);

            for (var i = 0; i < AElement.eventProperties.length; ++i) {
              var key = AElement.eventProperties[i];

              if (typeof event[key] == 'function') {
                event[key] = event[key].bind(oldEvent);
              }
            }

            event.preventDefault = function () {
              oldEvent.preventDefault();
            };

            if (!event.mozFixWheelScale) {
              event.mozDeltaY = oldEvent.deltaY;
              event.mozFixWheelScale = true;
              Object.defineProperty(event, 'deltaY', {
                get: function get() {
                  return this.mozDeltaY * 100 / 3;
                }
              });
            }

            oldEvent.absolEvent = event;
          }

          this.emit('wheel', event);
        };

        this.addEventListener('wheel', wheelEventHandler);
      }

      origin.apply(this, arguments);
      return this;
    };
  }
}();
AElement.eventProperties = ["altKey", "bubbles", "button", "buttons", "cancelBubble", "cancelable", "clientX", "clientY", "composed", "ctrlKey", "currentTarget", "defaultPrevented", "deltaMode", "deltaX", "deltaY", "deltaZ", "detail", "eventPhase", "explicitOriginalTarget", "isTrusted", "layerX", "layerY", "metaKey", "movementX", "movementY", "mozInputSource", "mozPressure", "offsetX", "offsetY", "originalTarget", "pageX", "pageY", "rangeOffset", "rangeParent", "region", "relatedTarget", "returnValue", "screenX", "screenY", "shiftKey", "srcElement", "target", "timeStamp", "type", "deltaMode", "deltaX", "deltaY", "deltaZ"];
var _default = AElement;
exports["default"] = _default;

/***/ }),

/***/ 5658:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _AElement = _interopRequireDefault(__webpack_require__(3445));

var _OOP = _interopRequireDefault(__webpack_require__(8608));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/***
 * @augments AElement
 * @augments SVGGraphicsElement
 * @constructor
 */
function AElementNS() {
  _AElement["default"].call(this);
}

_AElement["default"].prototype.afterAttached = function () {
  if (this.isDescendantOf(document.body)) return Promise.resolve();
  var attachHookElt = this.$attachhook || this.querySelector('.absol-attachhook');

  if (!attachHookElt) {
    var constructor;

    if (this.tagName.toLowerCase() === 'svg' || this.getBBox) {
      attachHookElt = document.createElementNS('http://www.w3.org/2000/svg', 'image');
      attachHookElt.setAttributeNS(null, 'href', '');
      constructor = AElementNS;
    } else {
      attachHookElt = document.createElement('img');
      attachHookElt.src = '';
      constructor = AElementNS;
    }

    attachHookElt.classList.add('absol-attachhook');
    Object.assign(attachHookElt, constructor.prototype);
    constructor.call(attachHookElt);
    attachHookElt.defineEvent('attached');
    this.$attachhook = attachHookElt;
    this.$attachhook.on('error', function (event) {
      if (this.isDescendantOf(document.body)) this.emit('attached', event, this);
    });
    this.appendChild(attachHookElt);
  }

  return new Promise(function (rs) {
    attachHookElt.once('attached', rs);
  });
};

_OOP["default"].mixClass(AElementNS, _AElement["default"]);

AElementNS.prototype.attr = function () {
  if (arguments.length == 1) {
    if (typeof arguments[0] == 'string') {
      if (this._azar_extendAttributes[arguments[0]]) {
        return this._azar_extendAttributes[arguments[0]].get.call(this);
      } else return this.getAttributeNS(null, arguments[0]);
    } else {
      for (var key in arguments[0]) {
        this.attr(key, arguments[0][key]);
      }
    }
  } else {
    if (arguments.length == 2) {
      if (arguments[1] === null || arguments[1] === undefined) {
        if (this._azar_extendAttributes[arguments[0]]) {
          this._azar_extendAttributes[arguments[0]].remove.call(this, arguments[1]);
        } else this.removeAttributeNS(null, arguments[0]);
      } else {
        if (this._azar_extendAttributes[arguments[0]]) {
          this._azar_extendAttributes[arguments[0]].set.call(this, arguments[1]);
        } else {
          this.setAttributeNS(null, arguments[0], arguments[1]);
        }
      }
    }
  }

  return this;
};

var _default = AElementNS;
exports["default"] = _default;

/***/ }),

/***/ 4821:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.FeatureClass = void 0;
exports.activeFullScreen = activeFullScreen;
exports.copyStyleRule = copyStyleRule;
exports.deactiveFullScreen = deactiveFullScreen;
exports["default"] = void 0;
exports.depthClone = depthClone;
exports.depthCloneWithStyle = depthCloneWithStyle;
exports.fontFaceIsLoaded = fontFaceIsLoaded;
exports.getConstructDescriptor = getConstructDescriptor;
exports.getScreenSize = getScreenSize;
exports.getScrollSize = getScrollSize;
exports.imageToCanvas = imageToCanvas;
exports.isDomNode = isDomNode;
exports.isFullScreen = isFullScreen;
exports.traceOutBoundingClientRect = traceOutBoundingClientRect;
exports.waitIFrameLoaded = waitIFrameLoaded;
exports.waitImageLoaded = waitImageLoaded;

var _JSPath = _interopRequireDefault(__webpack_require__(7807));

var _OOP = _interopRequireDefault(__webpack_require__(8608));

var _getFunctionName = _interopRequireDefault(__webpack_require__(3721));

var _ElementNS = _interopRequireDefault(__webpack_require__(5914));

var _AElement = _interopRequireDefault(__webpack_require__(3445));

var _ResizeSystem = _interopRequireDefault(__webpack_require__(2826));

var _attribute = __webpack_require__(8144);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

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); }

/***
 * @typedef {{"accept-charset":string, "http-equiv": string, accept : string, accesskey : string, action : string, align : string, allow : string, alt : string, async : string, autocapitalize : string, autocomplete : string, autofocus : string, autoplay : string, background : string, bgcolor : string, border : string, buffered : string, capture : string, challenge : string, charset : string, checked : string, cite : string, class : string, code : string, codebase : string, color : string, cols : string, colspan : string, content : string, contenteditable : string, contextmenu : string, controls : string, coords : string, crossorigin : string, csp : string, data : string, "data-*" : string, datetime : string, decoding : string, default : string, defer : string, dir : string, dirname : string, disabled : string, download : string, draggable : string, dropzone : string, enctype : string, enterkeyhint : string, for : string,     form : string, formaction : string, formenctype : string, formmethod : string, formnovalidate : string, formtarget : string, headers : string, height : string, hidden : string, high : string, href : string, hreflang : string, icon : string, id : string, importance : string, integrity : string, intrinsicsize : string, inputmode : string, ismap : string, itemprop : string, keytype : string, kind : string, label : string, lang : string, language : string, loading : string, list : string, loop : string, low : string, manifest : string, max : string, maxlength : string, minlength : string, media : string, method : string, min : string, multiple : string, muted : string, name : string, novalidate : string, open : string, optimum : string, pattern : string, ping : string, placeholder : string, poster : string, preload : string, radiogroup : string, readonly : string, referrerpolicy : string, rel : string, required : string, reversed : string, rows : string, rowspan : string, sandbox : string, scope : string, scoped : string, selected : string, shape : string, size : string, sizes : string, slot : string, span : string, spellcheck : string, src : string, srcdoc : string, srclang : string, srcset : string, start : string, step : string, style : string, summary : string, tabindex : string, target : string, title : string, translate : string, type : string, usemap : string, value : string, width : string, wrap : string, }} AElementAttributeDescriptor
 */

/**
 * @typedef {{"arabic-form":string,"baseline-shift": string, "accent-height": string,  "alignment-baseline": string,  "cap-height": string,  "clip-path": string,  "clip-rule": string,  "color-dinterpolation": string,  "color-interpolation-filters": string,  "color-profile": string,  "color-rendering": string,  "dominant-baseline": string,  "enable-background": string,  "fill-opacity": string,  "fill-rule": string,  "flood-color": string,  "flood-opacity": string,  "font-family": string,  "font-size": string,  "font-size-adjust": string,  "font-stretch": string,  "font-style": string,  "font-variant": string,  "font-weight": string,  "glyph-name": string,  "glyph-orientation-horizontal": string,  "glyph-orientation-vertical": string,  "horiz-adv-x": string,  "horiz-origin-x": string,  "image-rendering": string,  "letter-spacing": string,  "lighting-color": string,  "marker-end": string,  "marker-mid": string,  "marker-start": string,  "overline-position": string,  "overline-thickness": string,  "panose-1": string,  "paint-order": string,  "pointer-events": string,  "rendering-intent": string,  "shape-rendering": string,  "stop-color": string,  "stop-opacity": string,  "strikethrough-position": string,  "strikethrough-thickness": string,  "stroke-dasharray": string,  "stroke-dashoffset": string,  "stroke-linecap": string,  "stroke-linejoin": string,  "stroke-miterlimit": string,  "stroke-opacity": string,  "stroke-width": string,  "text-anchor": string,  "text-decoration": string,  "text-rendering": string,  "transform-origin": string,  "underline-position": string,  "underline-thickness": string,  "unicode-bidi": string,  "unicode-range": string,  "units-per-em": string,  "v-alphabetic": string,  "v-hanging": string,  "v-ideographic": string,  "v-mathematical": string,  "vector-effect": string,  "vert-adv-y": string,  "vert-origin-x": string,  "vert-origin-y": string,  "word-spacing": string,  "writing-mode": string,  "x-height": string,  "xlink:actuate": string,  "xlink:arcrole": string,  "xlink:href": string,  "xlink:role": string,  "xlink:show": string,  "xlink:title": string,  "xlink:type": string,  "xml:base": string,  "xml:lang": string,  "xml:space": string, accumulate:string, additive:string, allowReorder:string, alphabetic:string, amplitude:string, ascent:string, attributeName:string, attributeType:string, autoReverse:string, azimuth:string, baseFrequency:string, baseProfile:string, bbox:string, begin:string, bias:string, by:string, calcMode:string, class:string, clip:string, clipPathUnits:string, color:string, contentScriptType:string, contentStyleType:string, cursor:string, cx:string, cy:string, d:string, decelerate:string, descent:string, diffuseConstant:string, direction:string, display:string, divisor:string, dur:string, dx:string, dy:string, edgeMode:string, elevation:string, end:string, exponent:string, externalResourcesRequired:string, fill:NamedColor|Color|string, filter:string, filterRes:string, filterUnits:string, format:string, from:string, fr:string, fx:string, fy:string, g1:string, g2:string, glyphRef:string, gradientTransform:string, gradientUnits:string, hanging:string, height:string, href:string, hreflang:string, id:string, ideographic:string, in:string, in2:string, intercept:string, k:string, k1:string, k2:string, k3:string, k4:string, kernelMatrix:string, kernelUnitLength:string, kerning:string, keyPoints:string, keySplines:string, keyTimes:string, lang:string, lengthAdjust:string, limitingConeAngle:string, local:string, markerHeight:string, markerUnits:string, markerWidth:string, mask:string, maskContentUnits:string, maskUnits:string, mathematical:string, max:string, media:string, method:string, min:string, mode:string, name:string, numOctaves:string, offset:string, opacity:string, operator:string, order:string, orient:string, orientation:string, origin:string, overflow:string, path:string, pathLength:string, patternContentUnits:string, patternTransform:string, patternUnits:string, ping:string, points:string, pointsAtX:string, pointsAtY:string, pointsAtZ:string, preserveAlpha:string, preserveAspectRatio:string, primitiveUnits:string, r:string, radius:string, referrerPolicy:string, refX:string, refY:string, rel:string, repeatCount:string, repeatDur:string, requiredExtensions:string, requiredFeatures:string, restart:string, result:string, rotate:string, rx:string, ry:string, scale:string, seed:string, slope:string, spacing:string, specularConstant:string, specularExponent:string, speed:string, spreadMethod:string, startOffset:string, stdDeviation:string, stemh:string, stemv:string, stitchTiles:string, string:string, stroke:string, style:string, surfaceScale:string, systemLanguage:string, tabindex:string, tableValues:string, target:string, targetX:string, targetY:string, textLength:string, to:string, transform:string, type:string, u1:string, u2:string, unicode:string, values:string, version:string, viewBox:string, viewTarget:string, visibility:string, width:string, widths:string, x:string, x1:string, x2:string, xChannelSelector:string, y:string, y1:string, y2:string, yChannelSelector:string, z:string, zoomAndPan:string, }}  AElementNSAttributeDescriptor
 */

/***
 * @typedef {{abort:function(event:(UiEvent|Event)):void,afterprint:function(event:Event):void,animationend:function(event:AnimationEvent):void,animationiteration:function(event:AnimationEvent):void,animationstart:function(event:AnimationEvent):void,beforeprint:function(event:Event):void,beforeunload:function(event:(UiEvent|Event)):void,blur:function(event:FocusEvent):void,canplay:function(event:Event):void,canplaythrough:function(event:Event):void,change:function(event:Event):void,click:function(event:MouseEvent):void,contextmenu:function(event:MouseEvent):void,copy:function(event:ClipboardEvent):void,cut:function(event:ClipboardEvent):void,dblclick:function(event:MouseEvent):void,drag:function(event:DragEvent):void,dragend:function(event:DragEvent):void,dragenter:function(event:DragEvent):void,dragleave:function(event:DragEvent):void,dragover:function(event:DragEvent):void,dragstart:function(event:DragEvent):void,drop:function(event:DragEvent):void,durationchange:function(event:Event):void,ended:function(event:Event):void,error:function(event:(ProgressEvent|UiEvent|Event)):void,focus:function(event:FocusEvent):void,focusin:function(event:FocusEvent):void,focusout:function(event:FocusEvent):void,fullscreenchange:function(event:Event):void,fullscreenerror:function(event:Event):void,hashchange:function(event:HashChangeEvent):void,input:function(event:(InputEvent|Event)):void,invalid:function(event:Event):void,keydown:function(event:KeyboardEvent):void,keypress:function(event:KeyboardEvent):void,keyup:function(event:KeyboardEvent):void,load:function(event:(UiEvent|Event)):void,loadeddata:function(event:Event):void,loadedmetadata:function(event:Event):void,loadstart:function(event:ProgressEvent):void,message:function(event:Event):void,mousedown:function(event:MouseEvent):void,mouseenter:function(event:MouseEvent):void,mouseleave:function(event:MouseEvent):void,mousemove:function(event:MouseEvent):void,mouseover:function(event:MouseEvent):void,mouseout:function(event:MouseEvent):void,mouseup:function(event:MouseEvent):void,mousewheel:function(event:WheelEvent):void,offline:function(event:Event):void,online:function(event:Event):void,open:function(event:Event):void,pagehide:function(event:PageTransitionEvent):void,pageshow:function(event:PageTransitionEvent):void,paste:function(event:ClipboardEvent):void,pause:function(event:Event):void,play:function(event:Event):void,playing:function(event:Event):void,popstate:function(event:PopStateEvent):void,progress:function(event:Event):void,ratechange:function(event:Event):void,resize:function(event:(UiEvent|Event)):void,reset:function(event:Event):void,scroll:function(event:(UiEvent|Event)):void,search:function(event:Event):void,seeked:function(event:Event):void,seeking:function(event:Event):void,select:function(event:(UiEvent|Event)):void,show:function(event:Event):void,stalled:function(event:Event):void,storage:function(event:StorageEvent):void,submit:function(event:Event):void,suspend:function(event:Event):void,timeupdate:function(event:Event):void,toggle:function(event:Event):void,touchcancel:function(event:TouchEvent):void,touchend:function(event:TouchEvent):void,touchmove:function(event:TouchEvent):void,touchstart:function(event:TouchEvent):void,transitionend:function(event:TransitionEvent):void,unload:function(event:(UiEvent|Event)):void,volumechange:function(event:Event):void,waiting:function(event:Event):void,wheel:function(event:WheelEvent):void}} AElementEventDescriptor
 */

/***
 * @typedef AbsolConstructDescriptor
 * @property {string | function |null} tag
 * @property {CSSStyleDeclaration} style
 * @property {Array | string} extendEvent
 * @property {Array | string} class
 * @property {AElementAttributeDescriptor|AElementNSAttributeDescriptor} attr
 * @property {string|AElement | AElementNS | AbsolConstructDescriptor | string[] |AElement[] | AElementNS[] | AbsolConstructDescriptor[]} child
 * @property {string} text to create a TextNode, not Element
 * @property {AElement} elt
 * @property {AElementEventDescriptor|{}} on
 * @property {Object} props
 *
 */

/****
 *
 * @returns {AElement}
 */
var attachhookCreator = function attachhookCreator() {
  var res = Dom.ShareInstance._({
    tag: 'img',
    "class": 'absol-attachhook',
    extendEvent: ['attached'],
    style: {
      display: 'none'
    },
    attr: {
      src: ''
    },
    on: {
      error: function error(event) {
        if (!this._attached && this.isDescendantOf(document.body)) {
          this._attached = true;
          this.emit('attached', event, this);
        }
      }
    }
  });

  res._attached = false;
  Object.defineProperty(res, 'attached', {
    get: function get() {
      return this._attached;
    }
  });

  res.resetState = function () {
    this._attached = false;
    this.src = '';
  };

  return res;
};

var svgCreator = function svgCreator() {
  var temp = document.createElement('div');
  temp.innerHTML = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg"></svg>';
  var element = temp.childNodes[0];
  var prototypes = Object.getOwnPropertyDescriptors(_AElement["default"].prototype);
  Object.defineProperties(element, prototypes);

  _AElement["default"].call(element);

  return element;
};
/***
 *
 * @param {*=} option
 * @constructor
 */


function Dom(option) {
  this.defaultTag = 'div';
  option = option || {};
  this.creator = option.creator || {};
  Object.defineProperties(this.creator, {
    svg: {
      set: function set() {//do nothing
      },
      get: function get() {
        return svgCreator;
      }
    },
    attachhook: {
      set: function set() {//do nothing
      },
      get: function get() {
        return attachhookCreator;
      }
    }
  });
  this['$ '.trim()] = this.$.bind(this);
  this['_ '.trim()] = this._.bind(this);
  this['$' + '$'] = this.$$.bind(this);
  this.buildDom = this._;
}

Dom.prototype.fromCode = function (code) {
  code = code.trim().replace(/>\s+</gm, '><');
  var temTag = 'div';
  if (code.startsWith('<td') || code.startsWith('<th') && !code.startsWith('<thead')) temTag = 'tr';else if (code.startsWith('<tr')) temTag = 'tbody';else if (code.startsWith('<thead') || code.startsWith('<tbody')) temTag = 'table';
  var tempDiv = document.createElement(temTag);
  tempDiv.innerHTML = code;
  var element = tempDiv.childNodes[0];
  var prototypes = Object.getOwnPropertyDescriptors(_AElement["default"].prototype);
  Object.defineProperties(element, prototypes);

  _AElement["default"].call(element);

  return element;
};
/**
 * DFS
 * @param {string | AElement} query
 * @param {AElement} root
 * @param {function} onFound - return true to stop find
 * @returns {AElement | AElementNS}
 */


Dom.prototype.$ = function (query, root, onFound) {
  var res;
  if (Dom.isDomNode(query)) res = query;else res = this.select(query, root, onFound);
  if (res) this.attach(res);
  return res;
};
/***
 *
 * @type {function(string, AElement, Function): AElement}
 */


Dom.prototype.selectAttacth = Dom.prototype.$;
/**
 * DFS
 * @param {string} query
 * @param {AElement} root
 * @param {function} onFound - return true to stop find
 */

Dom.prototype.select = function (query, root, onFound) {
  root = root || document.documentElement;

  var matcher = _JSPath["default"].compileJSPath(query);

  return matcher.findFirst(root, onFound);
};

var FeatureClass = {
  AElementNS: {
    constructor: _ElementNS["default"],
    prototypeKeys: Object.keys(_ElementNS["default"].prototype)
  },
  AElement: {
    constructor: _AElement["default"],
    prototypeKeys: Object.keys(_AElement["default"].prototype)
  }
};
/**
 *
 * @param {AElement | AElementNS } element
 */

exports.FeatureClass = FeatureClass;

Dom.prototype.attach = function (element) {
  if (element.attr) return;
  var feature = element.getBBox && element.tagName !== 'svg' ? FeatureClass.AElementNS : FeatureClass.AElement;
  var elementConstructor = feature.constructor;
  var proto = elementConstructor.prototype;
  var prototypeKeys = feature.prototypeKeys;
  var n = prototypeKeys.length;
  var key;

  for (var i = 0; i < n; ++i) {
    key = prototypeKeys[i];
    element[key] = proto[key];
  }

  Object.assign(element, elementConstructor.prototype);
  elementConstructor.call(element);
};

Dom.prototype.makeNewElement = function (tagName) {
  return document.createElement(tagName);
};

Dom.prototype.makeNewTextNode = function (data) {
  return document.createTextNode(data);
};
/**
 *
 * @param {AbsolConstructDescriptor | string | {} } option
 * @param {boolean=} isInherited
 * @returns {AElementNS| AElement | Text}
 */


Dom.prototype._ = function (option, isInherited) {
  var res;
  var creator;

  if (Dom.isDomNode(option)) {
    res = option;
    option = {};
    /** fix reinit component */

    isInherited = true;
  } else {
    if (option.charAt) {
      option = option.trim();

      if (option[0] == '<') {
        res = this.fromCode(option);
        option = {};
      } else {
        var queryObj = _JSPath["default"].parseQuery(option);

        option = {};
        option.tag = queryObj.tagName || this.defaultTag;
        if (queryObj.classList && queryObj.classList.length > 0) option["class"] = queryObj.classList;
        if (queryObj.id) option.id = queryObj.id;
        if (queryObj.attributes) option.attr = queryObj.attributes;
      }
    }
  }

  if (option.text || option.text === '') {
    //is textNode
    return this.makeNewTextNode(option.text);
  }

  option.tag = option.tag || this.defaultTag;
  creator = option.tag.prototype ? option.tag : this.creator[option.tag];
  if (option.tag.prototype) option.tag = option.tag.tag;

  if (option.elt) {
    res = this._(option.elt);
  } else {
    if (!res) {
      if (creator) {
        if (creator.render) {
          res = creator.render(option.data);
        } else {
          res = creator(option.data);
        }
      } else {
        res = this.makeNewElement(option.tag);
        Object.assign(res, option.data);
      }
    }
  }

  this.attach(res);

  if (creator) {
    res._azar_extendTags = res._azar_extendTags || {};
    res._azar_extendTags[option.tag] = creator;
    creator.property && Object.defineProperties(res, creator.property);
    creator.prototype && _OOP["default"]["extends"](res, creator.prototype);
    creator.attribute && res.defineAttributes(creator.attribute);

    if (creator.render) {
      if (creator.eventHandler) {
        res.eventHandler = res.eventHandler || {};

        var eventHandler = _OOP["default"].bindFunctions(res, creator.eventHandler || creator.prototype.eventHandler);

        for (var eventHandlerKey in eventHandler) {
          if (res.eventHandler[eventHandlerKey]) {
            throw new Error("Same name of eventHandler[" + eventHandlerKey + "]");
          } else {
            res.eventHandler[eventHandlerKey] = eventHandler[eventHandlerKey];
          }
        }
      }

      creator.call(res);
    }
  }

  option.extendEvent && res.defineEvent(option.extendEvent);
  option.attr && res.attr(option.attr);
  option.on && res.on(option.on);
  option.once && res.once(option.once);
  option["class"] && res.addClass(option["class"]);
  option.style && res.addStyle(option.style);
  option.id && res.attr('id', option.id);
  if (!isInherited) res.init(option.props);

  if (option.child) {
    option.child = option.child instanceof Array ? option.child : [option.child];

    for (var i = 0; i < option.child.length; ++i) {
      res.addChild(this._(option.child[i], false, true));
    }
  }

  return res;
};
/***
 *
 * @type {function(Object, boolean): AElement}
 */


Dom.prototype.create = Dom.prototype._;
/***
 *
 * @param query
 * @param root
 * @returns {Array<AElement|AElementNS>}
 */

Dom.prototype.$$ = function (query, root) {
  var thisD = this;
  var res = [];
  this.selectAttacth(query, root, function (elt) {
    thisD.attach(elt);
    res.push(elt);
  });
  return res;
};

Dom.prototype.install = function (arg0, arg1) {
  var _this = this;

  if (arguments.length == 1) {
    if (arg0.creator && arg0.create && arg0.select) {
      // is a dom core
      var creator = arg0.creator;
      Object.keys(creator).forEach(function (key) {
        if (key.startsWith('_') || key.startsWith('$')) return;
        var func = creator[key];
        if (typeof func == 'function') if (_this.creator[key] != func) _this.creator[key] = func;
      });
    } else if (typeof arg0 == 'function') {
      var name = arg0.tag || (0, _getFunctionName["default"])(arg0) || arg0.name;

      if (name) {
        this.creator[name.toLowerCase()] = arg0;
      } else {
        console.error('No ident name of creator function', arg0);
      }
    } else if (arg0 instanceof Array) {
      arg0.forEach(function (func) {
        var name = func.tag || (0, _getFunctionName["default"])(func) || func.name;

        if (name) {
          _this.creator[name.toLowerCase()] = func;
        }
      });
    } else if (_typeof(arg0) == 'object') {
      Object.keys(arg0).forEach(function (key) {
        if (key.startsWith('_') || key.startsWith('$')) return;
        var func = arg0[key];
        if (typeof func == 'function') if (_this.creator[key] != func) _this.creator[key] = func;
      });
    } else {
      console.error('Unknown data', arg0);
    }
  } else if (arguments.length == 2) {
    if (arg0 instanceof Array) {
      if (arg1.creator) arg1 = arg1.creator;
      arg0.forEach(function (key) {
        var func = arg1[key];
        if (typeof func == 'function') if (_this.creator[key] != func) _this.creator[key] = func;
      });
    } else if (arg0 instanceof RegExp) {
      if (arg1.creator) arg1 = arg1.creator;
      Object.keys(arg1).forEach(function (key) {
        if (key.match(arg0)) {
          var func = arg1[key];
          if (typeof func == 'function') if (_this.creator[key] != func) _this.creator[key] = func;
        }
      });
    } else if (typeof arg0 == 'string' && arg0.length > 0) {
      if (typeof arg1 == 'function') {
        this.creator[arg0] = arg1;
      } else {
        console.error('arg1 is not a function');
      }
    }
  } else {
    console.error('Invalid param');
  }

  return this;
};
/***
 *
 * @param {String | null} tagName
 */


Dom.prototype.require = function (tagName) {
  return this.creator[tagName] || null;
};
/**
 *
 * @param {*} o
 * @returns {Boolean}
 */


function isDomNode(o) {
  return (typeof Node === "undefined" ? "undefined" : _typeof(Node)) === "object" ? o instanceof Node : o && _typeof(o) === "object" && typeof o.nodeType === "number" && typeof o.nodeName === "string";
}

Dom.isDomNode = isDomNode;
/**
 * @param {AElement|Node|HTMLElement} element
 */

function activeFullScreen(element) {
  if (element.requestFullscreen) {
    element.requestFullscreen();
  } else if (element.mozRequestFullScreen) {
    element.mozRequestFullScreen();
  } else if (element.webkitRequestFullscreen) {
    element.webkitRequestFullscreen(_AElement["default"].ALLOW_KEYBOARD_INPUT);
  } else if (element.msRequestFullscreen) {
    element.msRequestFullscreen();
  }
}

Dom.activeFullScreen = activeFullScreen;

function deactiveFullScreen() {
  if (document.exitFullscreen) {
    document.exitFullscreen();
  } else if (document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
  } else if (document.webkitExitFullscreen) {
    document.webkitExitFullscreen();
  } else if (document.msExitFullscreen) {
    document.msExitFullscreen();
  }
}

Dom.deactiveFullScreen = deactiveFullScreen;

function isFullScreen() {
  var fullScreenElement = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;
  return !!fullScreenElement;
}

Dom.isFullScreen = isFullScreen;
/**
 * @param {AElement|Node|HTMLElement} current
 * @returns {ClientRect}
 */

function traceOutBoundingClientRect(current) {
  var screenSize = Dom.getScreenSize();
  var left = 0;
  var right = screenSize.width;
  var top = 0;
  var bottom = screenSize.height;

  while (current) {
    var ox = _AElement["default"].prototype.getComputedStyleValue.call(current, 'overflow-x') !== "visible";
    var oy = _AElement["default"].prototype.getComputedStyleValue.call(current, 'overflow-y') !== "visible";
    var isHtml = current.tagName.toLowerCase() === 'html';

    if (ox || oy || isHtml) {
      var bound;

      if (isHtml) {
        bound = Object.assign({
          left: 0,
          top: 0
        }, getScreenSize());
        bound.bottom = bound.height;
        bound.right = bound.width;
      } else {
        bound = current.getBoundingClientRect();
      }

      if (ox || isHtml) {
        left = Math.max(left, bound.left);
        right = Math.min(right, bound.right);
      }

      if (oy || isHtml) {
        top = Math.max(top, bound.top);
        bottom = Math.min(bottom, bound.bottom);
      }
    }

    if (isHtml) break;
    current = current.parentElement;
  }

  return {
    left: left,
    right: right,
    top: top,
    bottom: bottom,
    width: right - left,
    height: bottom - top
  };
}

Dom.traceOutBoundingClientRect = traceOutBoundingClientRect;
/***
 *
 * @param {string} fontFace
 * @param {number} timeout
 * @returns {Promise<boolean>}
 */

function fontFaceIsLoaded(fontFace, timeout) {
  timeout = timeout || 0;

  var element = this.ShareInstance._({
    tag: 'span',
    style: {
      visibility: 'hidden',
      position: 'fixed',
      top: '-9999px',
      left: '-9999px',
      'font-size': '256px'
    },
    props: {
      innerHTML: "Test string long long long"
    }
  });

  element.addTo(document.body);
  return element.afterAttached().then(function () {
    var lastOffsetWidth = element.getBoundingClientRect().width;
    element.addStyle('font-family', fontFace);
    return new Promise(function (resolve, reject) {
      function check(remainTime) {
        if (remainTime < 0) {
          resolve(false);
          element.selfRemove();
        } else requestAnimationFrame(function () {
          var currentOffsetWidth = element.getBoundingClientRect().width;

          if (currentOffsetWidth != lastOffsetWidth) {
            resolve(true);
            element.selfRemove();
          } else check(remainTime - 10);
        });
      }

      check(timeout);
    });
  });
}

Dom.fontFaceIsLoaded = fontFaceIsLoaded;
/***
 *
 * @returns {{width: number, WIDTH: number, HEIGHT: number, height: number}}
 */

function getScreenSize() {
  var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
  var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
  return {
    WIDTH: width,
    HEIGHT: height,
    width: width,
    height: height
  };
}

Dom.getScreenSize = getScreenSize;
/***
 *
 * @param {HTMLImageElement} img
 * @param {number=} timeout
 * @returns {Promise<void>}
 */

function waitImageLoaded(img, timeout) {
  var isLoaded = true;

  if (!img.complete) {
    isLoaded = false;
  }

  if (img.naturalWidth === 0) {
    isLoaded = false;
  }

  if (isLoaded) return Promise.resolve();
  return new Promise(function (rs) {
    if (img.addEventListener) {
      img.addEventListener('load', rs, false);
    } else {
      img.attachEvent('onload', rs, false);
    }

    setTimeout(rs, timeout || 5000);
  }); // No other way of checking: assume it’s ok.
}

Dom.waitImageLoaded = waitImageLoaded;
/***
 *
 * @param {HTMLIFrameElement| Worker} iframe
 * @returns {Promise}
 */

function waitIFrameLoaded(iframe) {
  return new Promise(function (rs, rj) {
    if (document.all) {
      iframe.onreadystatechange = function () {
        if (iframe.readyState === "complete" || iframe.readyState === "loaded") rs();
      };
    } else {
      iframe.onload = rs;
    }

    setTimeout(rs, 5000);
  });
}

Dom.waitIFrameLoaded = waitIFrameLoaded;
/***
 *
 * @param {Image} element
 * @returns {Promise<HTMLCanvasElement>}
 */

function imageToCanvas(element) {
  if (typeof element == 'string') {
    element = Dom.ShareInstance.$(element);
  }

  if (element.tagName.toLowerCase() === 'img') {
    var preRender = Dom.ShareInstance._('div');

    preRender.addStyle({
      position: 'fixed',
      top: '0',
      left: '0',
      zIndex: '-10000',
      opacity: '0'
    }).addTo(document.body);
    var canvas = document.createElement("canvas");
    preRender.addChild(canvas);
    return Dom.waitImageLoaded(element).then(function () {
      canvas.width = element.width;
      canvas.height = element.height;
      var context = canvas.getContext("2d");
      context.drawImage(element, 0, 0);
      preRender.selfRemove();
      return canvas;
    });
  } else {
    throw new Error("AElement must be image");
  }
}

Dom.imageToCanvas = imageToCanvas;
Dom.ShareInstance = new Dom();
Dom.scrollWidthPromise;
Dom.documentReady = new Promise(function (resolve) {
  if (document.body) {
    resolve();
  } else {
    window.addEventListener("load", resolve);
  }
});

function getScrollSize() {
  if (!Dom.scrollWidthPromise) Dom.scrollWidthPromise = new Promise(function (resolve) {
    function prerender() {
      var parent = Dom.ShareInstance._({
        style: {
          'z-index': '-100',
          opacity: '0',
          width: '100px',
          height: '100px',
          overflow: 'scroll',
          top: '0',
          left: '0',
          'box-sizing': 'content-box',
          position: 'fixed'
        }
      }).addTo(document.body);

      var child = Dom.ShareInstance._({
        style: {
          width: '100%',
          height: '100%'
        }
      }).addTo(parent);

      requestAnimationFrame(function () {
        var parentBound = parent.getBoundingClientRect();
        var childBound = child.getBoundingClientRect();
        resolve({
          width: parentBound.width - childBound.width,
          height: parentBound.height - childBound.height
        });
        parent.selfRemove();
      });
    }

    Dom.documentReady.then(prerender);
  });
  return Dom.scrollWidthPromise;
}

Dom.getScrollSize = getScrollSize;
/***
 *
 * @param {(AElement|AElementNS|Node)} originElt
 * @param {function(originElt: (AElement|AElementNS|Node), originElt: (AElement|AElementNS|Node)):void } afterCloneCb
 * @return {AElement|AElementNS|Node}
 */

function depthClone(originElt, afterCloneCb) {
  /***
   *
   * @type {AElement|AElementNS|Node}
   */
  var newElt = originElt.cloneNode(); //no deep

  if (originElt.childNodes) {
    /***
     *
     * @type {(AElement|AElementNS)[]}
     */
    var children = Array.prototype.map.call(originElt.childNodes, function (child) {
      return depthClone(child, afterCloneCb);
    });

    for (var i = 0; i < children.length; ++i) {
      newElt.appendChild(children[i]);
    }
  }

  return afterCloneCb && afterCloneCb(originElt, newElt) || newElt;
}
/***
 *
 * @param originElt
 * @returns {AElement|HTMLElement|Node}
 */


function depthCloneWithStyle(originElt, afterCloneCb) {
  return depthClone(originElt, function (originElt, newElt) {
    if (!originElt.getAttribute && !originElt.getAttributeNS) return;
    copyStyleRule(originElt, newElt);
    afterCloneCb && afterCloneCb(originElt, newElt);
  });
}

Dom.depthClone = depthClone;
Dom.depthCloneWithStyle = depthCloneWithStyle;
/***
 *
 * @param  {AElement|HTMLElement|Node}sourceElt
 * @param  {AElement|HTMLElement|Node} destElt
 * @returns  {AElement|HTMLElement|Node}
 */

function copyStyleRule(sourceElt, destElt) {
  if (!sourceElt.getAttribute && !sourceElt.getAttributeNS) return destElt; //is text node

  if (!destElt.getAttribute && !destElt.getAttributeNS) return destElt; //is text node, nothing to copy

  var cssRules = _AElement["default"].prototype.getCSSRules.call(sourceElt);

  var cssKey = cssRules.reduce(function (ac, rule) {
    for (var i = 0; i < rule.style.length; ++i) {
      ac[rule.style[i]] = true;
    }

    return ac;
  }, {});

  for (var key in cssKey) {
    destElt.style[key] = _AElement["default"].prototype.getComputedStyleValue.call(sourceElt, key);
  }

  return destElt;
}

Dom.copyStyleRule = copyStyleRule;
/***
 * get absol construct descriptor for HTML element only
 * @param {AElement | Text} elt
 * @returns {AbsolConstructDescriptor}
 */

function getConstructDescriptor(elt) {
  var obj = {};
  obj.tag = elt.tagName.toLowerCase();
  var classAttr = elt.getAttribute('class');
  var classList;
  if (classAttr) classList = (0, _attribute.parseClassAttr)(classAttr);
  if (classList && classList.length > 0) obj["class"] = classList;
  var styleAttr = elt.getAttribute('style');
  var style;
  if (styleAttr) style = (0, _attribute.parseStyleAttr)(styleAttr);
  var attributes = elt.attributes;
  var attNode;
  var attrName;
  var attrValue;
  var attr = {};
  var on = {};
  var props = {};
  var eventMatch, eventName;
  var propMatch, propName;

  for (var i = 0; i < attributes.length; ++i) {
    attNode = attributes[i];
    attrName = attNode.nodeName;
    attrValue = attNode.nodeValue;
    if (attrName == 'style' || attrName == 'class') continue;
    eventMatch = attrName.match(/^on(.+)/);

    if (eventMatch) {
      eventName = eventMatch[1];
      on[eventName] = new Function('event', 'sender', attrValue);
      continue;
    }

    propMatch = attrName.match(/^prop-(.+)/);

    if (propMatch) {
      propName = propMatch[1];
      props[propName] = attrValue;
      continue;
    }

    attr[attrName] = attrValue;
  }

  var key;

  for (key in style) {
    //style is not empty
    obj.style = style;
    break;
  }

  for (key in attr) {
    obj.attr = attr;
    break;
  }

  for (key in on) {
    obj.on = on;
    break;
  }

  for (key in props) {
    obj.props = props;
    break;
  }

  return obj;
}

Dom.getConstructDescriptor = getConstructDescriptor;

Dom.addToResizeSystem = function (element) {
  _ResizeSystem["default"].add(element);
};

Dom.updateResizeSystem = function () {
  _ResizeSystem["default"].update();
};

Dom.updateSizeUp = function (fromElt) {
  _ResizeSystem["default"].updateUp(fromElt);
};

var _default = Dom;
exports["default"] = _default;

/***/ }),

/***/ 5914:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _AElementNS = _interopRequireDefault(__webpack_require__(5658));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var _default = _AElementNS["default"];
exports["default"] = _default;

/***/ }),

/***/ 6833:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.copyEvent = copyEvent;
exports.copyTouch = copyTouch;
exports.eventProperties = exports["default"] = void 0;
exports.findChangedTouchByIdent = findChangedTouchByIdent;
exports.findTouchByIdent = findTouchByIdent;
exports.hitElement = hitElement;
exports.isMouseLeft = isMouseLeft;
exports.isMouseRight = isMouseRight;
exports.touchProperties = void 0;

var _safeThrow = _interopRequireDefault(__webpack_require__(628));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

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); }

function EventEmitter() {
  if (!this._azar_extendEvents) {
    Object.defineProperty(this, '_azar_extendEvents', {
      enumerable: false,
      value: this._azar_extendEvents || {
        supported: {},
        prioritize: {},
        nonprioritize: {}
      }
    });
    Object.defineProperty(this, '__azar_force', {
      value: !((typeof Node === "undefined" ? "undefined" : _typeof(Node)) === "object" ? this instanceof Node : this && _typeof(this) === "object" && typeof this.nodeType === "number" && typeof this.nodeName === "string"),
      enumerable: false
    });
  }
}

EventEmitter.prototype.defineEvent = function (name) {
  if (name instanceof Array) {
    for (var i = 0; i < name.length; ++i) {
      this._azar_extendEvents.supported[name[i]] = true;
    }
  } else this._azar_extendEvents.supported[name] = true;

  return this;
};

EventEmitter.prototype.isSupportedEvent = function (name) {
  return this.__azar_force || !!this._azar_extendEvents.supported[name];
};

EventEmitter.prototype.emit = function (eventName, data) {
  this.fire.apply(this, arguments);
};

EventEmitter.prototype.fire = function (eventName, data) {
  var others = Array.prototype.slice.call(arguments, 1);

  if (this.isSupportedEvent(eventName)) {
    var listenerList;
    var i;

    if (this._azar_extendEvents.prioritize[eventName]) {
      listenerList = this._azar_extendEvents.prioritize[eventName].slice();

      for (i = 0; i < listenerList.length; ++i) {
        try {
          listenerList[i].wrappedCallback.apply(this, others);
        } catch (e) {
          (0, _safeThrow["default"])(e);
        }
      }
    }

    if (this._azar_extendEvents.nonprioritize[eventName]) {
      listenerList = this._azar_extendEvents.nonprioritize[eventName].slice();

      for (i = 0; i < listenerList.length; ++i) {
        try {
          listenerList[i].wrappedCallback.apply(this, others);
        } catch (e) {
          (0, _safeThrow["default"])(e);
        }
      }
    }
  } else {
    if (this.dispatchEvent) {
      var event = new Event(eventName);
      data && Object.assign(event, data);
      this.dispatchEvent(event);
    } else throw new Error("Not support event " + eventName);
  }

  return this;
};

EventEmitter.prototype.eventEmittorOnWithTime = function (isOnce, arg0, arg1, arg2) {
  if (_typeof(arg0) == 'object') {
    for (var key in arg0) {
      this.eventEmittorOnWithTime(isOnce, key, arg0[key]);
    }

    return this;
  } else {
    if (_typeof(arg1) == 'object') {
      return this.eventEmittorOnWithTime(isOnce, arg0, arg1.callback, arg1.cap);
    } else {
      var eventArr = this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] || [];
      var eventIndex = -1;

      for (var i = 0; i < eventArr.length; ++i) {
        if (eventArr[i].wrappedCallback == arg1) {
          eventIndex = i;
          break;
        }
      }

      if (eventIndex < 0) {
        var event = {
          isOnce: isOnce,
          eventName: arg0,
          callback: arg1,
          cap: !!arg2
        }; //wrappedCallback will be call

        if (isOnce) {
          event.wrappedCallback = function () {
            event.callback.apply(this, arguments);
            this.off(event.eventName, event.wrappedCallback, event.cap);
          };
        } else {
          event.wrappedCallback = event.callback;
        }

        if (!this.isSupportedEvent(arg0)) {
          if (this.addEventListener) {
            this.addEventListener(arg0, event.wrappedCallback, !!arg2);
          } else {
            this.attachEvent('on' + arg0, arg1, !!arg2);
          }
        }

        eventArr.push(event);
        this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] = eventArr;
      } else {
        console.warn("dupplicate event");
      }
    }

    return this;
  }
};

EventEmitter.prototype.on = function (arg0, arg1, arg2) {
  this.eventEmittorOnWithTime(false, arg0, arg1, arg2);
  return this;
};

EventEmitter.prototype.once = function (arg0, arg1, arg2) {
  this.eventEmittorOnWithTime(true, arg0, arg1, arg2);
  return this;
};

EventEmitter.prototype.off = function (arg0, arg1, arg2) {
  if (_typeof(arg0) == 'object') {
    for (var key in arg0) {
      this.off(key, arg0[key]);
    }

    return this;
  } else {
    if (_typeof(arg1) == 'object') {
      return this.off(arg0, arg1.callback, arg1.cap);
    } else {
      var eventArr = this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] || [];
      var newEventArray = [];

      for (var i = 0; i < eventArr.length; ++i) {
        var event = eventArr[i];

        if (event.wrappedCallback == arg1) {
          //Dont add to newEventArray
          if (this.isSupportedEvent(arg0)) {} else {
            if (this.removeEventListener) {
              this.removeEventListener(event.eventName, event.wrappedCallback, !!event.cap);
            } else {
              this.detachEvent('on' + event.eventName, event.wrappedCallback, !!event.cap);
            }
          }
        } else {
          newEventArray.push(event);
        }
      }

      this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] = newEventArray;
      return this;
    }
  }
};

var eventProperties = ["altKey", "bubbles", "button", "buttons", "cancelBubble", "cancelable", "clientX", "clientY", "composed", "ctrlKey", "currentTarget", "defaultPrevented", "deltaMode", "deltaX", "deltaY", "deltaZ", "detail", "eventPhase", "explicitOriginalTarget", "isTrusted", "layerX", "layerY", "metaKey", "movementX", "movementY", "mozInputSource", "mozPressure", "offsetX", "offsetY", "originalTarget", "pageX", "pageY", "rangeOffset", "rangeParent", "region", "relatedTarget", "returnValue", "screenX", "screenY", "shiftKey", "srcElement", "target", "timeStamp", "type", "deltaMode", "deltaX", "deltaY", "deltaZ", 'preventDefault'];
exports.eventProperties = eventProperties;
var touchProperties = ['clientX', 'clientY', 'force', 'identifier', 'pageX', 'pageY', 'rotationAngle', 'screenX', 'screenY', 'target'];
exports.touchProperties = touchProperties;

function isMouseRight(event) {
  var isRightMB = false;
  if ("which" in event) // Gecko (Firefox), WebKit (Safari/Chrome) & Opera
    isRightMB = event.which == 3;else if ("button" in event) // IE, Opera
    isRightMB = event.button == 2;
  return isRightMB;
}

function isMouseLeft(event) {
  var isLeftMB = false;
  if ("which" in event) // Gecko (Firefox), WebKit (Safari/Chrome) & Opera
    isLeftMB = event.which == 1;else if ("button" in event) // IE, Opera
    isLeftMB = event.button == 1;
  return isLeftMB;
}

function hitElement(element, event) {
  var current = event.target;

  while (current) {
    if (current == element) return true;
    current = current.parentElement;
  }

  return false;
}

function copyEvent(event, props) {
  var result = {};
  var key, value; //copy native property

  for (var i = 0; i < eventProperties.length; ++i) {
    key = eventProperties[i];
    value = event[key];

    if (value !== undefined) {
      if (typeof value == "function") {
        result[key] = event[key].bind(event);
      } else {
        result[key] = event[key];
      }
    }
  }

  Object.assign(result, event);
  if (props) Object.assign(result, props);

  if (event.changedTouches) {
    result.changedTouches = Array.prototype.map.call(event.changedTouches, function (touch) {
      return copyTouch(touch);
    });
  }

  if (event.touches) {
    result.touches = Array.prototype.map.call(event.touches, function (touch) {
      return copyTouch(touch);
    });
  }

  return result;
}

function copyTouch(touch, props) {
  var result = {};
  var key, value; //copy native property

  for (var i = 0; i < touchProperties.length; ++i) {
    key = touchProperties[i];
    value = touch[key];

    if (value !== undefined) {
      if (typeof value == "function") {
        result[key] = touch[key].bind(touch);
      } else {
        result[key] = touch[key];
      }
    }
  }

  Object.assign(result, touch);
  if (props) Object.assign(result, props);
  return result;
}
/***
 *
 * @param {TouchEvent} event
 * @return {Touch | null}
 */


function findChangedTouchByIdent(event, identifier) {
  if (event.changedTouches) {
    for (var i = 0; i < event.changedTouches.length; ++i) {
      if (event.changedTouches[i].identifier === identifier) {
        return event.changedTouches[i];
      }
    }
  }

  return null;
}
/***
 *
 * @param event
 * @param identifier
 * @return {Touch|null}
 */


function findTouchByIdent(event, identifier) {
  if (event.touches) {
    for (var i = 0; i < event.touches.length; ++i) {
      if (event.touches[i].identifier === identifier) {
        return event.touches[i];
      }
    }
  }

  return null;
}

EventEmitter.isMouseRight = isMouseRight;
EventEmitter.isMouseLeft = isMouseLeft;
EventEmitter.hitElement = hitElement;
EventEmitter.copyEvent = copyEvent;
EventEmitter.eventProperties = eventProperties;
var _default = EventEmitter;
exports["default"] = _default;

/***/ }),

/***/ 7807:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

function JSPath(props) {
  this.path = props.path;
}
/**
 *
 * @param {Element} element
 * @returns {Boolean}
 */


JSPath.prototype.match = function (element, query) {
  if (query.id) {
    if (!element.getAttribute || element.getAttribute('id') != query.id) return false;
  }

  if (query.tagName) {
    var matchTag = false;
    if (element._azar_extendTags && element._azar_extendTags[query.tagName]) matchTag = true;
    matchTag = matchTag || (element.tagName || '').toUpperCase() == query.tagName.toUpperCase();
    if (!matchTag) return false;
  }

  if (query.classList) for (var i = 0; i < query.classList.length; ++i) {
    if (!element.classList || !element.classList.contains(query.classList[i])) return false;
  }

  if (query.attributes) {
    for (var key in query.attributes) {
      var value;

      if (element.attr) {
        value = element.attr(key);
        if (value != query.attributes[key]) return false;
      } else if (element.getAttribute) {
        value = element.getAttribute(key);
        if (value != query.attributes[key]) return false;
      }
    }
  }

  return true;
};
/**
 * Warning : still fail in some testcase
 */


JSPath.prototype.findFirst = function (root, onFound) {
  var queue = [{
    e: root,
    i: 0
  }];
  var current;

  while (queue.length > 0) {
    current = queue.shift();
    var isMathed = false;
    var currentElt = current.e;
    var currentI = current.i;

    if (this.match(currentElt, this.path[currentI])) {
      if (this.path[currentI].childCombinate) {
        var trackI = currentI;
        var trackElement = currentElt;
        var isTrackMatch = true;

        while (isTrackMatch && trackI > 0 && this.path[trackI].childCombinate) {
          if (!trackElement.parentNode || !this.match(trackElement.parentNode, this.path[trackI - 1])) {
            isTrackMatch = false;
          } else {
            trackElement = trackElement.parentNode;
            trackI--;
          }
        }

        if (isTrackMatch) isMathed = true;
      } else {
        isMathed = true;
      }
    }

    if (isMathed && currentI + 1 == this.path.length) {
      if (!onFound || onFound && onFound(currentElt)) return currentElt;
    }

    if (currentElt.childNodes) {
      var l = currentElt.childNodes.length;

      for (var i = 0; i < l; ++i) {
        if (currentElt.childNodes[i].tagName) queue.push({
          e: currentElt.childNodes[i],
          i: currentI + (isMathed && currentI + 1 < this.path.length ? 1 : 0)
        });
      }
    }
  }

  return undefined;
};

JSPath.prototype.findAll = function (root, onFound) {
  var res = [];
  var queue = [{
    e: root,
    i: 0
  }];
  var current;

  while (queue.length > 0) {
    current = queue.shift();
    var isMathed = false;
    var currentElt = current.e;
    var currentI = current.i;

    if (this.match(currentElt, this.path[currentI])) {
      if (this.path[currentI].childCombinate) {
        var trackI = currentI;
        var trackElement = currentElt;
        var isTrackMatch = true;

        while (isTrackMatch && trackI > 0 && this.path[trackI].childCombinate) {
          if (!trackElement.parentNode || !this.match(trackElement.parentNode, this.path[trackI - 1])) {
            isTrackMatch = false;
          } else {
            trackElement = trackElement.parentNode;
            trackI--;
          }
        }

        if (isTrackMatch) isMathed = true;
      } else {
        isMathed = true;
      }
    }

    if (isMathed && currentI + 1 == this.path.length) {
      if (!onFound || onFound && onFound(currentElt)) res.push(currentElt);
    }

    if (currentElt.childNodes) {
      var l = currentElt.childNodes.length;

      for (var i = 0; i < l; ++i) {
        if (currentElt.childNodes[i].tagName) queue.push({
          e: currentElt.childNodes[i],
          i: currentI + (isMathed && currentI + 1 < this.path.length ? 1 : 0)
        });
      }
    }
  }

  return res;
};

var identRegex = /[a-zA-Z0-9\-_]+/;
var stringRegex = /"(([^"\\]*|(\\.))*)"/;
var classRegex = new RegExp('\\.' + identRegex.source);
var idRegex = new RegExp('#' + identRegex.source);
var booleanRegex = /true|false/;
var valueRegex = new RegExp(stringRegex.source + '|' + booleanRegex.source);
var attributeRegex = new RegExp('\\[\\s*(' + identRegex.source + ')\\s*(=\\s*(' + valueRegex.source + '))\\]');
var queryRegex = new RegExp(['(', identRegex.source, '|', attributeRegex.source, '|', classRegex.source, '|', idRegex.source, ')+'].join(''));
JSPath.__tagRegex = new RegExp(queryRegex.source + '|\\>', 'g');
JSPath.__tagNameRegex = new RegExp('^' + identRegex.source, 'i');
JSPath.__classRegex = new RegExp(classRegex.source, 'g');
JSPath.__idRegex = new RegExp(idRegex.source, 'i');
JSPath.__attrRegex = new RegExp(attributeRegex.source, 'g');

JSPath.parseQuery = function (s) {
  var tag = {};
  s = s.replace(JSPath.__attrRegex, function (full, name, assign, jsonTextValue) {
    tag.attributes = tag.attributes || {};

    if (assign) {
      tag.attributes[name] = JSON.parse(jsonTextValue);
    } else tag.attributes[name] = true;

    return '';
  });
  var classList = s.match(this.__classRegex);
  var idList = s.match(this.__idRegex);
  var tagList = s.match(this.__tagNameRegex);

  if (idList && idList.length > 0) {
    tag.id = idList[0].substring(1);
  }

  if (tagList && tagList.length > 0) {
    tag.tagName = tagList[0].trim();
  }

  if (classList && classList.length > 0) {
    tag.classList = classList.map(function (s) {
      return s.substring(1);
    });
  }

  return tag;
};
/**
 * @param {String} text
 * @returns {JSPath}
 */


JSPath.compileJSPath = function (text) {
  var tagTexts = text.match(this.__tagRegex) || [''];
  var path = [];
  var childCombinate = false;

  for (var i = 0; i < tagTexts.length; ++i) {
    var s = tagTexts[i];

    if (s == '>') {
      childCombinate = true;
    } else {
      var tag = this.parseQuery(s);
      tag.childCombinate = childCombinate;
      path.push(tag);
      childCombinate = false;
    }
  }

  return new JSPath({
    path: path
  });
};

var _default = JSPath;
exports["default"] = _default;

/***/ }),

/***/ 8608:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var OOP = {};
/**
 * @param {Object} object
 * @param {String} key
 * @param {Function} method
 */

OOP.overrideMethod = function (object, key, method) {
  if (object[key] === undefined) object[key] = method;else {
    var _superMethod = object[key];

    object[key] = function (_superMethod, method) {
      return function () {
        var _super = this["super"];
        this["super"] = _superMethod;
        var result = method.apply(this, arguments);
        this["super"] = _super;
        return result;
      };
    }(_superMethod, method);
  }
};

OOP["extends"] = function (object, prototype) {
  // do not use setter, getter
  for (var key in prototype) {
    if (key !== 'constructor' && key !== '__proto__') {
      if (typeof prototype[key] == 'function') {
        OOP.overrideMethod(object, key, prototype[key]);
      } else if (prototype[key] !== undefined && prototype[key] !== null) {
        object[key] = prototype[key]; //just copy
      }
    }
  }
};

OOP.inherit = function (child, parent) {
  // do not use setter, getter
  Object.keys(parent).forEach(function (key) {
    if (key !== 'constructor' && typeof parent[key] == 'function') {
      var superMethod = parent[key];
      var currentMethod = child[key];
      if (!currentMethod) child[key] = superMethod;else {
        child[key] = function () {
          var _super = this["super"];
          this["super"] = superMethod;
          var result = currentMethod.apply(this, arguments);
          this["super"] = _super;
          return result;
        };
      }
    }
  });
};

OOP.drillProperty = function (topObject, botObject, keyTop, keyBot) {
  if (typeof keyTop == 'string') {
    keyBot = keyBot || keyTop;
    Object.defineProperty(topObject, keyTop, {
      set: function set(value) {
        botObject[keyBot] = value;
      },
      get: function get() {
        return botObject[keyBot];
      }
    });
  } else {
    if (keyTop instanceof Array) {
      for (var i = 0; i < keyTop.length; ++i) {
        OOP.drillProperty(topObject, botObject, keyTop[i], keyTop[i]);
      }
    } else {
      for (var key in keyTop) {
        OOP.drillProperty(topObject, botObject, key, keyTop[key]);
      }
    }
  }
};

OOP.bindFunctions = function (_this, handlers) {
  var res = {};

  for (var key in handlers) {
    res[key] = handlers[key].bind(_this);
  }

  return res;
};

OOP.inheritCreator = function (parent, child) {
  var i;

  if (child.property) {
    if (parent.property) {
      for (i in parent.property) {
        if (!child.property[i]) child.property[i] = parent.property[i];
      }
    }
  }

  for (i in parent.prototype) {
    if (!child.prototype[i]) {
      child.prototype[i] = parent.prototype[i];
    } else {
      child.prototype[i] = function (superFunction, childFunction) {
        return function () {
          var _super = this["super"];
          this["super"] = superFunction;
          var result = childFunction.apply(this, arguments);
          this["super"] = _super;
          return result;
        };
      }(parent.prototype[i], child.prototype[i]);
    }
  }
};
/***
 *
 * @param {Function} constructor
 */


OOP.mixClass = function (constructor) {
  var descriptors = {};

  for (var i = 1; i < arguments.length; ++i) {
    Object.assign(descriptors, Object.getOwnPropertyDescriptors(arguments[i].prototype));
  }

  delete descriptors.constructor;
  Object.defineProperties(constructor.prototype, descriptors);
};

var _default = OOP;
exports["default"] = _default;

/***/ }),

/***/ 2826:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _AElement = _interopRequireDefault(__webpack_require__(3445));

var _AElementNS = _interopRequireDefault(__webpack_require__(5658));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/**
 *
 * @constructor
 */
function ResizeSystem() {
  this.elts = [];
  this.cache = [];
  this.cacheOf = null;
  this.lastResizeTime = 0;
  window.addEventListener('resize', this.update.bind(this));
  this['goDown' + 'AndCache'] = this.goDownAndCache.bind(this);
  this['notify' + 'ToElt'] = this.notifyToElt.bind(this);
}
/***
 *
 * @param {AElement | AElementNS} elt
 */


ResizeSystem.prototype.goDownAndCache = function (elt) {
  if (this.notifyToElt(elt)) this.cache.push(elt);

  if (elt.childNodes) {
    Array.prototype.forEach.call(elt.childNodes, this.goDownAndCache);
  }
};

ResizeSystem.prototype.notifyToElt = function (elt) {
  if (typeof elt.requestUpdateSize == 'function') {
    elt.requestUpdateSize();
    return true;
  } else if (typeof elt.updateSize == 'function') {
    elt.updateSize();
    return true;
  } else if (typeof elt.onresize == 'function') {
    elt.onresize();
    return true;
  }
};

ResizeSystem.prototype.update = function () {
  var now = new Date().getTime();

  if (now - 100 > this.lastResizeTime) {
    this.removeTrash();
    this.cache = undefined;
  }

  this.lastResizeTime = now;

  if (this.cacheOf !== null) {
    this.cache = undefined;
    this.cacheOf = null;
  }

  if (this.cache === undefined) {
    this.cache = [];
    this.elts.forEach(this.goDownAndCache);
  } else {
    this.cache.forEach(this.notifyToElt);
  }
};

ResizeSystem.prototype.removeTrash = function () {
  this.elts = this.elts.filter(function (element) {
    return _AElement["default"].prototype.isDescendantOf.call(element, document.body);
  });
};
/***
 *
 * @param  {AElement| AElementNS | Node} fromElt
 * @returns {boolean}
 */


ResizeSystem.prototype.updateUp = function (fromElt) {
  while (fromElt) {
    if (typeof fromElt.requestUpdateSize == 'function') {
      fromElt.requestUpdateSize();
      return true;
    } else if (typeof fromElt.updateSize == 'function') {
      fromElt.updateSize();
      return true;
    } else if (typeof fromElt.onresize == 'function') {
      fromElt.onresize();
      return true;
    }

    fromElt = fromElt.parentElement;
  }
};
/***
 *
 * @param  {AElement| AElementNS | Node} fromElt
 * @returns {boolean}
 */


ResizeSystem.prototype.updateDown = function (fromElt) {
  var now = new Date().getTime();

  if (now - 100 > this.lastResizeTime) {
    this.cache = undefined;
  }

  this.lastResizeTime = now;

  if (this.cacheOf !== fromElt) {
    this.cache = undefined;
    this.cacheOf = fromElt;
  }

  if (this.cache === undefined) {
    this.cache = [];
    this.goDownAndCache(fromElt);
  } else {
    this.cache.forEach(this.notifyToElt);
  }
};
/***
 *
 * @param {AElement| AElementNS | Node} elt
 * @return {boolean}
 */


ResizeSystem.prototype.add = function (elt) {
  for (var i = 0; i < this.elts.length; ++i) {
    if (_AElement["default"].prototype.isDescendantOf.call(elt, this.elts[i])) {
      return false;
    }
  }

  this.elts = this.elts.filter(function (e) {
    return !_AElement["default"].prototype.isDescendantOf.call(e, elt);
  });
  this.elts.push(elt);
  return true;
};

var _default = new ResizeSystem();

exports["default"] = _default;

/***/ }),

/***/ 8315:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
exports.svgToExportedString = svgToExportedString;
exports.svgToRasterImageUrl = svgToRasterImageUrl;

var _Dom = _interopRequireWildcard(__webpack_require__(4821));

var _ElementNS = _interopRequireDefault(__webpack_require__(5914));

var _AElement = _interopRequireDefault(__webpack_require__(3445));

var _Color = _interopRequireDefault(__webpack_require__(4974));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function _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); }

function _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; }

var sattachhookCreator = function sattachhookCreator() {
  var res = Svg.ShareInstance._('<image  class="absol-attachhook" style="display:none"  href=""/>');

  res.defineEvent('attached');
  res.on('error', function (event) {
    if (!this._attached && this.isDescendantOf(document.body)) {
      this._attached = true;
      this.emit('attached', event, this);
    }
  });
  res._attached = false;
  Object.defineProperty(res, 'attached', {
    get: function get() {
      return this._attached;
    }
  });

  res.resetState = function () {
    this._attached = false;
    this.src = '';
  };

  return res;
};
/***
 * @extends Dom
 * @param option
 * @constructor
 */


function Svg(option) {
  _Dom["default"].call(this, option);

  this.defaultTag = 'g';
  this.svgNS = "http://www.w3.org/2000/svg";
  Object.defineProperties(this.creator, {
    sattachhook: {
      set: function set() {//do nothing
      },
      get: function get() {
        return sattachhookCreator;
      }
    }
  });
  delete this.buidDom;
  this.buildSvg = this.create.bind(this);
}

Object.defineProperties(Svg.prototype, Object.getOwnPropertyDescriptors(_Dom["default"].prototype));

Svg.prototype.fromCode = function (code) {
  code = code.trim();
  var receptacle = document.createElement('div');
  var element;
  var prototypes;

  if (code.startsWith('<svg')) {
    receptacle.innerHTML = code;
    element = receptacle.childNodes[0];
    prototypes = Object.getOwnPropertyDescriptors(_AElement["default"].prototype);
    Object.defineProperties(element, prototypes);

    _AElement["default"].call(element);
  } else {
    var svgfragment = '<svg  version="1.1" xmlns="http://www.w3.org/2000/svg">' + code + '</svg>';
    receptacle.innerHTML = '' + svgfragment;
    element = receptacle.childNodes[0].childNodes[0];
    prototypes = Object.getOwnPropertyDescriptors(_ElementNS["default"].prototype);
    Object.defineProperties(element, prototypes);

    _ElementNS["default"].call(element);
  }

  return element;
};

Svg.prototype.makeNewElement = function (tagName) {
  return document.createElementNS(this.svgNS, tagName);
};

Svg.ShareInstance = new Svg();

Svg.svgToCanvas = function (element) {
  if (typeof element == 'string') {
    element = _Dom["default"].ShareInstance.$(element);
  }

  if (element && element.tagName == 'svg') {
    var cssTexts = {};

    var depthClone = function depthClone(originElt) {
      var newElt = originElt.cloneNode(); //no deep

      if (!originElt.getAttributeNS) return newElt; //is text node

      var cssRules = _AElement["default"].prototype.getCSSRules.call(originElt);

      var cssKey = cssRules.reduce(function (ac, rule) {
        for (var i = 0; i < rule.style.length; ++i) {
          ac[rule.style[i]] = true;
        }

        return ac;
      }, {});

      for (var key in cssKey) {
        newElt.style[key] = _AElement["default"].prototype.getComputedStyleValue.call(originElt, key);
      }

      var children = Array.prototype.map.call(originElt.childNodes, depthClone);

      for (var i = 0; i < children.length; ++i) {
        newElt.appendChild(children[i]);
      }

      return newElt;
    };

    var cloneElement = depthClone(element);

    var renderSpace = _Dom["default"].ShareInstance._({
      style: {
        // opacity:0,
        zIndex: -1000,
        position: 'fixed',
        top: 0,
        bottom: 0
      }
    }).addTo(document.body);

    renderSpace.addChild(cloneElement);
    var svgCode = renderSpace.innerHTML;
    renderSpace.clearChild();
    var mBlob = new Blob([svgCode], {
      type: "image/svg+xml;charset=utf-8"
    });
    var src = (URL || webkitURL).createObjectURL(mBlob);

    var image = _Dom["default"].ShareInstance._('img');

    image.attr('src', src).addTo(renderSpace);
    var canvas = document.createElement("canvas");
    renderSpace.addChild(canvas);
    return _Dom["default"].waitImageLoaded(image).then(function () {
      canvas.width = image.width;
      canvas.height = image.height;
      var context = canvas.getContext("2d");
      context.drawImage(image, 0, 0);
      renderSpace.selfRemove();
      return canvas;
    });
  } else {
    throw new Error('Element must be svg');
  }
};

function svgToRasterImageUrl(element) {
  return Svg.svgToCanvas(element).then(function (canvas) {
    return canvas.toDataURL();
  });
}

Svg.svgToRasterImageUrl = svgToRasterImageUrl;

function svgToExportedString(element) {
  if (typeof element == 'string') {
    element = _Dom["default"].ShareInstance.$(element);
  }

  if (element && element.tagName == 'svg') {
    var depthClone = function depthClone(originElt) {
      var newElt = originElt.cloneNode(); //no deep

      if (!originElt.getAttributeNS) return newElt; //is text node

      var cssRules = _AElement["default"].prototype.getCSSRules.call(originElt);

      var cssKey = cssRules.reduce(function (ac, rule) {
        for (var i = 0; i < rule.style.length; ++i) {
          ac[rule.style[i]] = true;
        }

        return ac;
      }, {});

      for (var key in cssKey) {
        newElt.style[key] = _AElement["default"].prototype.getComputedStyleValue.call(originElt, key);
      }

      var children = Array.prototype.map.call(originElt.childNodes, depthClone);

      for (var i = 0; i < children.length; ++i) {
        newElt.appendChild(children[i]);
      }

      return newElt;
    };

    var cloneElement = depthClone(element);

    var renderSpace = _Dom["default"].ShareInstance._({
      style: {
        // opacity:0,
        zIndex: -1000,
        position: 'fixed',
        top: 0,
        bottom: 0
      }
    }).addTo(document.body);

    renderSpace.addChild(cloneElement);
    var svgCode = renderSpace.innerHTML;
    renderSpace.selfRemove();
    return svgCode;
  } else {
    throw new Error('Element must be svg');
  }
}

;
Svg.svgToExportedString = svgToExportedString;

function svgToSvgUrl(element) {
  var svg = svgToExportedString(element);
  svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n' + svg;
  var blob = new Blob([svg], {
    type: 'image/svg+xml'
  });
  var url = URL.createObjectURL(blob);
  return url;
}

Svg.svgToSvgUrl = svgToSvgUrl;
/***
 *
 * @param {AElement|String | {computeStyle?: boolean, elt: AElement, keepBackgroundColor?:boolean,convertSVG?:boolean}} option
 * @return {Promise<unknown>}
 */

_Dom["default"].printElement = function (option) {
  var _ = _Dom["default"].ShareInstance._;
  var $ = _Dom["default"].ShareInstance.$;
  option = option || {};

  if (typeof option == 'string') {
    option = {
      elt: _Dom["default"].ShareInstance.$(option)
    };
  } else if (typeof option.elt == 'string') {
    option.elt = $(option.elt);
  } else if (_Dom["default"].isDomNode(option)) {
    option = {
      elt: option
    };
  }

  option = Object.assign({
    keepBackgroundColor: true,
    convertSVG: false,
    computeStyle: false
  }, option);

  if (_Dom["default"].isDomNode(option.elt)) {
    var afterCloneCb = function afterCloneCb(originElt, newElt) {
      if (!newElt.tagName) return;
      var tagName = newElt.tagName.toLowerCase();
      if (newElt.getBBox && tagName !== 'svg') return;
      var url, img;
      var needCopyStyle = option.computeStyle;
      var needKeepBackgroundColor = option.keepBackgroundColor;

      if (tagName === 'canvas' || tagName === 'svg' && option.convertSVG) {
        if (tagName === "canvas") {
          url = originElt.toDataURL();
        } else {
          url = svgToSvgUrl(originElt);
        }

        img = _({
          tag: 'img',
          props: {
            src: url
          }
        });
        $(newElt).selfReplace(img);
        newElt = img;
        needCopyStyle = true;
      } else if (tagName === 'script') {
        newElt.remove();
      } else if (tagName === 'img') {
        newElt.setAttribute('src', originElt.src);
      }

      if (needCopyStyle) {
        (0, _Dom.copyStyleRule)(originElt, newElt);
      }

      if (needKeepBackgroundColor) {
        try {
          var bgColor = _AElement["default"].prototype.getComputedStyleValue.call(originElt, 'background-color');

          if (bgColor) {
            bgColor = _Color["default"].parse(bgColor);

            if (bgColor.rgba[3] > 0) {
              newElt.style.setProperty('background-color', bgColor.toString('hex8'), 'important');
            }
          }
        } catch (e) {}
      }

      return newElt;
    };

    var newElt = (0, _Dom.depthClone)(option.elt, afterCloneCb);

    var renderSpace = _({
      style: {
        position: 'fixed',
        top: '0',
        left: '0',
        right: '0',
        bottom: '0',
        overflow: 'auto',
        zIndex: '10',
        opacity: '0',
        visibility: 'hidden'
      }
    });

    $('link', document.head, function (elt) {
      var temp = elt.cloneNode(false); //copy absolute url

      temp.setAttribute('href', elt.href);
      renderSpace.addChild(temp);
    });

    if (!option.computeStyle) {
      $('style', document.head, function (elt) {
        if (elt == _Dom["default"].$printStyle) return;
        renderSpace.addChild(elt.cloneNode(true));
      });
    }

    renderSpace.addChild(newElt);
    var eltCode = renderSpace.innerHTML;
    renderSpace.clearChild();
    option.title = option.title || ($('title', document.head) || {
      innerHTML: 'absol.js'
    }).innerHTML;
    var htmlCode = ['<ht' + 'ml>', ' <h' + 'ead><title>' + option.title + '</title><meta charset="UTF-8">', '<style>', option.overideStyle ? 'html, body{width:initial !important; height:initial !important; overflow: initial !important; overflow-x: initial !important;overflow-y: initial !important;  }' : '', '@media print {', //still not work
    '    body{', '      -webkit-print-color-adjust: exact;', '       color-adjust: exact;', '    } ', '    div, tr, td, table{', '    }', '  }', 'div, table, tr, td{', '    page-break-inside: initial;', '    page-break-before: avoid;', '    page-break-after: avoid;', '}', option.extendCss || '', '</style>', '</he' + 'ad>', '<bod' + 'y>', eltCode, '<scr' + 'ipt>' + (option.extendScript || '') + '</scri' + 'pt>', //browser parse  script tag fail
    '<scr' + 'ipt>setTimeout(function(){ window.print();},1000);</scri' + 'pt>', //browser parse  script tag fail
    '</bod' + 'y>', '</ht' + 'ml>'].join('\n');
    var blob = new Blob([htmlCode], {
      type: 'text/html; charset=UTF-8'
    });
    renderSpace.addTo(document.body);

    var iframe = _('iframe').attr('src', URL.createObjectURL(blob)).addStyle({
      width: '100%',
      height: '100%'
    }).addTo(renderSpace);

    return new Promise(function (rs, rj) {
      function waitLoad() {
        if (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.body) {
          if (typeof option.onLoad == 'function') option.onLoad();
          iframe.contentWindow.focus();
          setTimeout(function () {
            function waitFocusBack() {
              if (!document.hasFocus || document.hasFocus()) {
                renderSpace.remove();
                if (typeof option.onFinish == 'function') option.onFinish();
                rs();
              } else {
                setTimeout(waitFocusBack, 300);
              }
            }

            waitFocusBack();
          }, 4000);
        } else setTimeout(waitLoad, 1000);
      }

      waitLoad();
    });
  } else {
    throw new Error('Invalid param!');
  }
};

var _default = Svg;
exports["default"] = _default;

/***/ }),

/***/ 3021:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

function TemplateString(props) {
  this.parts = props.parts;
}

TemplateString.prototype.toJSCode = function () {
  return this.parts.map(function (e) {
    if (e.type == TemplateString.TYPE_EXPRESSION) {
      return '(' + e.data + ')';
    } else {
      return JSON.stringify(e.data);
    }
  }).join('+');
};

TemplateString.__partRegex = /(\{\{(([^\}]|(\}[^\}]))*)\}\})|(([^\{]|(\{[^\{]))+)/g;
/**
 *  @param  {String} text 
 */

TemplateString.__matchExpression = function (text) {
  if (text[0] == '{' && text[1] == '{' && text[text.length - 1] == '}' && text[text.length - 2] == '}') {
    return [text, text.substr(2, text.length - 4).trim()];
  } else {
    return false;
  }
};

TemplateString.TYPE_STRING = 0;
TemplateString.TYPE_EXPRESSION = 1;

TemplateString.parse = function (text) {
  text = text + '';
  var matchedParts = text.match(this.__partRegex);

  if (matchedParts) {
    var parts = matchedParts.map(function (e) {
      var matchedExp = this.__matchExpression(e);

      if (matchedExp) {
        return {
          type: this.TYPE_EXPRESSION,
          data: matchedExp[1]
        };
      } else {
        return {
          type: this.TYPE_STRING,
          data: e
        };
      }
    }.bind(this));
    return new TemplateString({
      parts: parts
    });
  } else {
    return new TemplateString({
      parts: []
    });
  }
};

var _default = TemplateString;
exports["default"] = _default;

/***/ }),

/***/ 8528:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.generateJSVariable = generateJSVariable;

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); }

function generateJSVariable(obj, indent) {
  indent = indent || '';
  var childIndent = indent + '    ';

  if (obj === null) {
    return 'null';
  } else if (obj instanceof Array) {
    if (obj.length === 0) return '[]';
    return '[\n' + obj.map(function (it) {
      return childIndent + generateJSVariable(it, childIndent);
    }).join(',\n') + '\n' + indent + ']';
  } else if (_typeof(obj) === 'object') {
    var keys = Object.keys(obj);
    if (keys.length === 0) return '{}';
    return '{\n' + keys.map(function (key) {
      var value = obj[key];
      if (!key.match(/^[a-zA-Z_$]([a-zA-Z_0-9$]*)$/)) key = JSON.stringify(key);
      return childIndent + key + ': ' + generateJSVariable(value, childIndent);
    }).join(',\n') + '\n' + indent + '}';
  } else if (obj === undefined) {
    return 'undefined';
  } else {
    return JSON.stringify(obj);
  }
}

/***/ }),

/***/ 8144:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.parseClassAttr = parseClassAttr;
exports.parseStyleAttr = parseStyleAttr;

/**
 * 
 * @param {String} text 
 *  @returns {Object}
 */
function parseStyleAttr(text) {
  return text.split(';').map(function (line) {
    var parts = line.split(':');
    if (parts.length < 2) return null;
    var key = parts.shift().trim();
    var value = parts.join(':').trim();
    if (key.length == 0 || value.length == 0) return null;
    return [key, value];
  }).filter(function (it) {
    return it != null;
  }).reduce(function (ac, cr) {
    ac[cr[0]] = cr[1];
    return ac;
  }, {});
}
/**
 * 
 * @param {String} text 
 *  @returns {Array<String>}
 */


function parseClassAttr(text) {
  return text.trim().split(/\s+/);
}

/***/ }),

/***/ 2986:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _Vec = _interopRequireDefault(__webpack_require__(3316));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/**
 *
 * @param {Number} x
 * @param {Number} y
 * @param {Number} width
 * @param {Number} height
 */
function Rectangle(x, y, width, height) {
  this.width = width;
  this.height = height;
  this.x = x;
  this.y = y;
}
/**
 *
 * @return {Vec2}
 * @constructor
 */


Rectangle.prototype.A = function () {
  return new _Vec["default"](this.x, this.y);
};
/***
 *
 * @return {Vec2}
 * @constructor
 */


Rectangle.prototype.B = function () {
  return new _Vec["default"](this.x + this.width, this.y);
};
/***
 *
 * @return {Vec2}
 * @constructor
 */


Rectangle.prototype.C = function () {
  return new _Vec["default"](this.x + this.width, this.y + this.height);
};
/***
 *
 * @return {Vec2}
 * @constructor
 */


Rectangle.prototype.D = function () {
  return new _Vec["default"](this.x, this.y + this.height);
};
/***
 *
 * @return {number}
 */


Rectangle.prototype.square = function () {
  return this.width * this.height;
};

Rectangle.prototype.nearestPoint = function (arg0, arg1) {
  if (arg1) arg0 = _Vec["default"].make(arg0, arg1);
  var res = this.A();
  var mind = res.dist(arg0);
  var d = this.B().dist(arg0);

  if (d < mind) {
    mind = d;
    res = this.B();
  }

  d = this.C().dist(arg0);

  if (d < mind) {
    mind = d;
    res = this.C();
  }

  d = this.D().dist(arg0);

  if (d < mind) {
    mind = d;
    res = this.D();
  }

  return res;
};

Rectangle.prototype.centerPoint = function () {
  return new _Vec["default"](this.x + this.width / 2, this.y + this.height / 2);
};
/***
 *
 * @param {Rectangle} r
 * @param {number} margin
 * @return {boolean}
 */


Rectangle.prototype.isCollapse = function (r, margin) {
  if (!margin) margin = 0;
  return !(this.x >= r.x + r.width + margin || this.y >= r.y + r.height + margin || r.x >= this.x + this.width + margin || r.y >= this.y + this.height + margin);
};
/***
 *
 * @param {Rectangle} r
 * @return {number}
 */


Rectangle.prototype.collapsedSquare = function (r) {
  var collapseRect = this.collapsedRect(r);

  if (collapseRect) {
    return collapseRect.square();
  } else {
    return 0;
  }
};
/***
 *
 * @param {Rectangle} r
 * @return {Rectangle}
 */


Rectangle.prototype.collapsedRect = function (r) {
  var maxX, minX, maxY, minY, width, height;
  minX = Math.max(this.x, r.x);
  minY = Math.max(this.y, r.y);
  maxX = Math.min(this.x + this.width, r.x + r.width);
  maxY = Math.min(this.y + this.height, r.y + r.height);
  width = maxX - minX;
  height = maxY - minY;

  if (width >= 0 && height >= 0) {
    return new Rectangle(minX, minY, width, height);
  }

  return null;
};
/**
 * @param {Rectangle} r
 * @returns {Boolean}
 */


Rectangle.prototype.contains = function (r) {
  return this.x <= r.x && this.y <= r.y && this.x + this.width >= r.x + r.width && this.y + this.height >= r.y + r.height;
};
/**
 * @param {Vec2} p
 * @returns {Boolean}
 */


Rectangle.prototype.containsPoint = function (p) {
  return this.x <= p.x && this.y <= p.y && this.x + this.width >= p.x && this.y + this.height >= p.y;
};
/**
 * @param {Rectangle} other
 * @returns {Rectangle}
 */


Rectangle.prototype.merge = function (other) {
  var left = Math.min(this.x, other.x);
  var top = Math.min(this.y, other.y);
  var right = Math.max(this.x + this.width, other.x + other.width);
  var bottom = Math.max(this.y + this.height, other.y + other.height);
  return new Rectangle(left, top, right - left, bottom - top);
};
/**
 * @returns {Rectangle}
 */


Rectangle.prototype.clone = function () {
  return new Rectangle(this.x, this.y, this.width, this.height);
};
/***
 *
 * @param {Rectangle} r
 */


Rectangle.prototype.equals = function (r) {
  return this.x === r.x && this.y === r.y && this.height === r.height && this.width === r.width;
};
/**
 * @param {Number} x
 * @param {Number} y
 * @param {Number} width
 * @param {Number} height
 * @returns {Rectangle}
 */


Rectangle.make = function (x, y, width, height) {
  return new Rectangle(x, y, width, height);
};
/**
 * @param {Number} x
 * @param {Number} y
 * @param {Number} width
 * @param {Number} height
 * @returns {Rectangle}
 */


Rectangle.makeCenter = function (x, y, width, height) {
  return new Rectangle(x - width / 2, y - height / 2, width, height);
};
/**
 * @param {ClientRect|DOMRect} clientRect
 * @returns {Rectangle}
 */


Rectangle.fromClientRect = function (clientRect) {
  return new Rectangle(clientRect.left, clientRect.top, clientRect.width, clientRect.height);
};
/***
 *
 * @param {Vec2[]} points
 * @returns  {Rectangle}
 */


Rectangle.boundingPoints = function (points) {
  var minX = Infinity,
      minY = Infinity,
      maxX = -Infinity,
      maxY = -Infinity;
  var point;

  for (var i = 0; i < points.length; ++i) {
    point = points[i];
    minX = Math.min(minX, point.x);
    maxX = Math.max(maxX, point.x);
    minY = Math.min(minY, point.y);
    maxY = Math.max(maxY, point.y);
  }

  return new Rectangle(minX, minY, maxX - minX, maxY - minY);
};

var _default = Rectangle;
exports["default"] = _default;

/***/ }),

/***/ 3316:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

/***
 *
 * @param  {Number} x
 * @param {Number} y
 * @constructor
 */
function Vec2(x, y) {
  this.x = x;
  this.y = y;
}
/***
 *
 * @returns {Vec2}
 */


Vec2.prototype.copy = function () {
  return new Vec2(this.x, this.y);
};
/***
 *
 * @returns {string}
 */


Vec2.prototype.toString = function () {
  return "(" + this.x + ", " + this.y + ")";
};
/***
 *
 * @returns {number}
 */


Vec2.prototype.abs = function () {
  return Math.sqrt(this.x * this.x + this.y * this.y);
};
/***
 *
 * @returns {Vec2}
 */


Vec2.prototype.normalized = function () {
  var l = this.abs();
  if (l == 0) l = 1;
  return this.div(l);
};
/***
 *
 * @param {number} h
 * @returns {Vec2}
 */


Vec2.prototype.mult = function (h) {
  return new Vec2(this.x * h, this.y * h);
};
/***
 *
 * @param {number} h
 * @returns {Vec2}
 */


Vec2.prototype.div = function (h) {
  return new Vec2(this.x / h, this.y / h);
};
/***
 *
 * @param v
 * @returns {number}
 */


Vec2.prototype.dist = function (v) {
  var dx = v.x - this.x;
  var dy = v.y - this.y;
  return Math.sqrt(dx * dx + dy * dy);
};
/***
 *
 * @param {Vec2} v
 * @returns {Vec2}
 */


Vec2.prototype.sub = function (v) {
  return new Vec2(this.x - v.x, this.y - v.y);
};
/***
 *
 * @param {Vec2} v
 * @returns {Vec2}
 */


Vec2.prototype.add = function (v) {
  return new Vec2(this.x + v.x, this.y + v.y);
};
/***
 *
 * @returns {Vec2}
 */


Vec2.prototype.inv = function () {
  return new Vec2(-this.x, -this.y);
};
/***
 *
 * @param {Vec2} v
 * @param {number} h
 * @returns {Vec2}
 */


Vec2.prototype.linear = function (v, h) {
  return new Vec2(this.x * (1 - h) + v.x * h, this.y * (1 - h) + v.y * h);
};
/***
 *
 * @param {Vec2} v1
 * @returns {number}
 */


Vec2.prototype.dot = function (v1) {
  return this.x * v1.x + this.y * v1.y;
};
/***
 *
 * @param {Vec2} v1
 * @returns {number}
 */


Vec2.prototype.cross = function (v1) {
  return this.x * v1.y - this.y * v1.x;
};
/***
 *
 * @returns {number}
 */


Vec2.prototype.direction = function () {
  return Math.atan2(this.y, this.x);
};
/***
 *
 * @param {Number} dx
 * @param {Number} dy
 */


Vec2.prototype.translate = function (dx, dy) {
  return this.add(new Vec2(dx, dy));
};
/****
 *
 * @param {Number} angle - radian
 * @returns {Vec2}
 */


Vec2.prototype.rotate = function (angle) {
  var sinA = Math.sin(angle);
  var cosA = Math.cos(angle);
  var x = this.x * cosA - this.y * sinA;
  var y = this.x * sinA + this.y * cosA;
  return new Vec2(x, y);
};
/***
 *
 * @returns {Vec2}
 */


Vec2.prototype.rotate90 = function () {
  return new Vec2(-this.y, this.x);
};
/***
 *
 * @param {number} angle
 * @returns {Vec2}
 */


Vec2.fromDirection = function (angle) {
  return new Vec2(Math.cos(angle), Math.sin(angle));
};
/***
 *
 * @param x
 * @param y
 * @returns {Vec2}
 */


Vec2.make = function (x, y) {
  if (x instanceof Array) {
    return new Vec2(x[0], x[1]);
  } else if (x instanceof Vec2) {
    return x.copy();
  } else return new Vec2(x, y);
};

var _default = Vec2;
exports["default"] = _default;

/***/ }),

/***/ 3069:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.fileExist = fileExist;
exports.saveAs = saveAs;
exports.saveTextAs = saveTextAs;

var _BrowserDetector = _interopRequireDefault(__webpack_require__(9638));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

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); }

function fileExist(url) {
  var xhr = new XMLHttpRequest();
  xhr.open('HEAD', url, true);
  return new Promise(function (resolve) {
    xhr.onreadystatechange = function () {
      if (this.readyState === 4) {
        resolve(xhr.status === 200);
      }
    };

    xhr.onerror = function (err) {};

    xhr.send();
  });
}
/***
 *
 * @param url
 * @param name
 * @param {FileSaverOpts} opts
 */


function download(url, name, opts) {
  var xhr = new XMLHttpRequest();
  xhr.open('GET', url);
  xhr.responseType = 'blob';

  xhr.onload = function () {
    saveAs(xhr.response, name, opts);
  };

  xhr.onerror = function () {
    console.error('Could not download: ' + url);
  };

  xhr.send(null);
}

function bom(blob, opts) {
  if (_typeof(opts) === undefined) opts = {
    autoBom: false
  };else if (_typeof(opts) !== 'object') opts = {
    autoBom: !opts
  };

  if (opts.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
    return new Blob([String.fromCharCode(0xFEFF), blob], {
      type: blob.type
    });
  }

  return blob;
}

function corsEnabled(url) {
  var xhr = new XMLHttpRequest();
  xhr.open('HEAD', url, false);

  try {
    xhr.send();
  } catch (e) {}

  return xhr.status >= 200 && xhr.status < 299;
}

function click(node) {
  try {
    node.dispatchEvent(new MouseEvent('click'));
  } catch (e) {
    var evt = document.createEvent('MouseEvents');
    evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);
    node.dispatchEvent(evt);
  }
}

function normalSaveAs(blob, name, opts) {
  var URL = window.URL || window.webkitURL;
  var a = document.createElement('a');
  name = name || blob.name || 'download';
  a.download = name;
  a.rel = 'noopener';

  if (typeof blob === 'string') {
    a.href = blob;

    if (a.origin !== location.origin) {
      if (corsEnabled(a.href)) {
        download(blob, name, opts);
      } else {
        a.target = '_blank';
        click(a);
      }
    } else {
      click(a);
    }
  } else {
    a.href = URL.createObjectURL(blob);
    setTimeout(function () {}, opts && opts.revokeTimeout || 4E4);
    setTimeout(function () {
      click(a);
    }, 0);
  }
}

function msSaveAs(blob, name, opts) {
  name = name || blob.name || 'download';

  if (typeof blob === 'string') {
    if (corsEnabled(blob)) {
      download(blob, name, opts);
    } else {
      var a = document.createElement('a');
      a.href = blob;
      a.target = '_blank';
      setTimeout(function () {
        click(a);
      });
    }
  } else {
    navigator.msSaveOrOpenBlob(bom(blob, opts), name);
  }
}

function popupSaveAs(blob, name, opts, popup) {
  if (typeof blob === 'string') {
    download(blob, name, opts);
    return;
  }

  popup = popup || open('', '_blank');

  if (popup) {
    popup.document.title = name || 'download';
    popup.document.body.innerText = "downloading...";
  }

  name = name || blob.name || 'download';
  blob.name = name;
  var force = blob.type === 'application/octet-stream';
  var isSafari = _BrowserDetector["default"].isSafari;
  var isChromeIOS = _BrowserDetector["default"].isChromeIOS;
  var isMacOSWebView = _BrowserDetector["default"].isMacOSWebView;
  var isSafariUnder13 = _BrowserDetector["default"].browser.type === 'safari' && parseFloat(_BrowserDetector["default"].browser.version) < 13;

  if ((!isChromeIOS || force && isSafari || isMacOSWebView) && typeof FileReader !== 'undefined' & !isSafariUnder13) {
    var reader = new FileReader();

    reader.onloadend = function () {
      var url = reader.result;
      url = isChromeIOS ? url : url.replace(/^data:[^;]*/, 'data:attachment/file');
      if (popup) popup.location.href = url;else location = url;
      popup = null;
    };

    reader.readAsDataURL(blob);
  } else {
    var URL = window.URL || window.webkitURL;
    var url = URL.createObjectURL(blob);
    if (popup) popup.location.href = url;else location.href = url;
    popup = null;
    setTimeout(function () {
      URL.revokeObjectURL(blob);
    }, opts && opts.revokeTimeout || 4E4);
  }
}
/***
 *
 * @param {string  | File | Blob}blob
 * @param {string=} name
 * @param {Object=} opts
 * @param {Object=} popup
 */


function saveAs(blob, name, opts, popup) {
  if ((typeof window === "undefined" ? "undefined" : _typeof(window)) !== "object" || window !== self) {
    console.error("FileSaver is not support!");
  } else if ('download' in HTMLAnchorElement.prototype && !_BrowserDetector["default"].isMacOSWebView) {
    normalSaveAs(blob, name, opts);
  } else if ('msSaveOrOpenBlob' in navigator) {
    msSaveAs(blob, name, opts);
  } else {
    setTimeout(function () {
      popupSaveAs(blob, name, opts, popup);
    }, 100);
  }
}

function saveTextAs(text, name, opts) {
  var blob = new Blob([text], {
    type: 'text/plain'
  });
  saveAs(blob, name, opts);
}

/***/ }),

/***/ 3721:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = getFunctionName;

/**
 * 
 * @param {Function} func 
 */
function getFunctionName(func) {
  var ret = func.toString();
  ret = ret.substr('function '.length);
  ret = ret.substr(0, ret.indexOf('('));
  return ret;
}

/***/ }),

/***/ 5788:
/***/ ((module) => {


/*
  MIT License http://www.opensource.org/licenses/mit-license.php
  Author Tobias Koppers @sokra
*/

module.exports = function (cssWithMappingToString) {
  var list = []; // return the list of modules as css string

  list.toString = function toString() {
    return this.map(function (item) {
      var content = "";
      var needLayer = typeof item[5] !== "undefined";

      if (item[4]) {
        content += "@supports (".concat(item[4], ") {");
      }

      if (item[2]) {
        content += "@media ".concat(item[2], " {");
      }

      if (needLayer) {
        content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
      }

      content += cssWithMappingToString(item);

      if (needLayer) {
        content += "}";
      }

      if (item[2]) {
        content += "}";
      }

      if (item[4]) {
        content += "}";
      }

      return content;
    }).join("");
  }; // import a list of modules into the list


  list.i = function i(modules, media, dedupe, supports, layer) {
    if (typeof modules === "string") {
      modules = [[null, modules, undefined]];
    }

    var alreadyImportedModules = {};

    if (dedupe) {
      for (var k = 0; k < this.length; k++) {
        var id = this[k][0];

        if (id != null) {
          alreadyImportedModules[id] = true;
        }
      }
    }

    for (var _k = 0; _k < modules.length; _k++) {
      var item = [].concat(modules[_k]);

      if (dedupe && alreadyImportedModules[item[0]]) {
        continue;
      }

      if (typeof layer !== "undefined") {
        if (typeof item[5] === "undefined") {
          item[5] = layer;
        } else {
          item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
          item[5] = layer;
        }
      }

      if (media) {
        if (!item[2]) {
          item[2] = media;
        } else {
          item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
          item[2] = media;
        }
      }

      if (supports) {
        if (!item[4]) {
          item[4] = "".concat(supports);
        } else {
          item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
          item[4] = supports;
        }
      }

      list.push(item);
    }
  };

  return list;
};

/***/ }),

/***/ 2052:
/***/ ((module) => {



module.exports = function (i) {
  return i[1];
};

/***/ }),

/***/ 2487:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

/**
 * AutoCad files sometimes use an indexed color value between 1 and 255 inclusive.
 * Each value corresponds to a color. index 1 is red, that is 16711680 or 0xFF0000.
 * index 0 and 256, while included in this array, are actually reserved for inheritance
 * values in AutoCad so they should not be used for index color lookups.
 */
var _default = [0, 16711680, 16776960, 65280, 65535, 255, 16711935, 16777215, 8421504, 12632256, 16711680, 16744319, 13369344, 13395558, 10027008, 10046540, 8323072, 8339263, 4980736, 4990502, 16727808, 16752511, 13382400, 13401958, 10036736, 10051404, 8331008, 8343359, 4985600, 4992806, 16744192, 16760703, 13395456, 13408614, 10046464, 10056268, 8339200, 8347455, 4990464, 4995366, 16760576, 16768895, 13408512, 13415014, 10056192, 10061132, 8347392, 8351551, 4995328, 4997670, 16776960, 16777087, 13421568, 13421670, 10000384, 10000460, 8355584, 8355647, 5000192, 5000230, 12582656, 14679935, 10079232, 11717734, 7510016, 8755276, 6258432, 7307071, 3755008, 4344870, 8388352, 12582783, 6736896, 10079334, 5019648, 7510092, 4161280, 6258495, 2509824, 3755046, 4194048, 10485631, 3394560, 8375398, 2529280, 6264908, 2064128, 5209919, 1264640, 3099686, 65280, 8388479, 52224, 6736998, 38912, 5019724, 32512, 4161343, 19456, 2509862, 65343, 8388511, 52275, 6737023, 38950, 5019743, 32543, 4161359, 19475, 2509871, 65407, 8388543, 52326, 6737049, 38988, 5019762, 32575, 4161375, 19494, 2509881, 65471, 8388575, 52377, 6737074, 39026, 5019781, 32607, 4161391, 19513, 2509890, 65535, 8388607, 52428, 6737100, 39064, 5019800, 32639, 4161407, 19532, 2509900, 49151, 8380415, 39372, 6730444, 29336, 5014936, 24447, 4157311, 14668, 2507340, 32767, 8372223, 26316, 6724044, 19608, 5010072, 16255, 4153215, 9804, 2505036, 16383, 8364031, 13260, 6717388, 9880, 5005208, 8063, 4149119, 4940, 2502476, 255, 8355839, 204, 6710988, 152, 5000344, 127, 4145023, 76, 2500172, 4129023, 10452991, 3342540, 8349388, 2490520, 6245528, 2031743, 5193599, 1245260, 3089996, 8323327, 12550143, 6684876, 10053324, 4980888, 7490712, 4128895, 6242175, 2490444, 3745356, 12517631, 14647295, 10027212, 11691724, 7471256, 8735896, 6226047, 7290751, 3735628, 4335180, 16711935, 16744447, 13369548, 13395660, 9961624, 9981080, 8323199, 8339327, 4980812, 4990540, 16711871, 16744415, 13369497, 13395634, 9961586, 9981061, 8323167, 8339311, 4980793, 4990530, 16711807, 16744383, 13369446, 13395609, 9961548, 9981042, 8323135, 8339295, 4980774, 4990521, 16711743, 16744351, 13369395, 13395583, 9961510, 9981023, 8323103, 8339279, 4980755, 4990511, 3355443, 5987163, 8684676, 11382189, 14079702, 16777215];
exports["default"] = _default;

/***/ }),

/***/ 197:
/***/ ((__unused_webpack_module, exports) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

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; }

/**
 * DxfArrayScanner
 *
 * Based off the AutoCad 2012 DXF Reference
 * http://images.autodesk.com/adsk/files/autocad_2012_pdf_dxf-reference_enu.pdf
 *
 * Reads through an array representing lines of a dxf file. Takes an array and
 * provides an easy interface to extract group code and value pairs.
 * @param data - an array where each element represents a line in the dxf file
 * @constructor
 */
var DxfArrayScanner = /*#__PURE__*/function () {
  function DxfArrayScanner(data) {
    _classCallCheck(this, DxfArrayScanner);

    this._pointer = 0;
    this._eof = false;
    this._data = data;
  }
  /**
   * Gets the next group (code, value) from the array. A group is two consecutive elements
   * in the array. The first is the code, the second is the value.
   * @returns {{code: Number}|*}
   */


  _createClass(DxfArrayScanner, [{
    key: "next",
    value: function next() {
      if (!this.hasNext()) {
        if (!this._eof) throw new Error('Unexpected end of input: EOF group not read before end of file. Ended on code ' + this._data[this._pointer]);else throw new Error('Cannot call \'next\' after EOF group has been read');
      }

      var group = {
        code: parseInt(this._data[this._pointer])
      };
      this._pointer++;
      group.value = parseGroupValue(group.code, this._data[this._pointer].trim());
      this._pointer++;
      if (group.code === 0 && group.value === 'EOF') this._eof = true;
      this.lastReadGroup = group;
      return group;
    }
  }, {
    key: "peek",
    value: function peek() {
      if (!this.hasNext()) {
        if (!this._eof) throw new Error('Unexpected end of input: EOF group not read before end of file. Ended on code ' + this._data[this._pointer]);else throw new Error('Cannot call \'next\' after EOF group has been read');
      }

      var group = {
        code: parseInt(this._data[this._pointer])
      };
      group.value = parseGroupValue(group.code, this._data[this._pointer + 1].trim());
      return group;
    }
  }, {
    key: "rewind",
    value: function rewind() {
      var numberOfGroups = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
      this._pointer = this._pointer - numberOfGroups * 2;
    }
    /**
     * Returns true if there is another code/value pair (2 elements in the array).
     * @returns {boolean}
     */

  }, {
    key: "hasNext",
    value: function hasNext() {
      // Check if we have read EOF group code
      if (this._eof) {
        return false;
      } // We need to be sure there are two lines available


      if (this._pointer > this._data.length - 2) {
        return false;
      }

      return true;
    }
    /**
     * Returns true if the scanner is at the end of the array
     * @returns {boolean}
     */

  }, {
    key: "isEOF",
    value: function isEOF() {
      return this._eof;
    }
  }]);

  return DxfArrayScanner;
}();
/**
 * Parse a value to its proper type.
 * See pages 3 - 10 of the AutoCad DXF 2012 reference given at the top of this file
 *
 * @param code
 * @param value
 * @returns {*}
 */


exports["default"] = DxfArrayScanner;

function parseGroupValue(code, value) {
  if (code <= 9) return value;
  if (code >= 10 && code <= 59) return parseFloat(value);
  if (code >= 60 && code <= 99) return parseInt(value);
  if (code >= 100 && code <= 109) return value;
  if (code >= 110 && code <= 149) return parseFloat(value);
  if (code >= 160 && code <= 179) return parseInt(value);
  if (code >= 210 && code <= 239) return parseFloat(value);
  if (code >= 270 && code <= 289) return parseInt(value);
  if (code >= 290 && code <= 299) return parseBoolean(value);
  if (code >= 300 && code <= 369) return value;
  if (code >= 370 && code <= 389) return parseInt(value);
  if (code >= 390 && code <= 399) return value;
  if (code >= 400 && code <= 409) return parseInt(value);
  if (code >= 410 && code <= 419) return value;
  if (code >= 420 && code <= 429) return parseInt(value);
  if (code >= 430 && code <= 439) return value;
  if (code >= 440 && code <= 459) return parseInt(value);
  if (code >= 460 && code <= 469) return parseFloat(value);
  if (code >= 470 && code <= 481) return value;
  if (code === 999) return value;
  if (code >= 1000 && code <= 1009) return value;
  if (code >= 1010 && code <= 1059) return parseFloat(value);
  if (code >= 1060 && code <= 1071) return parseInt(value);
  console.log('WARNING: Group code does not have a defined type: %j', {
    code: code,
    value: value
  });
  return value;
}
/**
 * Parse a boolean according to a 1 or 0 value
 * @param str
 * @returns {boolean}
 */


function parseBoolean(str) {
  if (str === '0') return false;
  if (str === '1') return true;
  throw TypeError('String \'' + str + '\' cannot be cast to Boolean type');
}

/***/ }),

/***/ 9379:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var _DxfArrayScanner = _interopRequireDefault(__webpack_require__(197));

var _AutoCadColorIndex = _interopRequireDefault(__webpack_require__(2487));

var _dface = _interopRequireDefault(__webpack_require__(8030));

var _arc = _interopRequireDefault(__webpack_require__(6414));

var _attdef = _interopRequireDefault(__webpack_require__(8846));

var _circle = _interopRequireDefault(__webpack_require__(1336));

var _dimension = _interopRequireDefault(__webpack_require__(2970));

var _ellipse = _interopRequireDefault(__webpack_require__(1370));

var _insert = _interopRequireDefault(__webpack_require__(3618));

var _line = _interopRequireDefault(__webpack_require__(9414));

var _lwpolyline = _interopRequireDefault(__webpack_require__(1272));

var _mtext = _interopRequireDefault(__webpack_require__(5085));

var _point = _interopRequireDefault(__webpack_require__(2558));

var _polyline = _interopRequireDefault(__webpack_require__(828));

var _solid = _interopRequireDefault(__webpack_require__(1534));

var _spline = _interopRequireDefault(__webpack_require__(2724));

var _text = _interopRequireDefault(__webpack_require__(7508));

var _loglevel = _interopRequireDefault(__webpack_require__(2371));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

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); }

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; }

//log.setLevel('trace');
//log.setLevel('debug');
//log.setLevel('info');
//log.setLevel('warn');
_loglevel["default"].setLevel('error');

function registerDefaultEntityHandlers(dxfParser) {
  // Supported entities here (some entity code is still being refactored into this flow)
  dxfParser.registerEntityHandler(_dface["default"]);
  dxfParser.registerEntityHandler(_arc["default"]);
  dxfParser.registerEntityHandler(_attdef["default"]);
  dxfParser.registerEntityHandler(_circle["default"]);
  dxfParser.registerEntityHandler(_dimension["default"]);
  dxfParser.registerEntityHandler(_ellipse["default"]);
  dxfParser.registerEntityHandler(_insert["default"]);
  dxfParser.registerEntityHandler(_line["default"]);
  dxfParser.registerEntityHandler(_lwpolyline["default"]);
  dxfParser.registerEntityHandler(_mtext["default"]);
  dxfParser.registerEntityHandler(_point["default"]);
  dxfParser.registerEntityHandler(_polyline["default"]);
  dxfParser.registerEntityHandler(_solid["default"]);
  dxfParser.registerEntityHandler(_spline["default"]);
  dxfParser.registerEntityHandler(_text["default"]); //dxfParser.registerEntityHandler(require('./entities/vertex'));
}

var DxfParser = /*#__PURE__*/function () {
  function DxfParser() {
    _classCallCheck(this, DxfParser);

    this._entityHandlers = {};
    registerDefaultEntityHandlers(this);
  }

  _createClass(DxfParser, [{
    key: "parse",
    value: function parse(source) {
      if (typeof source === 'string') {
        return this._parse(source);
      } else {
        console.error('Cannot read dxf source of type `' + _typeof(source));
        return null;
      }
    }
  }, {
    key: "registerEntityHandler",
    value: function registerEntityHandler(handlerType) {
      var instance = new handlerType();
      this._entityHandlers[instance.ForEntityName] = instance;
    }
  }, {
    key: "parseSync",
    value: function parseSync(source) {
      return this.parse(source);
    }
  }, {
    key: "parseStream",
    value: function parseStream(stream) {
      var dxfString = "";
      var self = this;
      return new Promise(function (res, rej) {
        stream.on('data', function (chunk) {
          dxfString += chunk;
        });
        stream.on('end', function () {
          try {
            res(self._parse(dxfString));
          } catch (err) {
            rej(err);
          }
        });
        stream.on('error', function (err) {
          rej(err);
        });
      });
    }
  }, {
    key: "_parse",
    value: function _parse(dxfString) {
      var dxf = {};
      var lastHandle = 0;
      var dxfLinesArray = dxfString.split(/\r\n|\r|\n/g);
      var scanner = new _DxfArrayScanner["default"](dxfLinesArray);
      if (!scanner.hasNext()) throw Error('Empty file');
      var self = this;
      var curr;

      function parseAll() {
        curr = scanner.next();

        while (!scanner.isEOF()) {
          if (curr.code === 0 && curr.value === 'SECTION') {
            curr = scanner.next(); // Be sure we are reading a section code

            if (curr.code !== 2) {
              console.error('Unexpected code %s after 0:SECTION', debugCode(curr));
              curr = scanner.next();
              continue;
            }

            if (curr.value === 'HEADER') {
              _loglevel["default"].debug('> HEADER');

              dxf.header = parseHeader();

              _loglevel["default"].debug('<');
            } else if (curr.value === 'BLOCKS') {
              _loglevel["default"].debug('> BLOCKS');

              dxf.blocks = parseBlocks();

              _loglevel["default"].debug('<');
            } else if (curr.value === 'ENTITIES') {
              _loglevel["default"].debug('> ENTITIES');

              dxf.entities = parseEntities(false);

              _loglevel["default"].debug('<');
            } else if (curr.value === 'TABLES') {
              _loglevel["default"].debug('> TABLES');

              dxf.tables = parseTables();

              _loglevel["default"].debug('<');
            } else if (curr.value === 'EOF') {
              _loglevel["default"].debug('EOF');
            } else {
              _loglevel["default"].warn('Skipping section \'%s\'', curr.value);
            }
          } else {
            curr = scanner.next();
          } // If is a new section

        }
      }
      /**
       *
       * @return {object} header
       */


      function parseHeader() {
        // interesting variables:
        //  $ACADVER, $VIEWDIR, $VIEWSIZE, $VIEWCTR, $TDCREATE, $TDUPDATE
        // http://www.autodesk.com/techpubs/autocad/acadr14/dxf/header_section_al_u05_c.htm
        // Also see VPORT table entries
        var currVarName = null;
        var currVarValue = null;
        var header = {}; // loop through header variables

        curr = scanner.next();

        while (true) {
          if (groupIs(curr, 0, 'ENDSEC')) {
            if (currVarName) header[currVarName] = currVarValue;
            break;
          } else if (curr.code === 9) {
            if (currVarName) header[currVarName] = currVarValue;
            currVarName = curr.value; // Filter here for particular variables we are interested in
          } else {
            if (curr.code === 10) {
              currVarValue = {
                x: curr.value
              };
            } else if (curr.code === 20) {
              currVarValue.y = curr.value;
            } else if (curr.code === 30) {
              currVarValue.z = curr.value;
            } else {
              currVarValue = curr.value;
            }
          }

          curr = scanner.next();
        } // console.log(util.inspect(header, { colors: true, depth: null }));


        curr = scanner.next(); // swallow up ENDSEC

        return header;
      }
      /**
       *
       */


      function parseBlocks() {
        var blocks = {};
        curr = scanner.next();

        while (curr.value !== 'EOF') {
          if (groupIs(curr, 0, 'ENDSEC')) {
            break;
          }

          if (groupIs(curr, 0, 'BLOCK')) {
            _loglevel["default"].debug('block {');

            var block = parseBlock();

            _loglevel["default"].debug('}');

            ensureHandle(block);
            if (!block.name) _loglevel["default"].error('block with handle "' + block.handle + '" is missing a name.');else blocks[block.name] = block;
          } else {
            logUnhandledGroup(curr);
            curr = scanner.next();
          }
        }

        return blocks;
      }

      function parseBlock() {
        var block = {};
        curr = scanner.next();

        while (curr.value !== 'EOF') {
          switch (curr.code) {
            case 1:
              block.xrefPath = curr.value;
              curr = scanner.next();
              break;

            case 2:
              block.name = curr.value;
              curr = scanner.next();
              break;

            case 3:
              block.name2 = curr.value;
              curr = scanner.next();
              break;

            case 5:
              block.handle = curr.value;
              curr = scanner.next();
              break;

            case 8:
              block.layer = curr.value;
              curr = scanner.next();
              break;

            case 10:
              block.position = parsePoint(curr);
              curr = scanner.next();
              break;

            case 67:
              block.paperSpace = curr.value && curr.value == 1 ? true : false;
              curr = scanner.next();
              break;

            case 70:
              if (curr.value != 0) {
                //if(curr.value & BLOCK_ANONYMOUS_FLAG) console.log('  Anonymous block');
                //if(curr.value & BLOCK_NON_CONSTANT_FLAG) console.log('  Non-constant attributes');
                //if(curr.value & BLOCK_XREF_FLAG) console.log('  Is xref');
                //if(curr.value & BLOCK_XREF_OVERLAY_FLAG) console.log('  Is xref overlay');
                //if(curr.value & BLOCK_EXTERNALLY_DEPENDENT_FLAG) console.log('  Is externally dependent');
                //if(curr.value & BLOCK_RESOLVED_OR_DEPENDENT_FLAG) console.log('  Is resolved xref or dependent of an xref');
                //if(curr.value & BLOCK_REFERENCED_XREF) console.log('  This definition is a referenced xref');
                block.type = curr.value;
              }

              curr = scanner.next();
              break;

            case 100:
              // ignore class markers
              curr = scanner.next();
              break;

            case 330:
              block.ownerHandle = curr.value;
              curr = scanner.next();
              break;

            case 0:
              if (curr.value == 'ENDBLK') break;
              block.entities = parseEntities(true);
              break;

            default:
              logUnhandledGroup(curr);
              curr = scanner.next();
          }

          if (groupIs(curr, 0, 'ENDBLK')) {
            curr = scanner.next();
            break;
          }
        }

        return block;
      }
      /**
       * parseTables
       * @return {Object} Object representing tables
       */


      function parseTables() {
        var tables = {};
        curr = scanner.next();

        while (curr.value !== 'EOF') {
          if (groupIs(curr, 0, 'ENDSEC')) break;

          if (groupIs(curr, 0, 'TABLE')) {
            curr = scanner.next();
            var tableDefinition = tableDefinitions[curr.value];

            if (tableDefinition) {
              _loglevel["default"].debug(curr.value + ' Table {');

              tables[tableDefinitions[curr.value].tableName] = parseTable(curr);

              _loglevel["default"].debug('}');
            } else {
              _loglevel["default"].debug('Unhandled Table ' + curr.value);
            }
          } else {
            // else ignored
            curr = scanner.next();
          }
        }

        curr = scanner.next();
        return tables;
      }

      var END_OF_TABLE_VALUE = 'ENDTAB';

      function parseTable(group) {
        var tableDefinition = tableDefinitions[group.value];
        var table = {};
        var expectedCount = 0;
        curr = scanner.next();

        while (!groupIs(curr, 0, END_OF_TABLE_VALUE)) {
          switch (curr.code) {
            case 5:
              table.handle = curr.value;
              curr = scanner.next();
              break;

            case 330:
              table.ownerHandle = curr.value;
              curr = scanner.next();
              break;

            case 100:
              if (curr.value === 'AcDbSymbolTable') {
                // ignore
                curr = scanner.next();
              } else {
                logUnhandledGroup(curr);
                curr = scanner.next();
              }

              break;

            case 70:
              expectedCount = curr.value;
              curr = scanner.next();
              break;

            case 0:
              if (curr.value === tableDefinition.dxfSymbolName) {
                table[tableDefinition.tableRecordsProperty] = tableDefinition.parseTableRecords();
              } else {
                logUnhandledGroup(curr);
                curr = scanner.next();
              }

              break;

            default:
              logUnhandledGroup(curr);
              curr = scanner.next();
          }
        }

        var tableRecords = table[tableDefinition.tableRecordsProperty];

        if (tableRecords) {
          var actualCount = function () {
            if (tableRecords.constructor === Array) {
              return tableRecords.length;
            } else if (_typeof(tableRecords) === 'object') {
              return Object.keys(tableRecords).length;
            }

            return undefined;
          }();

          if (expectedCount !== actualCount) _loglevel["default"].warn('Parsed ' + actualCount + ' ' + tableDefinition.dxfSymbolName + '\'s but expected ' + expectedCount);
        }

        curr = scanner.next();
        return table;
      }

      function parseViewPortRecords() {
        var viewPorts = []; // Multiple table entries may have the same name indicating a multiple viewport configuration

        var viewPort = {};

        _loglevel["default"].debug('ViewPort {');

        curr = scanner.next();

        while (!groupIs(curr, 0, END_OF_TABLE_VALUE)) {
          switch (curr.code) {
            case 2:
              // layer name
              viewPort.name = curr.value;
              curr = scanner.next();
              break;

            case 10:
              viewPort.lowerLeftCorner = parsePoint(curr);
              curr = scanner.next();
              break;

            case 11:
              viewPort.upperRightCorner = parsePoint(curr);
              curr = scanner.next();
              break;

            case 12:
              viewPort.center = parsePoint(curr);
              curr = scanner.next();
              break;

            case 13:
              viewPort.snapBasePoint = parsePoint(curr);
              curr = scanner.next();
              break;

            case 14:
              viewPort.snapSpacing = parsePoint(curr);
              curr = scanner.next();
              break;

            case 15:
              viewPort.gridSpacing = parsePoint(curr);
              curr = scanner.next();
              break;

            case 16:
              viewPort.viewDirectionFromTarget = parsePoint(curr);
              curr = scanner.next();
              break;

            case 17:
              viewPort.viewTarget = parsePoint(curr);
              curr = scanner.next();
              break;

            case 42:
              viewPort.lensLength = curr.value;
              curr = scanner.next();
              break;

            case 43:
              viewPort.frontClippingPlane = curr.value;
              curr = scanner.next();
              break;

            case 44:
              viewPort.backClippingPlane = curr.value;
              curr = scanner.next();
              break;

            case 45:
              viewPort.viewHeight = curr.value;
              curr = scanner.next();
              break;

            case 50:
              viewPort.snapRotationAngle = curr.value;
              curr = scanner.next();
              break;

            case 51:
              viewPort.viewTwistAngle = curr.value;
              curr = scanner.next();
              break;

            case 79:
              viewPort.orthographicType = curr.value;
              curr = scanner.next();
              break;

            case 110:
              viewPort.ucsOrigin = parsePoint(curr);
              curr = scanner.next();
              break;

            case 111:
              viewPort.ucsXAxis = parsePoint(curr);
              curr = scanner.next();
              break;

            case 112:
              viewPort.ucsYAxis = parsePoint(curr);
              curr = scanner.next();
              break;

            case 110:
              viewPort.ucsOrigin = parsePoint(curr);
              curr = scanner.next();
              break;

            case 281:
              viewPort.renderMode = curr.value;
              curr = scanner.next();
              break;

            case 281:
              // 0 is one distant light, 1 is two distant lights
              viewPort.defaultLightingType = curr.value;
              curr = scanner.next();
              break;

            case 292:
              viewPort.defaultLightingOn = curr.value;
              curr = scanner.next();
              break;

            case 330:
              viewPort.ownerHandle = curr.value;
              curr = scanner.next();
              break;

            case 63: // These are all ambient color. Perhaps should be a gradient when multiple are set.

            case 421:
            case 431:
              viewPort.ambientColor = curr.value;
              curr = scanner.next();
              break;

            case 0:
              // New ViewPort
              if (curr.value === 'VPORT') {
                _loglevel["default"].debug('}');

                viewPorts.push(viewPort);

                _loglevel["default"].debug('ViewPort {');

                viewPort = {};
                curr = scanner.next();
              }

              break;

            default:
              logUnhandledGroup(curr);
              curr = scanner.next();
              break;
          }
        } // Note: do not call scanner.next() here,
        //  parseTable() needs the current group


        _loglevel["default"].debug('}');

        viewPorts.push(viewPort);
        return viewPorts;
      }

      function parseLineTypes() {
        var ltypes = {};
        var ltype = {};
        var length = 0;
        var ltypeName;

        _loglevel["default"].debug('LType {');

        curr = scanner.next();

        while (!groupIs(curr, 0, 'ENDTAB')) {
          switch (curr.code) {
            case 2:
              ltype.name = curr.value;
              ltypeName = curr.value;
              curr = scanner.next();
              break;

            case 3:
              ltype.description = curr.value;
              curr = scanner.next();
              break;

            case 73:
              // Number of elements for this line type (dots, dashes, spaces);
              length = curr.value;
              if (length > 0) ltype.pattern = [];
              curr = scanner.next();
              break;

            case 40:
              // total pattern length
              ltype.patternLength = curr.value;
              curr = scanner.next();
              break;

            case 49:
              ltype.pattern.push(curr.value);
              curr = scanner.next();
              break;

            case 0:
              _loglevel["default"].debug('}');

              if (length > 0 && length !== ltype.pattern.length) _loglevel["default"].warn('lengths do not match on LTYPE pattern');
              ltypes[ltypeName] = ltype;
              ltype = {};

              _loglevel["default"].debug('LType {');

              curr = scanner.next();
              break;

            default:
              curr = scanner.next();
          }
        }

        _loglevel["default"].debug('}');

        ltypes[ltypeName] = ltype;
        return ltypes;
      }

      function parseLayers() {
        var layers = {};
        var layer = {};
        var layerName;

        _loglevel["default"].debug('Layer {');

        curr = scanner.next();

        while (!groupIs(curr, 0, 'ENDTAB')) {
          switch (curr.code) {
            case 2:
              // layer name
              layer.name = curr.value;
              layerName = curr.value;
              curr = scanner.next();
              break;

            case 62:
              // color, visibility
              layer.visible = curr.value >= 0; // TODO 0 and 256 are BYBLOCK and BYLAYER respectively. Need to handle these values for layers?.

              layer.colorIndex = Math.abs(curr.value);
              layer.color = getAcadColor(layer.colorIndex);
              curr = scanner.next();
              break;

            case 70:
              // frozen layer
              layer.frozen = (curr.value & 1) != 0 || (curr.value & 2) != 0;
              curr = scanner.next();
              break;

            case 0:
              // New Layer
              if (curr.value === 'LAYER') {
                _loglevel["default"].debug('}');

                layers[layerName] = layer;

                _loglevel["default"].debug('Layer {');

                layer = {};
                layerName = undefined;
                curr = scanner.next();
              }

              break;

            default:
              logUnhandledGroup(curr);
              curr = scanner.next();
              break;
          }
        } // Note: do not call scanner.next() here,
        //  parseLayerTable() needs the current group


        _loglevel["default"].debug('}');

        layers[layerName] = layer;
        return layers;
      }

      var tableDefinitions = {
        VPORT: {
          tableRecordsProperty: 'viewPorts',
          tableName: 'viewPort',
          dxfSymbolName: 'VPORT',
          parseTableRecords: parseViewPortRecords
        },
        LTYPE: {
          tableRecordsProperty: 'lineTypes',
          tableName: 'lineType',
          dxfSymbolName: 'LTYPE',
          parseTableRecords: parseLineTypes
        },
        LAYER: {
          tableRecordsProperty: 'layers',
          tableName: 'layer',
          dxfSymbolName: 'LAYER',
          parseTableRecords: parseLayers
        }
      };
      /**
       * Is called after the parser first reads the 0:ENTITIES group. The scanner
       * should be on the start of the first entity already.
       * @return {Array} the resulting entities
       */

      function parseEntities(forBlock) {
        var entities = [];
        var endingOnValue = forBlock ? 'ENDBLK' : 'ENDSEC';

        if (!forBlock) {
          curr = scanner.next();
        }

        while (true) {
          if (curr.code === 0) {
            if (curr.value === endingOnValue) {
              break;
            }

            var handler = self._entityHandlers[curr.value];

            if (handler != null) {
              _loglevel["default"].debug(curr.value + ' {');

              var entity = handler.parseEntity(scanner, curr);
              curr = scanner.lastReadGroup;

              _loglevel["default"].debug('}');

              ensureHandle(entity);
              entities.push(entity);
            } else {
              _loglevel["default"].warn('Unhandled entity ' + curr.value);

              curr = scanner.next();
              continue;
            }
          } else {
            // ignored lines from unsupported entity
            curr = scanner.next();
          }
        }

        if (endingOnValue == 'ENDSEC') curr = scanner.next(); // swallow up ENDSEC, but not ENDBLK

        return entities;
      }
      /**
       * Parses a 2D or 3D point, returning it as an object with x, y, and
       * (sometimes) z property if it is 3D. It is assumed the current group
       * is x of the point being read in, and scanner.next() will return the
       * y. The parser will determine if there is a z point automatically.
       * @return {Object} The 2D or 3D point as an object with x, y[, z]
       */


      function parsePoint(curr) {
        var point = {};
        var code = curr.code;
        point.x = curr.value;
        code += 10;
        curr = scanner.next();
        if (curr.code != code) throw new Error('Expected code for point value to be ' + code + ' but got ' + curr.code + '.');
        point.y = curr.value;
        code += 10;
        curr = scanner.next();

        if (curr.code != code) {
          scanner.rewind();
          return point;
        }

        point.z = curr.value;
        return point;
      }

      function ensureHandle(entity) {
        if (!entity) throw new TypeError('entity cannot be undefined or null');
        if (!entity.handle) entity.handle = lastHandle++;
      }

      parseAll();
      return dxf;
    }
  }]);

  return DxfParser;
}();

exports["default"] = DxfParser;

function groupIs(group, code, value) {
  return group.code === code && group.value === value;
}

function logUnhandledGroup(curr) {
  _loglevel["default"].debug('unhandled group ' + debugCode(curr));
}

function debugCode(curr) {
  return curr.code + ':' + curr.value;
}
/**
 * Returns the truecolor value of the given AutoCad color index value
 * @return {Number} truecolor value as a number
 */


function getAcadColor(index) {
  return _AutoCadColorIndex["default"][index];
} // const BLOCK_ANONYMOUS_FLAG = 1;
// const BLOCK_NON_CONSTANT_FLAG = 2;
// const BLOCK_XREF_FLAG = 4;
// const BLOCK_XREF_OVERLAY_FLAG = 8;
// const BLOCK_EXTERNALLY_DEPENDENT_FLAG = 16;
// const BLOCK_RESOLVED_OR_DEPENDENT_FLAG = 32;
// const BLOCK_REFERENCED_XREF = 64;

/* Notes */
// Code 6 of an entity indicates inheritance of properties (eg. color).
//   BYBLOCK means inherits from block
//   BYLAYER (default) mean inherits from layer

/***/ }),

/***/ 1164:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.checkCommonEntityProperties = checkCommonEntityProperties;
exports.getAcadColor = getAcadColor;
exports.parsePoint = parsePoint;

var _AutoCadColorIndex = _interopRequireDefault(__webpack_require__(2487));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/**
 * Returns the truecolor value of the given AutoCad color index value
 * @return {Number} truecolor value as a number
 */
function getAcadColor(index) {
  return _AutoCadColorIndex["default"][index];
}
/**
 * Parses the 2D or 3D coordinate, vector, or point. When complete,
 * the scanner remains on the last group of the coordinate.
 * @param {*} scanner
 */


function parsePoint(scanner) {
  var point = {}; // Reread group for the first coordinate

  scanner.rewind();
  var curr = scanner.next();
  var code = curr.code;
  point.x = curr.value;
  code += 10;
  curr = scanner.next();
  if (curr.code != code) throw new Error('Expected code for point value to be ' + code + ' but got ' + curr.code + '.');
  point.y = curr.value;
  code += 10;
  curr = scanner.next();

  if (curr.code != code) {
    // Only the x and y are specified. Don't read z.
    scanner.rewind(); // Let the calling code advance off the point

    return point;
  }

  point.z = curr.value;
  return point;
}
/**
 * Attempts to parse codes common to all entities. Returns true if the group
 * was handled by this function.
 * @param {*} entity - the entity currently being parsed
 * @param {*} curr - the current group being parsed
 */


function checkCommonEntityProperties(entity, curr, scanner) {
  switch (curr.code) {
    case 0:
      entity.type = curr.value;
      break;

    case 5:
      entity.handle = curr.value;
      break;

    case 6:
      entity.lineType = curr.value;
      break;

    case 8:
      // Layer name
      entity.layer = curr.value;
      break;

    case 48:
      entity.lineTypeScale = curr.value;
      break;

    case 60:
      entity.visible = curr.value === 0;
      break;

    case 62:
      // Acad Index Color. 0 inherits ByBlock. 256 inherits ByLayer. Default is bylayer
      entity.colorIndex = curr.value;
      entity.color = getAcadColor(Math.abs(curr.value));
      break;

    case 67:
      entity.inPaperSpace = curr.value !== 0;
      break;

    case 100:
      //ignore
      break;

    case 101:
      // Embedded Object in ACAD 2018.
      // See https://ezdxf.readthedocs.io/en/master/dxfinternals/dxftags.html#embedded-objects
      while (curr.code != 0) {
        curr = scanner.next();
      }

      scanner.rewind();
      break;

    case 330:
      entity.ownerHandle = curr.value;
      break;

    case 347:
      entity.materialObjectHandle = curr.value;
      break;

    case 370:
      //From https://www.woutware.com/Forum/Topic/955/lineweight?returnUrl=%2FForum%2FUserPosts%3FuserId%3D478262319
      // An integer representing 100th of mm, must be one of the following values:
      // 0, 5, 9, 13, 15, 18, 20, 25, 30, 35, 40, 50, 53, 60, 70, 80, 90, 100, 106, 120, 140, 158, 200, 211.
      // -3 = STANDARD, -2 = BYLAYER, -1 = BYBLOCK
      entity.lineweight = curr.value;
      break;

    case 420:
      // TrueColor Color
      entity.color = curr.value;
      break;

    case 1000:
      entity.extendedData = entity.extendedData || {};
      entity.extendedData.customStrings = entity.extendedData.customStrings || [];
      entity.extendedData.customStrings.push(curr.value);
      break;

    case 1001:
      entity.extendedData = entity.extendedData || {};
      entity.extendedData.applicationName = curr.value;
      break;

    default:
      return false;
  }

  return true;
}

/***/ }),

/***/ 8030:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var ThreeDface = /*#__PURE__*/function () {
  function ThreeDface() {
    _classCallCheck(this, ThreeDface);

    this.ForEntityName = '3DFACE';
  }

  _createClass(ThreeDface, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value,
        vertices: []
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 70:
            // 1 = Closed shape, 128 = plinegen?, 0 = default
            entity.shape = (curr.value & 1) === 1;
            entity.hasContinuousLinetypePattern = (curr.value & 128) === 128;
            break;

          case 10:
            // X coordinate of point
            entity.vertices = parse3dFaceVertices(scanner, curr);
            curr = scanner.lastReadGroup;
            break;

          default:
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return ThreeDface;
}();

exports["default"] = ThreeDface;

function parse3dFaceVertices(scanner, curr) {
  var vertices = [];
  var vertexIsStarted = false;
  var vertexIsFinished = false;
  var verticesPer3dFace = 4; // there can be up to four vertices per face, although 3 is most used for TIN

  for (var i = 0; i <= verticesPer3dFace; i++) {
    var vertex = {};

    while (!scanner.isEOF()) {
      if (curr.code === 0 || vertexIsFinished) break;

      switch (curr.code) {
        case 10: // X0

        case 11: // X1

        case 12: // X2

        case 13:
          // X3
          if (vertexIsStarted) {
            vertexIsFinished = true;
            continue;
          }

          vertex.x = curr.value;
          vertexIsStarted = true;
          break;

        case 20: // Y

        case 21:
        case 22:
        case 23:
          vertex.y = curr.value;
          break;

        case 30: // Z

        case 31:
        case 32:
        case 33:
          vertex.z = curr.value;
          break;

        default:
          // it is possible to have entity codes after the vertices.  
          // So if code is not accounted for return to entity parser where it might be accounted for
          return vertices;
      }

      curr = scanner.next();
    } // See https://groups.google.com/forum/#!topic/comp.cad.autocad/9gn8s5O_w6E


    vertices.push(vertex);
    vertexIsStarted = false;
    vertexIsFinished = false;
  }

  scanner.rewind();
  return vertices;
}

;

/***/ }),

/***/ 6414:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Arc = /*#__PURE__*/function () {
  function Arc() {
    _classCallCheck(this, Arc);

    this.ForEntityName = 'ARC';
  }

  _createClass(Arc, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 10:
            // X coordinate of point
            entity.center = helpers.parsePoint(scanner);
            break;

          case 40:
            // radius
            entity.radius = curr.value;
            break;

          case 50:
            // start angle
            entity.startAngle = Math.PI / 180 * curr.value;
            break;

          case 51:
            // end angle
            entity.endAngle = Math.PI / 180 * curr.value;
            entity.angleLength = entity.endAngle - entity.startAngle; // angleLength is deprecated

            break;

          case 210:
            entity.extrusionDirectionX = curr.value;
            break;

          case 220:
            entity.extrusionDirectionY = curr.value;
            break;

          case 230:
            entity.extrusionDirectionZ = curr.value;
            break;

          default:
            // ignored attribute
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Arc;
}();

exports["default"] = Arc;

/***/ }),

/***/ 8846:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Attdef = /*#__PURE__*/function () {
  function Attdef() {
    _classCallCheck(this, Attdef);

    this.ForEntityName = 'ATTDEF';
  }

  _createClass(Attdef, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value,
        scale: 1,
        textStyle: 'STANDARD'
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) {
          break;
        }

        switch (curr.code) {
          case 1:
            entity.text = curr.value;
            break;

          case 2:
            entity.tag = curr.value;
            break;

          case 3:
            entity.prompt = curr.value;
            break;

          case 7:
            entity.textStyle = curr.value;
            break;

          case 10:
            // X coordinate of 'first alignment point'
            entity.startPoint = helpers.parsePoint(scanner);
            break;

          case 11:
            // X coordinate of 'second alignment point'
            entity.endPoint = helpers.parsePoint(scanner);
            break;

          case 39:
            entity.thickness = curr.value;
            break;

          case 40:
            entity.textHeight = curr.value;
            break;

          case 41:
            entity.scale = curr.value;
            break;

          case 50:
            entity.rotation = curr.value;
            break;

          case 51:
            entity.obliqueAngle = curr.value;
            break;

          case 70:
            entity.invisible = !!(curr.value & 0x01);
            entity.constant = !!(curr.value & 0x02);
            entity.verificationRequired = !!(curr.value & 0x04);
            entity.preset = !!(curr.value & 0x08);
            break;

          case 71:
            entity.backwards = !!(curr.value & 0x02);
            entity.mirrored = !!(curr.value & 0x04);
            break;

          case 72:
            // TODO: enum values?
            entity.horizontalJustification = curr.value;
            break;

          case 73:
            entity.fieldLength = curr.value;
            break;

          case 74:
            // TODO: enum values?
            entity.verticalJustification = curr.value;
            break;

          case 100:
            break;

          case 210:
            entity.extrusionDirectionX = curr.value;
            break;

          case 220:
            entity.extrusionDirectionY = curr.value;
            break;

          case 230:
            entity.extrusionDirectionZ = curr.value;
            break;

          default:
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Attdef;
}();

exports["default"] = Attdef;

/***/ }),

/***/ 1336:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Circle = /*#__PURE__*/function () {
  function Circle() {
    _classCallCheck(this, Circle);

    this.ForEntityName = 'CIRCLE';
  }

  _createClass(Circle, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 10:
            // X coordinate of point
            entity.center = helpers.parsePoint(scanner);
            break;

          case 40:
            // radius
            entity.radius = curr.value;
            break;

          case 50:
            // start angle
            entity.startAngle = Math.PI / 180 * curr.value;
            break;

          case 51:
            // end angle
            var endAngle = Math.PI / 180 * curr.value;
            if (endAngle < entity.startAngle) entity.angleLength = endAngle + 2 * Math.PI - entity.startAngle;else entity.angleLength = endAngle - entity.startAngle;
            entity.endAngle = endAngle;
            break;

          default:
            // ignored attribute
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Circle;
}();

exports["default"] = Circle;

/***/ }),

/***/ 2970:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Dimension = /*#__PURE__*/function () {
  function Dimension() {
    _classCallCheck(this, Dimension);

    this.ForEntityName = 'DIMENSION';
  }

  _createClass(Dimension, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 2:
            // Referenced block name
            entity.block = curr.value;
            break;

          case 10:
            // X coordinate of 'first alignment point'
            entity.anchorPoint = helpers.parsePoint(scanner);
            break;

          case 11:
            entity.middleOfText = helpers.parsePoint(scanner);
            break;

          case 12:
            // Insertion point for clones of a dimension
            entity.insertionPoint = helpers.parsePoint(scanner);
            break;

          case 13:
            // Definition point for linear and angular dimensions 
            entity.linearOrAngularPoint1 = helpers.parsePoint(scanner);
            break;

          case 14:
            // Definition point for linear and angular dimensions 
            entity.linearOrAngularPoint2 = helpers.parsePoint(scanner);
            break;

          case 15:
            // Definition point for diameter, radius, and angular dimensions
            entity.diameterOrRadiusPoint = helpers.parsePoint(scanner);
            break;

          case 16:
            // Point defining dimension arc for angular dimensions
            entity.arcPoint = helpers.parsePoint(scanner);
            break;

          case 70:
            // Dimension type
            entity.dimensionType = curr.value;
            break;

          case 71:
            // 5 = Middle center
            entity.attachmentPoint = curr.value;
            break;

          case 42:
            // Actual measurement
            entity.actualMeasurement = curr.value;
            break;

          case 1:
            // Text entered by user explicitly
            entity.text = curr.value;
            break;

          case 50:
            // Angle of rotated, horizontal, or vertical dimensions
            entity.angle = curr.value;
            break;

          default:
            // check common entity attributes
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Dimension;
}();

exports["default"] = Dimension;

/***/ }),

/***/ 1370:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Ellipse = /*#__PURE__*/function () {
  function Ellipse() {
    _classCallCheck(this, Ellipse);

    this.ForEntityName = 'ELLIPSE';
  }

  _createClass(Ellipse, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 10:
            entity.center = helpers.parsePoint(scanner);
            break;

          case 11:
            entity.majorAxisEndPoint = helpers.parsePoint(scanner);
            break;

          case 40:
            entity.axisRatio = curr.value;
            break;

          case 41:
            entity.startAngle = curr.value;
            break;

          case 42:
            entity.endAngle = curr.value;
            break;

          case 2:
            entity.name = curr.value;
            break;

          default:
            // check common entity attributes
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Ellipse;
}();

exports["default"] = Ellipse;

/***/ }),

/***/ 3618:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Insert = /*#__PURE__*/function () {
  function Insert() {
    _classCallCheck(this, Insert);

    this.ForEntityName = 'INSERT';
  }

  _createClass(Insert, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 2:
            entity.name = curr.value;
            break;

          case 41:
            entity.xScale = curr.value;
            break;

          case 42:
            entity.yScale = curr.value;
            break;

          case 43:
            entity.zScale = curr.value;
            break;

          case 10:
            entity.position = helpers.parsePoint(scanner);
            break;

          case 50:
            entity.rotation = curr.value;
            break;

          case 70:
            entity.columnCount = curr.value;
            break;

          case 71:
            entity.rowCount = curr.value;
            break;

          case 44:
            entity.columnSpacing = curr.value;
            break;

          case 45:
            entity.rowSpacing = curr.value;
            break;

          case 210:
            entity.extrusionDirection = helpers.parsePoint(scanner);
            break;

          default:
            // check common entity attributes
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Insert;
}();

exports["default"] = Insert;

/***/ }),

/***/ 9414:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Line = /*#__PURE__*/function () {
  function Line() {
    _classCallCheck(this, Line);

    this.ForEntityName = 'LINE';
  }

  _createClass(Line, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value,
        vertices: []
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 10:
            // X coordinate of point
            entity.vertices.unshift(helpers.parsePoint(scanner));
            break;

          case 11:
            entity.vertices.push(helpers.parsePoint(scanner));
            break;

          case 210:
            entity.extrusionDirection = helpers.parsePoint(scanner);
            break;

          case 100:
            break;

          default:
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Line;
}();

exports["default"] = Line;

/***/ }),

/***/ 1272:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Lwpolyline = /*#__PURE__*/function () {
  function Lwpolyline() {
    _classCallCheck(this, Lwpolyline);

    this.ForEntityName = 'LWPOLYLINE';
  }

  _createClass(Lwpolyline, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value,
        vertices: []
      };
      var numberOfVertices = 0;
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 38:
            entity.elevation = curr.value;
            break;

          case 39:
            entity.depth = curr.value;
            break;

          case 70:
            // 1 = Closed shape, 128 = plinegen?, 0 = default
            entity.shape = (curr.value & 1) === 1;
            entity.hasContinuousLinetypePattern = (curr.value & 128) === 128;
            break;

          case 90:
            numberOfVertices = curr.value;
            break;

          case 10:
            // X coordinate of point
            entity.vertices = parseLWPolylineVertices(numberOfVertices, scanner);
            break;

          case 43:
            if (curr.value !== 0) entity.width = curr.value;
            break;

          case 210:
            entity.extrusionDirectionX = curr.value;
            break;

          case 220:
            entity.extrusionDirectionY = curr.value;
            break;

          case 230:
            entity.extrusionDirectionZ = curr.value;
            break;

          default:
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Lwpolyline;
}();

exports["default"] = Lwpolyline;

function parseLWPolylineVertices(n, scanner) {
  if (!n || n <= 0) throw Error('n must be greater than 0 verticies');
  var vertices = [];
  var vertexIsStarted = false;
  var vertexIsFinished = false;
  var curr = scanner.lastReadGroup;

  for (var i = 0; i < n; i++) {
    var vertex = {};

    while (!scanner.isEOF()) {
      if (curr.code === 0 || vertexIsFinished) break;

      switch (curr.code) {
        case 10:
          // X
          if (vertexIsStarted) {
            vertexIsFinished = true;
            continue;
          }

          vertex.x = curr.value;
          vertexIsStarted = true;
          break;

        case 20:
          // Y
          vertex.y = curr.value;
          break;

        case 30:
          // Z
          vertex.z = curr.value;
          break;

        case 40:
          // start width
          vertex.startWidth = curr.value;
          break;

        case 41:
          // end width
          vertex.endWidth = curr.value;
          break;

        case 42:
          // bulge
          if (curr.value != 0) vertex.bulge = curr.value;
          break;

        default:
          // if we do not hit known code return vertices.  Code might belong to entity
          scanner.rewind();

          if (vertexIsStarted) {
            vertices.push(vertex);
          }

          scanner.rewind();
          return vertices;
      }

      curr = scanner.next();
    } // See https://groups.google.com/forum/#!topic/comp.cad.autocad/9gn8s5O_w6E


    vertices.push(vertex);
    vertexIsStarted = false;
    vertexIsFinished = false;
  }

  scanner.rewind();
  return vertices;
}

/***/ }),

/***/ 5085:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Mtext = /*#__PURE__*/function () {
  function Mtext() {
    _classCallCheck(this, Mtext);

    this.ForEntityName = 'MTEXT';
  }

  _createClass(Mtext, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 3:
            entity.text ? entity.text += curr.value : entity.text = curr.value;
            break;

          case 1:
            entity.text ? entity.text += curr.value : entity.text = curr.value;
            break;

          case 10:
            entity.position = helpers.parsePoint(scanner);
            break;

          case 11:
            entity.directionVector = helpers.parsePoint(scanner);
            break;

          case 40:
            //Note: this is the text height
            entity.height = curr.value;
            break;

          case 41:
            entity.width = curr.value;
            break;

          case 50:
            entity.rotation = curr.value;
            break;

          case 71:
            entity.attachmentPoint = curr.value;
            break;

          case 72:
            entity.drawingDirection = curr.value;
            break;

          default:
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Mtext;
}();

exports["default"] = Mtext;

/***/ }),

/***/ 2558:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Point = /*#__PURE__*/function () {
  function Point() {
    _classCallCheck(this, Point);

    this.ForEntityName = 'POINT';
  }

  _createClass(Point, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var type = curr.value;
      var entity = {
        type: type
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 10:
            entity.position = helpers.parsePoint(scanner);
            break;

          case 39:
            entity.thickness = curr.value;
            break;

          case 210:
            entity.extrusionDirection = helpers.parsePoint(scanner);
            break;

          case 100:
            break;

          default:
            // check common entity attributes
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Point;
}();

exports["default"] = Point;

/***/ }),

/***/ 828:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

var _vertex = _interopRequireDefault(__webpack_require__(5720));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function _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); }

function _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; }

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; }

var Polyline = /*#__PURE__*/function () {
  function Polyline() {
    _classCallCheck(this, Polyline);

    this.ForEntityName = 'POLYLINE';
  }

  _createClass(Polyline, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value,
        vertices: []
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 10:
            // always 0
            break;

          case 20:
            // always 0
            break;

          case 30:
            // elevation
            break;

          case 39:
            // thickness
            entity.thickness = curr.value;
            break;

          case 40:
            // start width
            break;

          case 41:
            // end width
            break;

          case 70:
            entity.shape = (curr.value & 1) !== 0;
            entity.includesCurveFitVertices = (curr.value & 2) !== 0;
            entity.includesSplineFitVertices = (curr.value & 4) !== 0;
            entity.is3dPolyline = (curr.value & 8) !== 0;
            entity.is3dPolygonMesh = (curr.value & 16) !== 0;
            entity.is3dPolygonMeshClosed = (curr.value & 32) !== 0; // 32 = The polygon mesh is closed in the N direction

            entity.isPolyfaceMesh = (curr.value & 64) !== 0;
            entity.hasContinuousLinetypePattern = (curr.value & 128) !== 0;
            break;

          case 71:
            // Polygon mesh M vertex count
            break;

          case 72:
            // Polygon mesh N vertex count
            break;

          case 73:
            // Smooth surface M density
            break;

          case 74:
            // Smooth surface N density
            break;

          case 75:
            // Curves and smooth surface type
            break;

          case 210:
            entity.extrusionDirection = helpers.parsePoint(scanner);
            break;

          default:
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      entity.vertices = parsePolylineVertices(scanner, curr);
      return entity;
    }
  }]);

  return Polyline;
}();

exports["default"] = Polyline;

function parsePolylineVertices(scanner, curr) {
  var vertexParser = new _vertex["default"]();
  var vertices = [];

  while (!scanner.isEOF()) {
    if (curr.code === 0) {
      if (curr.value === 'VERTEX') {
        vertices.push(vertexParser.parseEntity(scanner, curr));
        curr = scanner.lastReadGroup;
      } else if (curr.value === 'SEQEND') {
        parseSeqEnd(scanner, curr);
        break;
      }
    }
  }

  return vertices;
}

function parseSeqEnd(scanner, curr) {
  var entity = {
    type: curr.value
  };
  curr = scanner.next();

  while (!scanner.isEOF()) {
    if (curr.code == 0) break;
    helpers.checkCommonEntityProperties(entity, curr, scanner);
    curr = scanner.next();
  }

  return entity;
}

;

/***/ }),

/***/ 1534:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Solid = /*#__PURE__*/function () {
  function Solid() {
    _classCallCheck(this, Solid);

    this.ForEntityName = 'SOLID';
  }

  _createClass(Solid, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value,
        points: []
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 10:
            entity.points[0] = helpers.parsePoint(scanner);
            break;

          case 11:
            entity.points[1] = helpers.parsePoint(scanner);
            break;

          case 12:
            entity.points[2] = helpers.parsePoint(scanner);
            break;

          case 13:
            entity.points[3] = helpers.parsePoint(scanner);
            break;

          case 210:
            entity.extrusionDirection = helpers.parsePoint(scanner);
            break;

          default:
            // check common entity attributes
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Solid;
}();

exports["default"] = Solid;

/***/ }),

/***/ 2724:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Spline = /*#__PURE__*/function () {
  function Spline() {
    _classCallCheck(this, Spline);

    this.ForEntityName = 'SPLINE';
  }

  _createClass(Spline, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 10:
            if (!entity.controlPoints) entity.controlPoints = [];
            entity.controlPoints.push(helpers.parsePoint(scanner));
            break;

          case 11:
            if (!entity.fitPoints) entity.fitPoints = [];
            entity.fitPoints.push(helpers.parsePoint(scanner));
            break;

          case 12:
            entity.startTangent = helpers.parsePoint(scanner);
            break;

          case 13:
            entity.endTangent = helpers.parsePoint(scanner);
            break;

          case 40:
            if (!entity.knotValues) entity.knotValues = [];
            entity.knotValues.push(curr.value);
            break;

          case 70:
            if ((curr.value & 1) != 0) entity.closed = true;
            if ((curr.value & 2) != 0) entity.periodic = true;
            if ((curr.value & 4) != 0) entity.rational = true;
            if ((curr.value & 8) != 0) entity.planar = true;

            if ((curr.value & 16) != 0) {
              entity.planar = true;
              entity.linear = true;
            }

            break;

          case 71:
            entity.degreeOfSplineCurve = curr.value;
            break;

          case 72:
            entity.numberOfKnots = curr.value;
            break;

          case 73:
            entity.numberOfControlPoints = curr.value;
            break;

          case 74:
            entity.numberOfFitPoints = curr.value;
            break;

          case 210:
            entity.normalVector = helpers.parsePoint(scanner);
            break;

          default:
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Spline;
}();

exports["default"] = Spline;

/***/ }),

/***/ 7508:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Text = /*#__PURE__*/function () {
  function Text() {
    _classCallCheck(this, Text);

    this.ForEntityName = 'TEXT';
  }

  _createClass(Text, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 10:
            // X coordinate of 'first alignment point'
            entity.startPoint = helpers.parsePoint(scanner);
            break;

          case 11:
            // X coordinate of 'second alignment point'
            entity.endPoint = helpers.parsePoint(scanner);
            break;

          case 40:
            // Text height
            entity.textHeight = curr.value;
            break;

          case 41:
            entity.xScale = curr.value;
            break;

          case 50:
            // Rotation in degrees
            entity.rotation = curr.value;
            break;

          case 1:
            // Text
            entity.text = curr.value;
            break;
          // NOTE: 72 and 73 are meaningless without 11 (second alignment point)

          case 72:
            // Horizontal alignment
            entity.halign = curr.value;
            break;

          case 73:
            // Vertical alignment
            entity.valign = curr.value;
            break;

          default:
            // check common entity attributes
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Text;
}();

exports["default"] = Text;

/***/ }),

/***/ 5720:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



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); }

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;

var helpers = _interopRequireWildcard(__webpack_require__(1164));

function _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); }

function _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; }

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; }

var Vertex = /*#__PURE__*/function () {
  function Vertex() {
    _classCallCheck(this, Vertex);

    this.ForEntityName = 'VERTEX';
  }

  _createClass(Vertex, [{
    key: "parseEntity",
    value: function parseEntity(scanner, curr) {
      var entity = {
        type: curr.value
      };
      curr = scanner.next();

      while (!scanner.isEOF()) {
        if (curr.code === 0) break;

        switch (curr.code) {
          case 10:
            // X
            entity.x = curr.value;
            break;

          case 20:
            // Y
            entity.y = curr.value;
            break;

          case 30:
            // Z
            entity.z = curr.value;
            break;

          case 40:
            // start width
            break;

          case 41:
            // end width
            break;

          case 42:
            // bulge
            if (curr.value != 0) entity.bulge = curr.value;
            break;

          case 70:
            // flags
            entity.curveFittingVertex = (curr.value & 1) !== 0;
            entity.curveFitTangent = (curr.value & 2) !== 0;
            entity.splineVertex = (curr.value & 8) !== 0;
            entity.splineControlPoint = (curr.value & 16) !== 0;
            entity.threeDPolylineVertex = (curr.value & 32) !== 0;
            entity.threeDPolylineMesh = (curr.value & 64) !== 0;
            entity.polyfaceMeshVertex = (curr.value & 128) !== 0;
            break;

          case 50:
            // curve fit tangent direction
            break;

          case 71:
            // polyface mesh vertex index
            entity.faceA = curr.value;
            break;

          case 72:
            // polyface mesh vertex index
            entity.faceB = curr.value;
            break;

          case 73:
            // polyface mesh vertex index
            entity.faceC = curr.value;
            break;

          case 74:
            // polyface mesh vertex index
            entity.faceD = curr.value;
            break;

          default:
            helpers.checkCommonEntityProperties(entity, curr, scanner);
            break;
        }

        curr = scanner.next();
      }

      return entity;
    }
  }]);

  return Vertex;
}();

exports["default"] = Vertex;

/***/ }),

/***/ 2431:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {



Object.defineProperty(exports, "__esModule", ({
  value: true
}));
Object.defineProperty(exports, "DxfParser", ({
  enumerable: true,
  get: function get() {
    return _DxfParser["default"];
  }
}));
exports["default"] = void 0;

var _DxfParser = _interopRequireDefault(__webpack_require__(9379));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var _default = _DxfParser["default"];
exports["default"] = _default;

/***/ }),

/***/ 2371:
/***/ ((module, exports, __webpack_require__) => {

var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;

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); }

/*
* loglevel - https://github.com/pimterry/loglevel
*
* Copyright (c) 2013 Tim Perry
* Licensed under the MIT license.
*/
(function (root, definition) {
  "use strict";

  if (true) {
    !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),
		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
		(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
		__WEBPACK_AMD_DEFINE_FACTORY__),
		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
  } else {}
})(void 0, function () {
  "use strict"; // Slightly dubious tricks to cut down minimized file size

  var noop = function noop() {};

  var undefinedType = "undefined";
  var isIE = (typeof window === "undefined" ? "undefined" : _typeof(window)) !== undefinedType && _typeof(window.navigator) !== undefinedType && /Trident\/|MSIE /.test(window.navigator.userAgent);
  var logMethods = ["trace", "debug", "info", "warn", "error"]; // Cross-browser bind equivalent that works at least back to IE6

  function bindMethod(obj, methodName) {
    var method = obj[methodName];

    if (typeof method.bind === 'function') {
      return method.bind(obj);
    } else {
      try {
        return Function.prototype.bind.call(method, obj);
      } catch (e) {
        // Missing bind shim or IE8 + Modernizr, fallback to wrapping
        return function () {
          return Function.prototype.apply.apply(method, [obj, arguments]);
        };
      }
    }
  } // Trace() doesn't print the message in IE, so for that case we need to wrap it


  function traceForIE() {
    if (console.log) {
      if (console.log.apply) {
        console.log.apply(console, arguments);
      } else {
        // In old IE, native console methods themselves don't have apply().
        Function.prototype.apply.apply(console.log, [console, arguments]);
      }
    }

    if (console.trace) console.trace();
  } // Build the best logging method possible for this env
  // Wherever possible we want to bind, not wrap, to preserve stack traces


  function realMethod(methodName) {
    if (methodName === 'debug') {
      methodName = 'log';
    }

    if ((typeof console === "undefined" ? "undefined" : _typeof(console)) === undefinedType) {
      return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives
    } else if (methodName === 'trace' && isIE) {
      return traceForIE;
    } else if (console[methodName] !== undefined) {
      return bindMethod(console, methodName);
    } else if (console.log !== undefined) {
      return bindMethod(console, 'log');
    } else {
      return noop;
    }
  } // These private functions always need `this` to be set properly


  function replaceLoggingMethods(level, loggerName) {
    /*jshint validthis:true */
    for (var i = 0; i < logMethods.length; i++) {
      var methodName = logMethods[i];
      this[methodName] = i < level ? noop : this.methodFactory(methodName, level, loggerName);
    } // Define log.log as an alias for log.debug


    this.log = this.debug;
  } // In old IE versions, the console isn't present until you first open it.
  // We build realMethod() replacements here that regenerate logging methods


  function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {
    return function () {
      if ((typeof console === "undefined" ? "undefined" : _typeof(console)) !== undefinedType) {
        replaceLoggingMethods.call(this, level, loggerName);
        this[methodName].apply(this, arguments);
      }
    };
  } // By default, we use closely bound real methods wherever possible, and
  // otherwise we wait for a console to appear, and then try again.


  function defaultMethodFactory(methodName, level, loggerName) {
    /*jshint validthis:true */
    return realMethod(methodName) || enableLoggingWhenConsoleArrives.apply(this, arguments);
  }

  function Logger(name, defaultLevel, factory) {
    var self = this;
    var currentLevel;
    defaultLevel = defaultLevel == null ? "WARN" : defaultLevel;
    var storageKey = "loglevel";

    if (typeof name === "string") {
      storageKey += ":" + name;
    } else if (_typeof(name) === "symbol") {
      storageKey = undefined;
    }

    function persistLevelIfPossible(levelNum) {
      var levelName = (logMethods[levelNum] || 'silent').toUpperCase();
      if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === undefinedType || !storageKey) return; // Use localStorage if available

      try {
        window.localStorage[storageKey] = levelName;
        return;
      } catch (ignore) {} // Use session cookie as fallback


      try {
        window.document.cookie = encodeURIComponent(storageKey) + "=" + levelName + ";";
      } catch (ignore) {}
    }

    function getPersistedLevel() {
      var storedLevel;
      if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === undefinedType || !storageKey) return;

      try {
        storedLevel = window.localStorage[storageKey];
      } catch (ignore) {} // Fallback to cookies if local storage gives us nothing


      if (_typeof(storedLevel) === undefinedType) {
        try {
          var cookie = window.document.cookie;
          var location = cookie.indexOf(encodeURIComponent(storageKey) + "=");

          if (location !== -1) {
            storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];
          }
        } catch (ignore) {}
      } // If the stored level is not valid, treat it as if nothing was stored.


      if (self.levels[storedLevel] === undefined) {
        storedLevel = undefined;
      }

      return storedLevel;
    }

    function clearPersistedLevel() {
      if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === undefinedType || !storageKey) return; // Use localStorage if available

      try {
        window.localStorage.removeItem(storageKey);
        return;
      } catch (ignore) {} // Use session cookie as fallback


      try {
        window.document.cookie = encodeURIComponent(storageKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
      } catch (ignore) {}
    }
    /*
     *
     * Public logger API - see https://github.com/pimterry/loglevel for details
     *
     */


    self.name = name;
    self.levels = {
      "TRACE": 0,
      "DEBUG": 1,
      "INFO": 2,
      "WARN": 3,
      "ERROR": 4,
      "SILENT": 5
    };
    self.methodFactory = factory || defaultMethodFactory;

    self.getLevel = function () {
      return currentLevel;
    };

    self.setLevel = function (level, persist) {
      if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {
        level = self.levels[level.toUpperCase()];
      }

      if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {
        currentLevel = level;

        if (persist !== false) {
          // defaults to true
          persistLevelIfPossible(level);
        }

        replaceLoggingMethods.call(self, level, name);

        if ((typeof console === "undefined" ? "undefined" : _typeof(console)) === undefinedType && level < self.levels.SILENT) {
          return "No console available for logging";
        }
      } else {
        throw "log.setLevel() called with invalid level: " + level;
      }
    };

    self.setDefaultLevel = function (level) {
      defaultLevel = level;

      if (!getPersistedLevel()) {
        self.setLevel(level, false);
      }
    };

    self.resetLevel = function () {
      self.setLevel(defaultLevel, false);
      clearPersistedLevel();
    };

    self.enableAll = function (persist) {
      self.setLevel(self.levels.TRACE, persist);
    };

    self.disableAll = function (persist) {
      self.setLevel(self.levels.SILENT, persist);
    }; // Initialize with the right level


    var initialLevel = getPersistedLevel();

    if (initialLevel == null) {
      initialLevel = defaultLevel;
    }

    self.setLevel(initialLevel, false);
  }
  /*
   *
   * Top-level API
   *
   */


  var defaultLogger = new Logger();
  var _loggersByName = {};

  defaultLogger.getLogger = function getLogger(name) {
    if (_typeof(name) !== "symbol" && typeof name !== "string" || name === "") {
      throw new TypeError("You must supply a name when creating a logger.");
    }

    var logger = _loggersByName[name];

    if (!logger) {
      logger = _loggersByName[name] = new Logger(name, defaultLogger.getLevel(), defaultLogger.methodFactory);
    }

    return logger;
  }; // Grab the current global log variable in case of overwrite


  var _log = (typeof window === "undefined" ? "undefined" : _typeof(window)) !== undefinedType ? window.log : undefined;

  defaultLogger.noConflict = function () {
    if ((typeof window === "undefined" ? "undefined" : _typeof(window)) !== undefinedType && window.log === defaultLogger) {
      window.log = _log;
    }

    return defaultLogger;
  };

  defaultLogger.getLoggers = function getLoggers() {
    return _loggersByName;
  }; // ES6 default export, for compatibility


  defaultLogger['default'] = defaultLogger;
  return defaultLogger;
});

/***/ }),

/***/ 9560:
/***/ ((module, __webpack_exports__, __webpack_require__) => {

/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2052);
/* 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__);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5788);
/* 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__);
// Imports


var ___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()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, "body > .md-component-maker {\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n.md-component-maker-canvas {\r\n    width: 100%;\r\n    height: 100%;\r\n    background-color: #212830;\r\n}", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ 8517:
/***/ ((module, __webpack_exports__, __webpack_require__) => {

/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2052);
/* 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__);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5788);
/* 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__);
// Imports


var ___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()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".md-polyline {\r\n    fill: none;\r\n    stroke-width: calc(var(--dxf-stroke-width) / var(--dxf-scale));\r\n    stroke: var(--dxf-stroke-color);\r\n}\r\n\r\n.md-dxf-eye {\r\n    --dxf-stroke-width: 1;\r\n    --dxf-scale: 1;\r\n}\r\n\r\n.md-polyline.md-dxf-shape{\r\n    fill: var(--dxf-fill-color);\r\n    fill-rule: evenodd;\r\n}\r\n\r\n.md-dxf-layer{\r\n    --dxf-fill-color: transparent;\r\n    --dxf-stroke-color: black;\r\n}\r\n\r\n.md-dxf{\r\n\r\n}", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ 3486:
/***/ ((module, __webpack_exports__, __webpack_require__) => {

/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2052);
/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5788);
/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports


var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, ":root {\r\n    --as-input-height: 30px;\r\n    --as-input-font-size: 14px;\r\n    --as-input-font-family: Arial, Helvetica, sans-serif;\r\n    --as-input-vertical-padding: 0.3571em;\r\n    --as-input-horizontal-padding: 0.5em;\r\n    --as-input-border-color: #ddd;\r\n    --as-input-border-radius: 3px;\r\n    --as-context-menu-font-size: 14px;\r\n    --as-context-font-family: Arial, Helvetica, sans-serif;\r\n    --as-disabled-background-color: #ebebe4;\r\n    --as-disabled-text-color: rgb(102, 102, 102);\r\n    --icon-background-cover-hover: #91e4fb;\r\n    --as-transparent-button-hover-color: rgba(169, 169, 172, 0.1);\r\n    --as-transparent-button-focus-color:  rgba(20, 185, 235, 0.3);\r\n    --as-transparent-button-active-color:  rgba(169, 169, 172, 0.2);\r\n    --as-transparent-button-text-color: rgb(139, 139, 140);\r\n    --as-transparent-button-text-hover-color: rgb(107, 107, 107);\r\n    --as-transparent-button-text-active-color: rgb(0, 0, 0);\r\n}\r\n\r\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ 2467:
/***/ ((module, __webpack_exports__, __webpack_require__) => {

/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2052);
/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5788);
/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports


var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".as-has-hanger-drag,\r\n.as-has-hanger-drag * {\r\n    touch-action: none;\r\n    -webkit-user-select: none !important;\r\n    -moz-user-select: none !important;\r\n    -ms-user-select: none !important;\r\n    user-select: none !important;\r\n}", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ 7402:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3379);
/* 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__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7795);
/* 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__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(569);
/* 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__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3565);
/* 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__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9216);
/* 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__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4589);
/* 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__);
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_componentmaker_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(9560);

      
      
      
      
      
      
      
      
      

var options = {};

options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());

      options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
    
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());

var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_componentmaker_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, options);




       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_componentmaker_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z && _node_modules_css_loader_dist_cjs_js_componentmaker_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"].locals */ .Z.locals ? _node_modules_css_loader_dist_cjs_js_componentmaker_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"].locals */ .Z.locals : undefined);


/***/ }),

/***/ 4518:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3379);
/* 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__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7795);
/* 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__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(569);
/* 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__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3565);
/* 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__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9216);
/* 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__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4589);
/* 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__);
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_dxf_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(8517);

      
      
      
      
      
      
      
      
      

var options = {};

options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());

      options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
    
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());

var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_dxf_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, options);




       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_dxf_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z && _node_modules_css_loader_dist_cjs_js_dxf_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"].locals */ .Z.locals ? _node_modules_css_loader_dist_cjs_js_dxf_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"].locals */ .Z.locals : undefined);


/***/ }),

/***/ 4733:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3379);
/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7795);
/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(569);
/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3565);
/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9216);
/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4589);
/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _css_loader_dist_cjs_js_default_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3486);

      
      
      
      
      
      
      
      
      

var options = {};

options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());

      options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
    
options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());

var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_default_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, options);




       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_default_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z && _css_loader_dist_cjs_js_default_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"].locals */ .Z.locals ? _css_loader_dist_cjs_js_default_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"].locals */ .Z.locals : undefined);


/***/ }),

/***/ 9007:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3379);
/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7795);
/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(569);
/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3565);
/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9216);
/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4589);
/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _css_loader_dist_cjs_js_hanger_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2467);

      
      
      
      
      
      
      
      
      

var options = {};

options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());

      options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
    
options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());

var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_hanger_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, options);




       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_hanger_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z && _css_loader_dist_cjs_js_hanger_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"].locals */ .Z.locals ? _css_loader_dist_cjs_js_hanger_css__WEBPACK_IMPORTED_MODULE_6__/* ["default"].locals */ .Z.locals : undefined);


/***/ }),

/***/ 3379:
/***/ ((module) => {



var stylesInDOM = [];

function getIndexByIdentifier(identifier) {
  var result = -1;

  for (var i = 0; i < stylesInDOM.length; i++) {
    if (stylesInDOM[i].identifier === identifier) {
      result = i;
      break;
    }
  }

  return result;
}

function modulesToDom(list, options) {
  var idCountMap = {};
  var identifiers = [];

  for (var i = 0; i < list.length; i++) {
    var item = list[i];
    var id = options.base ? item[0] + options.base : item[0];
    var count = idCountMap[id] || 0;
    var identifier = "".concat(id, " ").concat(count);
    idCountMap[id] = count + 1;
    var indexByIdentifier = getIndexByIdentifier(identifier);
    var obj = {
      css: item[1],
      media: item[2],
      sourceMap: item[3],
      supports: item[4],
      layer: item[5]
    };

    if (indexByIdentifier !== -1) {
      stylesInDOM[indexByIdentifier].references++;
      stylesInDOM[indexByIdentifier].updater(obj);
    } else {
      var updater = addElementStyle(obj, options);
      options.byIndex = i;
      stylesInDOM.splice(i, 0, {
        identifier: identifier,
        updater: updater,
        references: 1
      });
    }

    identifiers.push(identifier);
  }

  return identifiers;
}

function addElementStyle(obj, options) {
  var api = options.domAPI(options);
  api.update(obj);

  var updater = function updater(newObj) {
    if (newObj) {
      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
        return;
      }

      api.update(obj = newObj);
    } else {
      api.remove();
    }
  };

  return updater;
}

module.exports = function (list, options) {
  options = options || {};
  list = list || [];
  var lastIdentifiers = modulesToDom(list, options);
  return function update(newList) {
    newList = newList || [];

    for (var i = 0; i < lastIdentifiers.length; i++) {
      var identifier = lastIdentifiers[i];
      var index = getIndexByIdentifier(identifier);
      stylesInDOM[index].references--;
    }

    var newLastIdentifiers = modulesToDom(newList, options);

    for (var _i = 0; _i < lastIdentifiers.length; _i++) {
      var _identifier = lastIdentifiers[_i];

      var _index = getIndexByIdentifier(_identifier);

      if (stylesInDOM[_index].references === 0) {
        stylesInDOM[_index].updater();

        stylesInDOM.splice(_index, 1);
      }
    }

    lastIdentifiers = newLastIdentifiers;
  };
};

/***/ }),

/***/ 569:
/***/ ((module) => {



var memo = {};
/* istanbul ignore next  */

function getTarget(target) {
  if (typeof memo[target] === "undefined") {
    var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself

    if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
      try {
        // This will throw an exception if access to iframe is blocked
        // due to cross-origin restrictions
        styleTarget = styleTarget.contentDocument.head;
      } catch (e) {
        // istanbul ignore next
        styleTarget = null;
      }
    }

    memo[target] = styleTarget;
  }

  return memo[target];
}
/* istanbul ignore next  */


function insertBySelector(insert, style) {
  var target = getTarget(insert);

  if (!target) {
    throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
  }

  target.appendChild(style);
}

module.exports = insertBySelector;

/***/ }),

/***/ 9216:
/***/ ((module) => {



/* istanbul ignore next  */
function insertStyleElement(options) {
  var element = document.createElement("style");
  options.setAttributes(element, options.attributes);
  options.insert(element, options.options);
  return element;
}

module.exports = insertStyleElement;

/***/ }),

/***/ 3565:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {



/* istanbul ignore next  */
function setAttributesWithoutAttributes(styleElement) {
  var nonce =  true ? __webpack_require__.nc : 0;

  if (nonce) {
    styleElement.setAttribute("nonce", nonce);
  }
}

module.exports = setAttributesWithoutAttributes;

/***/ }),

/***/ 7795:
/***/ ((module) => {



/* istanbul ignore next  */
function apply(styleElement, options, obj) {
  var css = "";

  if (obj.supports) {
    css += "@supports (".concat(obj.supports, ") {");
  }

  if (obj.media) {
    css += "@media ".concat(obj.media, " {");
  }

  var needLayer = typeof obj.layer !== "undefined";

  if (needLayer) {
    css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
  }

  css += obj.css;

  if (needLayer) {
    css += "}";
  }

  if (obj.media) {
    css += "}";
  }

  if (obj.supports) {
    css += "}";
  }

  var sourceMap = obj.sourceMap;

  if (sourceMap && typeof btoa !== "undefined") {
    css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
  } // For old IE

  /* istanbul ignore if  */


  options.styleTagTransform(css, styleElement, options.options);
}

function removeStyleElement(styleElement) {
  // istanbul ignore if
  if (styleElement.parentNode === null) {
    return false;
  }

  styleElement.parentNode.removeChild(styleElement);
}
/* istanbul ignore next  */


function domAPI(options) {
  var styleElement = options.insertStyleElement(options);
  return {
    update: function update(obj) {
      apply(styleElement, options, obj);
    },
    remove: function remove() {
      removeStyleElement(styleElement);
    }
  };
}

module.exports = domAPI;

/***/ }),

/***/ 4589:
/***/ ((module) => {



/* istanbul ignore next  */
function styleTagTransform(css, styleElement) {
  if (styleElement.styleSheet) {
    styleElement.styleSheet.cssText = css;
  } else {
    while (styleElement.firstChild) {
      styleElement.removeChild(styleElement.firstChild);
    }

    styleElement.appendChild(document.createTextNode(css));
  }
}

module.exports = styleTagTransform;

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// 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,
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	(() => {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = (module) => {
/******/ 			var getter = module && module.__esModule ?
/******/ 				() => (module['default']) :
/******/ 				() => (module);
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	(() => {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = (exports, definition) => {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/global */
/******/ 	(() => {
/******/ 		__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 */
/******/ 	(() => {
/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	(() => {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = (exports) => {
/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 			}
/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/nonce */
/******/ 	(() => {
/******/ 		__webpack_require__.nc = undefined;
/******/ 	})();
/******/ 	
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
(() => {


var _dxfParser = _interopRequireDefault(__webpack_require__(2431));

var _ComponentMaker = _interopRequireDefault(__webpack_require__(6865));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

// var parser = new DxfParser();
// fetch('Xingfa.txt').then(res=> res.text())
// .then(text=>{
//         var o = parser.parse(text);
//         console.log(o)
//     });
//
window.main = function () {
  var mComponentMaker = new _ComponentMaker["default"]();
  mComponentMaker.getView().addTo(document.body);
  mComponentMaker.start();
};
})();

/******/ })()
;

VaKeR 2022