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/gadevoir/dist/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/gadevoir/dist/gadevoir-app.js
/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var mqtt = _interopRequireWildcard(__webpack_require__(63557));
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 _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); }
if (!navigator.getUserMedia) {
  navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
}

/************ABSOL-LIBRARY***************************************/

function mixClass(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);
}
function safeThrow(error) {
  setTimeout(function () {
    if (error.stack) {
      try {
        error.message += '\n' + error.stack;
      } catch (e) {
        //can not modify message
      }
    }
    throw error;
  }, 0);
}
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);
  var listenerList;
  var i;
  var startTime, endTime;
  if (this.isSupportedEvent(eventName)) {
    if (this._azar_extendEvents.prioritize[eventName]) {
      listenerList = this._azar_extendEvents.prioritize[eventName].slice();
      for (i = 0; i < listenerList.length; ++i) {
        try {
          startTime = Date.now();
          listenerList[i].wrappedCallback.apply(this, others);
          endTime = Date.now();
          if (endTime - startTime > 200) {
            console.log('slow function call (' + (endTime - startTime) + ')', listenerList[i]);
          }
        } catch (e) {
          safeThrow(e);
        }
      }
    }
    if (this._azar_extendEvents.nonprioritize[eventName]) {
      listenerList = this._azar_extendEvents.nonprioritize[eventName].slice();
      for (i = 0; i < listenerList.length; ++i) {
        try {
          startTime = Date.now();
          listenerList[i].wrappedCallback.apply(this, others);
          endTime = Date.now();
          if (endTime - startTime > 200) {
            console.log('slow function call (' + (endTime - startTime) + ')', listenerList[i]);
          }
        } catch (e) {
          safeThrow(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.eventEmitterOnWithTime = function (isOnce, arg0, arg1, arg2) {
  if (_typeof(arg0) == 'object') {
    for (var key in arg0) {
      this.eventEmitterOnWithTime(isOnce, key, arg0[key]);
    }
    return this;
  } else {
    if (_typeof(arg1) == 'object') {
      return this.eventEmitterOnWithTime(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 () {
            this.off(event.eventName, event.wrappedCallback, event.cap);
            event.callback.apply(this, arguments);
          };
        } 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("duplicate event");
      }
    }
    return this;
  }
};
EventEmitter.prototype.on = function (arg0, arg1, arg2) {
  this.eventEmitterOnWithTime(false, arg0, arg1, arg2);
  return this;
};
EventEmitter.prototype.once = function (arg0, arg1, arg2) {
  this.eventEmitterOnWithTime(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 identCharacters = function () {
  var chars = 'qwertyuiopasdfghjklzxcvbnm';
  chars = chars + chars.toUpperCase();
  var num = '0123456789';
  var spect = '_';
  return (chars + spect + num).split('');
}();
function randomIdent(length) {
  if (!(length > 0)) length = 4;
  var factor = identCharacters;
  return [factor[Math.random() * (factor.length - 10) >> 0]].concat(Array(length - 1).fill('').map(function () {
    return factor[Math.random() * factor.length >> 0];
  })).join('');
}

/*****************UTILS**********************/
function isObject(obj) {
  if (_typeof(obj) == "object") {
    for (var key in obj) {
      if (obj.hasOwnProperty(key)) {
        return true; // search for first object prop
      }
    }
  }

  return false;
}
function mergeObject(target, add) {
  for (var key in add) {
    if (add.hasOwnProperty(key)) {
      if (target[key] && isObject(target[key]) && isObject(add[key])) {
        mergeObject(target[key], add[key]);
      } else {
        target[key] = add[key];
      }
    }
  }
  return target;
}

/********************************************************/
var defaultConfig = {
  media: {
    audio: {
      echoCancellationType: 'system',
      echoCancellation: true,
      noiseSuppression: true,
      // sampleRate:24000,
      // sampleSize:16,
      // channelCount:2,
      volume: 0.5
    },
    video: {
      facingMode: 'user'
    }
  },
  ws: 'wss:mqtt.absol.cf:9884',
  appChannel: 'gadevoir',
  rtc: {
    offerToReceiveAudio: true,
    offerToReceiveVideo: true,
    iceServers: [{
      "urls": "stun:absol.cf:3478"
    }]
  }
};

/***
 * @typedef {{number: string, clientId: string}} GEndPoint
 */

/***
 * @extends EventEmitter
 * @param {GPhone} phone
 * @param {GEndPoint} other
 * @param {string=} id
 * @param {("outgoing"|"income")=} type
 *
 */
function GConversation(phone, other, id, type) {
  EventEmitter.call(this);
  this.type = type || "outgoing";
  this.phone = phone;
  /***
   *
   * @type {GEndPoint}
   */
  this.me = {
    number: phone.number,
    clientId: phone.clientId
  };
  this.id = id || randomIdent(32);
  this.other = other;
  //video=>remote description => ice
  this.localStream = null;
  this.localStreamSync = new Promise(function (resolve) {
    this._localStreamResolveCb = resolve;
  }.bind(this));
  this.remoteStreams = null;
  this.remoteStreamSync = new Promise(function (resolve) {
    this._remoteResolveCb = resolve;
  }.bind(this));
  this.remoteDescSync = new Promise(function (resolve) {
    this._remoteDescResolveCb = resolve;
  }.bind(this));

  // IceCandidate
}

mixClass(GConversation, EventEmitter);
GConversation.prototype.startP2P = function () {
  this.pc = new RTCPeerConnection(this.phone.config.rtc);
  //ontrack not work with webrtc-adapter
  this.pc.addEventListener('track', this.ev_ontrack.bind(this));
  this.pc.addEventListener('icecandidate', this.ev_onicecandidate.bind(this));
};
GConversation.prototype.startVideo = function () {};
GConversation.prototype.startAudio = function () {
  var thisC = this;
  return navigator.mediaDevices.getUserMedia({
    audio: this.phone.config.media.audio
  }).then(function (stream) {
    thisC.localStream = stream;
    stream.getTracks().forEach(function (track) {
      thisC.pc.addTrack(track, stream);
    });
    thisC._localStreamResolveCb(stream);
    thisC._localStreamResolveCb = null;
  });
};
GConversation.prototype._setupAntiNoise = function () {};
GConversation.prototype.getLocalStream = function () {
  return this.localStreamSync;
};
GConversation.prototype.getRemoteStreams = function () {
  return this.remoteStreamSync;
};
GConversation.prototype.close = function () {
  this.pc.close();
  if (this.remoteStreams) this.remoteStreams.forEach(function (stream) {
    stream.getTracks().forEach(function (track) {
      track.stop();
    });
  });
  if (this.localStream) this.localStream.getTracks().forEach(function (track) {
    track.stop();
  });
};
GConversation.prototype.setRemoteDescription = function (offer) {
  var thisC = this;
  var pc = this.pc;
  //don't set remoteDescription before audio
  return this.localStreamSync.then(function () {
    return pc.setRemoteDescription(new RTCSessionDescription(offer)).then(function () {
      thisC._remoteDescResolveCb(offer);
      thisC._remoteDescResolveCb = null;
    });
  });
};
GConversation.prototype.getRemoteDescription = function () {
  return this.remoteDescSync;
};

/***
 *
 * @return {Promise<RTCSessionDescriptionInit>}
 */
GConversation.prototype.offer = function () {
  var thisC = this;
  return this.localStreamSync.then(function () {
    return thisC.pc.createOffer();
  }).then(function (offer) {
    return thisC.pc.setLocalDescription(offer).then(function () {
      return offer;
    });
  });
};

/***
 * @returns {Promise<RTCSessionDescriptionInit>}
 */
GConversation.prototype.answer = function () {
  var pc = this.pc;
  return this.remoteDescSync.then(function () {
    if (pc.remoteDescription.type !== "offer") return null;
    return pc.createAnswer().then(function (answer) {
      return pc.setLocalDescription(answer).then(function () {
        return answer;
      });
    });
  });
};
GConversation.prototype.addIceCandidate = function (candidate) {
  var pc = this.pc;
  this.remoteDescSync.then(function () {
    return pc.addIceCandidate(new RTCIceCandidate(candidate));
  });
};
GConversation.prototype.ev_ontrack = function (event) {
  var streams = Array.prototype.slice.call(event.streams);
  this.emit('remote_stream', {
    type: 'remote_stream',
    streams: streams,
    target: this
  }, this);
  this.remoteStreams = streams;
  if (this._remoteResolveCb) {
    this._remoteResolveCb(streams);
    this._remoteResolveCb = null;
  }
};
GConversation.prototype.ev_onicecandidate = function (event) {
  if (event.candidate) this.emit('icecandidate', {
    type: 'icecandidate',
    candidate: event.candidate,
    target: this
  });
};

/**
 * @typedef {Object} GMQTTConfig
 * @property {string} appChannel
 * @property {object} [mqttClient]  - use existed mqtt client or create new one using ws
 * @property {string} [ws]
 * @property {string} clientId
 */

/**
 *
 * @param {GMQTTConfig} config
 * @constructor
 */
function GMQTTNetwork(config) {
  EventEmitter.call(this);
  this.clientId = config.clientId;
  this.userId = config.userId;
  this.appChannel = config.appChannel;
  this.classChannel = this.appChannel + '/gphone';
  this.userChannel = this.classChannel + '/' + this.userId;
  this.clientChannel = this.classChannel + '/' + this.clientId;
  if (config.mqttClient) {
    this.mqttClient = config.mqttClient;
  } else if (typeof config.ws === "string") {
    this.mqttClient = mqtt.connect(config.ws, {
      clientId: this.clientId,
      connectTimeout: 100000
    });
  } else {
    throw new Error("Invalid config: can not config mqtt");
  }
  this.mqttClient.subscribe([this.classChannel, this.userChannel, this.clientChannel]);
  this.mqttClient.on('connect', this.ev_connect.bind(this));
  this.mqttClient.on('error', this.ev_error.bind(this));
  this.mqttClient.on('message', this.ev_message.bind(this));
}
mixClass(GMQTTNetwork, EventEmitter);
GMQTTNetwork.prototype.ready = function () {
  var _this = this;
  if (this.mqttClient) return Promise.resolve();
  return new Promise(function (resolve, reject) {
    _this.mqttClient.once('connect', function () {
      resolve();
    });
    _this.mqttClient.once('error', function (error) {
      reject(error);
    });
  });
};
GMQTTNetwork.prototype.ev_connect = function () {};
GMQTTNetwork.prototype.ev_error = function (error) {};
GMQTTNetwork.prototype.packagePrefix = 'gadevoir_';
GMQTTNetwork.prototype.packageSubfix = '_gadevoir';
GMQTTNetwork.prototype.ev_message = function (channel, payload) {
  payload = payload + '';
  var json;
  if (payload.startsWith(this.packagePrefix) && payload.endsWith(this.packageSubfix)) {
    payload = payload.substring(this.packagePrefix.length, payload.length - this.packageSubfix.length);
    console.log(payload);
    try {
      json = JSON.parse(payload);
      this.emit('receive_package', json);
    } catch (error) {
      console.error(error);
    }
  }
};
GMQTTNetwork.prototype.sendToUser = function (userId, type, data) {
  var json = JSON.stringify({
    type: type,
    data: data,
    sourceClient: this.clientId,
    sourceUser: this.userId,
    from: this.userId,
    destType: 'user',
    dest: userId
  });
  this.mqttClient.publish(this.classChannel + '/' + userId, this.packagePrefix + json + this.packageSubfix);
};
GMQTTNetwork.prototype.sendToClient = function (client, type, data) {
  var json = JSON.stringify({
    type: type,
    data: data,
    sourceClient: this.clientId,
    sourceUser: this.userId,
    from: this.clientId,
    destType: 'client',
    dest: client
  });
  this.mqttClient.publish(this.classChannel + '/' + client, this.packagePrefix + json + this.packageSubfix);
};
GMQTTNetwork.prototype.sendToClass = function (type, data) {
  var json = JSON.stringify({
    type: type,
    data: data,
    sourceClient: this.clientId,
    sourceUser: this.userId,
    from: this.userId,
    destType: 'class'
  });
  this.mqttClient.publish(this.classChannel, this.packagePrefix + json + this.packageSubfix);
};
function GPhone(config) {
  this.state = "NOT_READY";
  EventEmitter.call(this);
  this.config = mergeObject(defaultConfig, config || {});
  this.config.userId = this.config.userId || localStorage.getItem('gphone_id') || this._randomPhoneNumber();
  this.config.clientId = this.config.clientId || this.config.userId + '-' + randomIdent(24);
  localStorage.setItem('gphone_id', this.config.userId);
  this.userId = this.config.userId;
  this.clientId = this.config.clientId;
  this.network = new GMQTTNetwork(Object.assign({
    userId: this.userId,
    clientId: this.clientId
  }, this.config));
  // setup receive package from network
  this.pkgRecv = new EventEmitter();
  this.network.on('receive_package', this.ev_package.bind(this));
  this.pkgRecv.on('dial', this.recv_dial.bind(this));
  this.pkgRecv.on('who_online', this.recv_whoOnline.bind(this));
  this.pkgRecv.on('icecandidate', this.recv_icecandidate.bind(this));
  this.pkgRecv.on('answer', this.recv_answer.bind(this));
  this.pkgRecv.on('hangup', this.recv_hangup.bind(this));
  Object.defineProperty(this, 'number', {
    get: function get() {
      return this.userId;
    }
  });

  /***
   *
   * @type {null|GConversation}
   */
  this.conversation = null;
  this.state = "READY";
  this.sync = this.network.ready();
}
mixClass(GPhone, EventEmitter);
GPhone.isSupported = function () {
  return !!window.RTCPeerConnection && !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) && !!RTCPeerConnection.prototype.createDataChannel;
};
GPhone.prototype._randomPhoneNumber = function () {
  return '0908' + Array(6).fill(0).map(function () {
    return Math.floor(Math.random() * 10);
  }).join('');
};
GPhone.prototype.ev_package = function (pkg) {
  this.pkgRecv.emit(pkg.type, pkg);
};
GPhone.prototype.sendToPhone = function (number, type, data) {
  return this.network.sendToUser(number, type, data);
};
GPhone.prototype.sendToClient = function (client, type, data) {
  return this.network.sendToClient(client, type, data);
};
GPhone.prototype.sendToClass = function (type, data, cb) {
  return this.network.sendToClass(type, data, cb);
};

/***
 *
 * @param {string} phoneNumber
 * @param {number} timeout
 * @param {function} onStateChangeCb
 */
GPhone.prototype.dial = function (phoneNumber, timeout, onStateChangeCb) {
  if (this.state !== 'READY') {
    return false;
    // throw  new Error("GPhone is not ready");
  }

  this.state = "OUTGOING_DIAL";
  var responseIdx = -1;
  var answerCount = 0;
  var thisPhone = this;
  var conversation = new GConversation(this, {
    clientId: "undefined",
    number: phoneNumber
  });
  conversation.on('icecandidate', this.ev_icecandidate.bind(this, conversation));
  var id = conversation.id;
  this.conversation = conversation;
  var answerVal = 'NOT_RESPONSE';
  function onDialResponse(res, pkg) {
    if (id !== res.id) return;
    if (responseIdx >= 0) {
      clearTimeout(responseIdx);
    }
    switch (res.answer) {
      case "ACCEPT":
        answerVal = "ACCEPT";
        finish();
        thisPhone.state = "OUTGOING_TRANSMIT";
        conversation.other.clientId = pkg.sourceClient;
        conversation.startP2P();
        conversation.startAudio();
        conversation.setRemoteDescription(res.offer);
        conversation.answer().then(function (answer) {
          thisPhone.sendToPhone(conversation.other.userId, 'answer', {
            id: conversation.id,
            answer: answer,
            targetClient: pkg.sourceClient
          });
        });
        onStateChangeCb({
          state: "ACCEPT"
        });
        break;
      case "BUSY":
        if (answerVal === 'NOT_RESPONSE') {
          answerVal = 'BUSY';
          responseIdx = setTimeout(finish, 4000);
        }
        break;
      case "DENY":
        answerVal = "DENY";
        onStateChangeCb({
          state: "DENY"
        });
        finish();
        break;
      case "WAITING":
        if (answerVal !== "WAITING") {
          answerVal = "WAITING";
          onStateChangeCb({
            state: "WAITING"
          });
        }
        responseIdx = setTimeout(finish, timeout);
        break;
    }
  }
  function finish() {
    responseIdx = -1;
    thisPhone.off('dial_response', onDialResponse);
    switch (answerVal) {
      case "NOT_RESPONSE":
        onStateChangeCb({
          state: "NOT_RESPONSE"
        });
        break;
      case "BUSY":
        onStateChangeCb({
          state: "BUSY"
        });
        break;
      case "WAITING":
        onStateChangeCb({
          state: "NOT_ANSWER"
        });
        break;
    }
    if (answerVal !== 'ACCEPT') {
      thisPhone.state = "READY";
      thisPhone.conversation = null;
    }
  }
  responseIdx = setTimeout(finish, 2000);
  this.sendToPhone(phoneNumber, 'dial', {
    id: id
  });
  this.pkgRecv.on('dial_response', onDialResponse);
  return true;
};
GPhone.prototype.recv_dial = function (pkg) {
  var data = pkg.data;
  var clientId = pkg.sourceClient;
  if (this.state === 'READY') {
    this.sendToPhone(clientId, 'dial_response', {
      answer: "WAITING",
      id: data.id
    });
    this.state = "INCOME_DIAL";
    var conversation = new GConversation(this, {
      clientId: pkg.sourceClient,
      number: pkg.sourceUser
    }, data.id, 'income');
    conversation.on('icecandidate', this.ev_icecandidate.bind(this, conversation));
    this.conversation = conversation;
    this.emit('income', {
      from: pkg.sourceUser,
      clientId: clientId,
      conversationId: conversation.id
    });
  } else {
    this.sendToClient(clientId, 'dial_response', {
      answer: "BUSY"
    });
  }
};
GPhone.prototype.hangup = function () {
  var conversation = this.conversation;
  if (conversation) {
    switch (this.conversation.type) {
      case "income":
        if (conversation.pc) {
          this.sendToPhone(this.conversation.other.clientId, 'hangup', {
            id: conversation.id
          });
          conversation.close();
        } else {
          this.sendToClient(this.conversation.other.clientId, 'dial_response', {
            id: conversation.id,
            answer: "DENY"
          });
        }
        break;
      case "outgoing":
        if (conversation.pc) {
          this.sendToPhone(this.conversation.other.clientId, 'hangup', {
            id: conversation.id
          });
          conversation.close();
        } else {
          this.sendToClient(this.conversation.other.clientId, 'dial_cancel', {
            id: conversation.id,
            answer: "DENY"
          });
        }
        break;
    }

    //do something before remove
    this.conversation = null;
  }
  this.state = "READY";
};
GPhone.prototype.pickup = function () {
  var conversation = this.conversation;
  if (!conversation) return;
  var thisPhone = this;
  if (!conversation.pc) {
    this.state = "INCOME_TRANSMIT";
    conversation.startP2P();
    conversation.startAudio();
    conversation.offer().then(function (offer) {
      return thisPhone.sendToClient(conversation.other.clientId, 'dial_response', {
        answer: "ACCEPT",
        id: conversation.id,
        offer: offer
      });
    });
    //todo: handle dial cancel after start P2P
  }
};

GPhone.prototype.getOnlineList = function () {
  var thisPhone = this;
  this.sendToClass('who_online', {});
  return new Promise(function (resolve) {
    var onlineList = {};
    var timeout;
    function onFinish() {
      thisPhone.pkgRecv.off('who_online_response', onResponse);
      resolve(onlineList);
    }
    function onResponse(pkg) {
      var from = pkg.sourceUser;
      if (from === thisPhone.userId) return;
      onlineList[from] = true;
      clearTimeout(timeout);
      timeout = setTimeout(onFinish, 500);
    }
    timeout = setTimeout(onFinish, 1500);
    thisPhone.pkgRecv.on('who_online_response', onResponse);
  });
};
GPhone.prototype.recv_whoOnline = function (pkg) {
  this.sendToClient(pkg.sourceClient, 'who_online_response', {});
};
GPhone.prototype.ev_icecandidate = function (conversation, event) {
  if (conversation !== this.conversation) return;
  if (conversation) {
    this.sendToPhone(conversation.other.clientId, 'icecandidate', {
      id: conversation.id,
      candidate: event.candidate
    });
  }
};
GPhone.prototype.recv_icecandidate = function (pkg) {
  var data = pkg.data;
  var conversation = this.conversation;
  if (!conversation || conversation.id !== data.id) return;
  conversation.addIceCandidate(data.candidate);
};
GPhone.prototype.recv_answer = function (pkg) {
  var data = pkg.data;
  var conversation = this.conversation;
  if (!conversation || conversation.id !== data.id) return;
  if (this.clientId === data.targetClient) {
    conversation.setRemoteDescription(data.answer);
  } else {
    //todo: cancel current conversation
    conversation.close();
    this.emit('cancel_income', {
      type: 'cancel_income',
      target: this
    });
    console.info("Pickup by other client, cancel!");
    this.state = "READY";
  }
};
GPhone.prototype.recv_hangup = function (pkg) {
  var data = pkg.data;
  var conversation = this.conversation;
  if (!conversation || conversation.id !== data.id) return;
  if (conversation.pc) {
    conversation.close();
    this.emit('hangup', {
      from: pkg.sourceUser,
      conversationId: data.id
    }, this);
  } else {
    this.emit('cancel_income', {
      type: 'cancel_income',
      target: this
    });
  }
  this.emit('hangup', {
    from: pkg.sourceUser,
    conversationId: data.id
  }, this);
  this.state = "READY";
};
GPhone.prototype.copyRTCIceCandidate = function (obj) {
  return ['address', 'candidate', "component", "foundation", "port", "priority", "protocol", "relatedAddress", "relatedPort", "sdpMLineIndex", "sdpMid", "tcpType", "usernameFragment"].reduce(function (ac, key) {
    ac[key] = obj[key];
    return ac;
  }, {});
};
var _default = GPhone;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _Core = _interopRequireWildcard(__webpack_require__(8182));
__webpack_require__(74319);
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; }
/***
 * @extends AElement
 * @constructor
 */
function ContactItem() {
  this.$name = (0, _Core.$)('.gdv-contact-item-name', this);
  this.$status = (0, _Core.$)('.gdv-contact-item-status', this);
  this._name = '';
  this.name = 'Noname';
  this.$voiceBtn = (0, _Core.$)('.gdv-contact-item-voice-btn', this).on('click', this.emit.bind(this, 'pressvoice', {
    type: 'pressvoice',
    target: this
  }, this));
  this.$videoBtn = (0, _Core.$)('.gdv-contact-item-video-btn', this).on('click', this.emit.bind(this, 'pressvideo', {
    type: 'pressvideo',
    target: this
  }, this));
}
ContactItem.tag = 'ContactItem'.toLowerCase();
ContactItem.render = function () {
  return (0, _Core._)({
    extendEvent: ['pressvoice', 'pressvideo'],
    "class": 'gdv-contact-item',
    child: [{
      "class": 'gdv-contact-item-name',
      child: {
        text: "NoName"
      }
    }, {
      "class": 'gdv-contact-item-status',
      child: {
        text: "offline"
      }
    }, {
      tag: 'button',
      "class": 'gdv-contact-item-voice-btn',
      child: 'span.mdi.mdi-phone-message-outline'
    }, {
      tag: 'button',
      "class": 'gdv-contact-item-video-btn',
      child: 'span.mdi.mdi-message-video'
    }]
  });
};
ContactItem.property = {};
ContactItem.property.name = {
  set: function set(value) {
    value = (value || '') + '';
    this.$name.firstChild.data = value;
  },
  get: function get() {
    return this.$name.firstChild.data;
  }
};
ContactItem.property.online = {
  set: function set(value) {
    if (value) {
      this.addClass('gdv-online');
      this.$status.firstChild.data = 'online';
    } else {
      this.$status.firstChild.data = 'offline';
      this.removeClass('gdv-online');
    }
  },
  get: function get() {
    return this.containsClass('gdv-online');
  }
};
_Core["default"].install(ContactItem);
var _default = ContactItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = exports._ = exports.$ = void 0;
var _install = _interopRequireDefault(__webpack_require__(4337));
var _install2 = _interopRequireDefault(__webpack_require__(40234));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var Core = new _Dom["default"]({});
(0, _install["default"])(Core);
(0, _install2["default"])(Core);
var _ = Core._;
exports._ = _;
var $ = Core.$;
exports.$ = $;
var _default = Core;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Fragment = _interopRequireDefault(__webpack_require__(5925));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _Core = __webpack_require__(8182);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends Fragment
 * @constructor
 */
function ConversationFrg(props) {
  _Fragment["default"].call(this);
  this.name = 'NoName';
  this.conversationId = null;
  this.dir = "INCOME";
  /***
   * @type {GDVClient|null}
   */
  Object.assign(this, props);
  /***
   *
   * @type {GPhone|null}
   */
  this.phone = null;
  this.ev_hangup = this.ev_hangup.bind(this);
}
_OOP["default"].mixClass(ConversationFrg, _Fragment["default"]);
ConversationFrg.prototype.createView = function () {
  this.$view = (0, _Core._)({
    "class": ['gdv-fragment', 'gdv-outgoing-frag'],
    child: [{
      "class": 'gdv-income-frag-info',
      child: [{
        "class": 'gdv-income-frag-name',
        child: {
          text: this.name
        }
      }, {
        "class": 'gdv-income-frag-type',
        child: {
          text: this.dir.toLowerCase() + '  voice chat'
        }
      }, {
        "class": 'gdv-income-frag-status',
        child: {
          text: 'CONNECTING'
        }
      }]
    }, {
      "class": 'gdv-outgoing-frag-button-ctn',
      child: [{
        tag: 'button',
        "class": ['gdv-income-frag-action-btn', 'gdv-outgoing-frag-cancel-btn'],
        child: 'span.mdi.mdi-phone-hangup'
      }]
    }, {
      tag: 'audio',
      "class": 'gdv-conversation-frag-audio'
    }]
  });
  this.$cancelBtn = (0, _Core.$)('.gdv-outgoing-frag-cancel-btn', this.$view).on('click', this.cancel.bind(this));
  this.$status = (0, _Core.$)('.gdv-income-frag-status', this.$view);
  this.$audio = (0, _Core.$)('.gdv-conversation-frag-audio', this.$view);
};
ConversationFrg.prototype.onStart = function () {
  this.phone = this.getContext("PHONE");
  this.phone.on('hangup', this.ev_hangup);
  this._remoteErrorTimeout = setTimeout(function () {
    this.pause();
    this.$status.firstChild.data = "CANCELED";
    setTimeout(this.stop.bind(this), 3000);
  }.bind(this), 6000);
  this.remoteAudioSync = this.phone.conversation.getRemoteStreams().then(function (streams) {
    if (this.state !== 'RUNNING') return;
    this.$audio.srcObject = streams[0];
    this.$audio.play();
    this.$status.firstChild.data = "TRANSMIT";
    clearTimeout(this._remoteErrorTimeout);
  }.bind(this));
};
ConversationFrg.prototype.ev_hangup = function () {
  this.$audio.pause();
  this.$cancelBtn.disabled = true;
  this.$status.firstChild.data = "HANGUP";
  setTimeout(this.stop.bind(this), 1000);
};
ConversationFrg.prototype.cancel = function () {
  this.$audio.pause();
  this.phone.hangup();
  this.$cancelBtn.disabled = true;
  this.$status.firstChild.data = "HANGUP";
  setTimeout(this.stop.bind(this), 1000);
};
ConversationFrg.prototype.onStop = function () {
  this.phone.off('hangup', this.ev_hangup);
};
var _default = ConversationFrg;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Fragment = _interopRequireDefault(__webpack_require__(5925));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _Core = __webpack_require__(8182);
__webpack_require__(12473);
var _MainFrg = _interopRequireDefault(__webpack_require__(94906));
var _GPhone = _interopRequireDefault(__webpack_require__(61936));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends Fragment
 * @constructor
 */
function GadevoirApp(config) {
  _Fragment["default"].call(this);
  this.config = config;
  this.phone = new _GPhone["default"]();
  this._fragHolders = [];
  this.setContext("PHONE", this.phone);
  this.setContext("APP", this);
  this.sync = Promise.resolve();
}
_OOP["default"].mixClass(GadevoirApp, _Fragment["default"]);
GadevoirApp.prototype.createView = function () {
  this.$view = (0, _Core._)({
    "class": 'gdv-app'
  });
};
GadevoirApp.prototype.onStart = function () {
  this.phone.sync.then(this.startFrag.bind(this, _MainFrg["default"], {}, false));
};

/***
 *
 * @param {Function} clazz
 * @param props
 * @param {boolean} [overlay = false]
 * @return {Promise<*>}
 */
GadevoirApp.prototype.startFrag = function (clazz, props, overlay) {
  var sameClazzHolder = this._fragHolders.find(function (holder) {
    return holder.frag.constructor === clazz;
  });
  if (sameClazzHolder) {
    sameClazzHolder.frag.stop();
  }
  var app = this;
  app.sync = app.sync.then(function () {
    app._pauseCurrentFragment();
    var holder = {};
    holder.frag = new clazz(props);
    holder.$ctn = (0, _Core._)('.gdv-app-frag-ctn').addChild(holder.frag.getView());
    if (overlay) {
      holder.$ctn.addClass('gdv-overlay').addStyle('left', '-100%').addStyle('opacity', '0').addStyle('transition', 'left 0.5s, opacity 0.5s');
      setTimeout(function () {
        holder.$ctn.addStyle('left', '0').addStyle('opacity', '1');
        setTimeout(function () {
          holder.$ctn.removeStyle('transition');
        }, 500);
      }, 1);
    } else {
      app.$view.clearChild();
    }
    app.$view.addChild(holder.$ctn);
    var res = new Promise(function (resolve) {
      var onStop = holder.frag.onStop;
      holder.frag.onStop = function () {
        onStop && onStop.apply(this, arguments);
        app.sync = new Promise(function (resolve1) {
          setTimeout(function () {
            var cHolder;
            if (app._fragHolders.indexOf(holder) >= 0) {
              while (app._fragHolders.length > 0) {
                cHolder = app._fragHolders.pop();
                cHolder.frag.destroy();
                cHolder.$ctn.remove();
                if (cHolder === holder) break;
              }
            }
            resolve(holder.frag.returns);
            resolve1();
            app._resumeCurrentFragment();
          }, 1);
        });
      };
    });
    app._fragHolders.push(holder);
    holder.frag.attach(app);
    holder.frag.start();
    return {
      result: res
    };
  });
  return app.sync.then(function (ref) {
    return ref.result;
  });
};
GadevoirApp.prototype._pauseCurrentFragment = function () {
  var holder = this._fragHolders[this._fragHolders.length - 1];
  if (holder && holder.frag.state === "RUNNING") holder.frag.pause();
};
GadevoirApp.prototype._resumeCurrentFragment = function () {
  var holder = this._fragHolders[this._fragHolders.length - 1];
  if (holder) {
    if (!holder.frag.getView().isDescendantOf(this.$view)) {
      this.$view.addChild(holder.frag.getView());
    }
    holder.frag.resume();
  }
};
var _default = GadevoirApp;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Fragment = _interopRequireDefault(__webpack_require__(5925));
var _Core = __webpack_require__(8182);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
__webpack_require__(52440);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
 * @typedef {{from: string, conversationId: string, incomeType:("voice"|"video")}} Income
 */

/***
 *
 * @augments Income
 * @augments Fragment
 * @constructor
 * @param {Income} props
 */
function IncomeFrg(props) {
  _Fragment["default"].call(this);
  this.from = null;
  this.conversationId = null;
  this.incomeType = 'voice';
  /***
   *
   * @type {GDVClient|null}
   */
  this.connector = null;
  Object.assign(this, props);
  this.ev_incomeCancel = this.ev_incomeCancel.bind(this);
}
_OOP["default"].mixClass(IncomeFrg, _Fragment["default"]);
IncomeFrg.prototype.createView = function () {
  this.$view = (0, _Core._)({
    "class": ['gdv-fragment', 'gdv-income-frag'],
    child: [{
      "class": 'gdv-income-frag-info',
      child: [{
        "class": 'gdv-income-frag-name',
        child: {
          text: this.from
        }
      }, {
        "class": 'gdv-income-frag-type',
        child: {
          text: 'income voice chat'
        }
      }, {
        "class": 'gdv-income-frag-status',
        child: {
          text: 'CALLING'
        }
      }]
    }, {
      "class": 'gdv-income-frag-button-ctn',
      child: [{
        tag: 'button',
        "class": ['gdv-income-frag-action-btn', 'gdv-income-frag-hangup-btn'],
        child: 'span.mdi.mdi-phone-hangup'
      }, {
        tag: 'button',
        "class": ['gdv-income-frag-action-btn', 'gdv-income-frag-answer-btn'],
        child: 'span.mdi.mdi-phone'
      }]
    }]
  });
  this.$hangupBtn = (0, _Core.$)('.gdv-income-frag-hangup-btn', this.$view).on('click', this.hangup.bind(this));
  this.$answerBtn = (0, _Core.$)('.gdv-income-frag-answer-btn', this.$view).on('click', this.answer.bind(this));
  this.$status = (0, _Core.$)('.gdv-income-frag-status', this.$view);
};
IncomeFrg.prototype.onStart = function () {
  this.phone = this.getContext("PHONE");
};
IncomeFrg.prototype.onStop = function () {};
IncomeFrg.prototype.answer = function () {
  this.phone.pickup();
  this.returns = {
    answer: "ACCEPT",
    conversationId: this.conversationId,
    type: this.incomeType
  };
  this.stop();
};
IncomeFrg.prototype.hangup = function () {
  this.phone.hangup();
  this.returns = {
    answer: "DENY",
    conversationId: this.conversationId
  };
  this.stop();
};
IncomeFrg.prototype.ev_incomeCancel = function (incomeData) {
  if (incomeData.conversationId === this.conversationId) {
    this.$status.firstChild.data = "CANCELED";
    this.$answerBtn.disabled = true;
    this.$hangupBtn.disabled = true;
    this.returns = {
      answer: "CANCELED",
      conversationId: this.conversationId
    };
    setTimeout(this.stop.bind(this), 2000);
  }
};
var _default = IncomeFrg;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _Fragment = _interopRequireDefault(__webpack_require__(5925));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
__webpack_require__(25959);
var _Core = __webpack_require__(8182);
var _MHeaderBar = _interopRequireDefault(__webpack_require__(72162));
var _ContactItem = _interopRequireDefault(__webpack_require__(57877));
var _OutgoingFrg = _interopRequireDefault(__webpack_require__(54970));
var _IncomeFrg = _interopRequireDefault(__webpack_require__(17607));
var _ConversationFrg = _interopRequireDefault(__webpack_require__(15661));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @augments EventEmitter
 * @augments Fragment
 * @constructor
 */
function MainFrg() {
  _EventEmitter["default"].call(this);
  _Fragment["default"].call(this);
  /***
   *
   * @type {GPhone|null}
   */
  this.phone = null;
  this.$itemByName = {};
  this.ev_income = this.ev_income.bind(this);
  this.ev_whoOnline = this.ev_whoOnline.bind(this);
}
_OOP["default"].mixClass(MainFrg, _EventEmitter["default"], _Fragment["default"]);
MainFrg.prototype.createView = function () {
  this.$view = (0, _Core._)({
    "class": ['gdv-fragment', 'gdv-main-frag'],
    child: [{
      tag: _MHeaderBar["default"].tag,
      props: {
        title: "Contact"
      }
    }, '.gdv-main-frag-contact-list']
  });
  this.$header = (0, _Core.$)(_MHeaderBar["default"].tag, this.$view);
  this.$contactList = (0, _Core.$)('.gdv-main-frag-contact-list', this.$view);
};
MainFrg.prototype.onStart = function () {
  this.phone = this.getContext("PHONE");
  this.$header.title = this.phone.number + "'s contacts";
};
MainFrg.prototype.onResume = function () {
  this._loadOnlineList();
  setTimeout(this._loadOnlineList.bind(this), 1000);
  this.phone.pkgRecv.on('who_online', this.ev_whoOnline);
  this.phone.on('income', this.ev_income);
};
MainFrg.prototype.onStop = function () {
  // this.connector.offReceive('income', this.ev_income);
};
MainFrg.prototype.onPause = function () {
  this.phone.pkgRecv.off('who_online', this.ev_whoOnline);
  this.phone.off('income', this.ev_income);
};
MainFrg.prototype._loadOnlineList = function () {
  var thisF = this;
  this.phone.getOnlineList().then(function (result) {
    var phoneNumbers = Object.keys(result);
    thisF.$contactList.clearChild();
    thisF.$itemByName = phoneNumbers.reduce(function (ac, item) {
      var itemElt = thisF._makeContactItem(item);
      thisF.$contactList.addChild(itemElt);
      ac[item] = itemElt;
      return ac;
    }, {});
  });
};
MainFrg.prototype._makeContactItem = function (phoneNumber) {
  return (0, _Core._)({
    tag: _ContactItem["default"].tag,
    props: {
      name: phoneNumber,
      online: true
    },
    on: {
      pressvoice: this.callTo.bind(this, phoneNumber, 'voice'),
      pressvideo: this.callTo.bind(this, phoneNumber, 'video')
    }
  });
};
MainFrg.prototype.ev_whoOnline = function (data, pack) {
  if (pack.sourcePhone === this.phone.number) return;
  if (!pack.sourcePhone) return;
  var itemElt = this.$itemByName[pack.sourcePhone];
  if (!itemElt) {
    itemElt = this._makeContactItem(pack.sourcePhone);
    this.$itemByName[pack.sourcePhone] = itemElt;
    this.$contactList.addChild(itemElt);
  }
  itemElt.online = true;
};
MainFrg.prototype.ev_otherOffline = function (userInfo) {
  var itemElt = this.$itemByName[userInfo.name];
  if (itemElt) itemElt.online = false;
};
MainFrg.prototype.ev_income = function (incomeData) {
  var app = this.getContext("APP");
  console.log(incomeData);
  app.startFrag(_IncomeFrg["default"], {
    incomeType: incomeData.type,
    from: incomeData.from,
    conversationId: incomeData.id
  }, true).then(function (returns) {
    if (returns && returns.answer === 'ACCEPT') {
      app.startFrag(_ConversationFrg["default"]);
    }
  });
};
MainFrg.prototype.callTo = function (phoneNumber, type) {
  var app = this.getContext("APP");
  app.startFrag(_OutgoingFrg["default"], {
    outgoingType: type,
    to: phoneNumber
  }, true).then(function (returns) {
    if (returns && returns.answer === 'ACCEPT') {
      app.startFrag(_ConversationFrg["default"]);
    }
  });
};
var _default = MainFrg;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Fragment = _interopRequireDefault(__webpack_require__(5925));
var _Core = __webpack_require__(8182);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
__webpack_require__(52440);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
 * @typedef {{from: string, conversationId: string, incomeType:("voice"|"video")}} Income
 */

/***
 *
 * @augments Income
 * @augments Fragment
 * @constructor
 * @param {Income} props
 */
function OutgoingFrg(props) {
  _Fragment["default"].call(this);
  this.to = null;
  this.outgoingType = 'voice';
  /***
   *
   * @type {GPhone|null}
   */
  this.phone = null;
  Object.assign(this, props);
}
_OOP["default"].mixClass(OutgoingFrg, _Fragment["default"]);
OutgoingFrg.prototype.createView = function () {
  this.$view = (0, _Core._)({
    "class": ['gdv-fragment', 'gdv-outgoing-frag'],
    child: [{
      "class": 'gdv-income-frag-info',
      child: [{
        "class": 'gdv-income-frag-name',
        child: {
          text: this.to
        }
      }, {
        "class": 'gdv-income-frag-type',
        child: {
          text: 'outgoing voice chat'
        }
      }, {
        "class": 'gdv-income-frag-status',
        child: {
          text: 'DIAL'
        }
      }]
    }, {
      "class": 'gdv-outgoing-frag-button-ctn',
      child: [{
        tag: 'button',
        "class": ['gdv-income-frag-action-btn', 'gdv-outgoing-frag-cancel-btn'],
        child: 'span.mdi.mdi-phone-hangup'
      }]
    }]
  });
  this.$cancelBtn = (0, _Core.$)('.gdv-outgoing-frag-cancel-btn', this.$view).on('click', this.cancel.bind(this));
  this.$status = (0, _Core.$)('.gdv-income-frag-status', this.$view);
};
OutgoingFrg.prototype.onStart = function () {
  this.phone = this.getContext("PHONE");
  this.phone.dial(this.to, 20000, function (data) {
    if (data.state === 'WAITING') {
      this.$status.firstChild.data = "WAITING";
    } else if (data.state === "ACCEPT") {
      this.returns = {
        answer: "ACCEPT"
      };
      this.stop();
    } else /*if (data.state === "NOT_RESPONSE" || data.state === "BUSY" || data.state === 'NOT_ANSWER')*/{
        this.$status.firstChild.data = data.state;
        this.returns = {
          state: data.state
        };
        this.$cancelBtn.disabled = true;
        setTimeout(this.stop.bind(this), 3000);
      }
  }.bind(this));
};
OutgoingFrg.prototype.onStop = function () {
  // this.connector.offReceive('outgoing_response', this.ev_receiveOutgoingResponse);
  // clearInterval(this._statusAnim);
};
OutgoingFrg.prototype.cancel = function () {
  this.$cancelBtn.disabled = true;
  this.$status.firstChild.data = "CANCELED";
  setTimeout(this.stop.bind(this), 500);
};
var _default = OutgoingFrg;
exports["default"] = _default;

/***/ }),

/***/ 94147:
/***/ ((module) => {

"use strict";


module.exports = {
  host: 'absol.cf',
  port: 4000,
  ip: '45.117.171.211',
  sslCrt: '/etc/letsencrypt/live/www.absol.cf/fullchain.pem',
  sslKey: '/etc/letsencrypt/live/www.absol.cf/privkey.pem',
  mediasoup: {
    // Worker settings
    worker: {
      rtcMinPort: 10000,
      rtcMaxPort: 10100,
      logLevel: 'warn',
      logTags: ['info', 'ice', 'dtls', 'rtp', 'srtp', 'rtcp'
      // 'rtx',
      // 'bwe',
      // 'score',
      // 'simulcast',
      // 'svc'
      ]
    },

    // Router settings
    router: {
      mediaCodecs: [{
        kind: 'audio',
        mimeType: 'audio/opus',
        clockRate: 48000,
        channels: 2
      }, {
        kind: 'video',
        mimeType: 'video/VP8',
        clockRate: 90000,
        parameters: {
          'x-google-start-bitrate': 1000
        }
      }]
    },
    // WebRtcTransport settings
    webRtcTransport: {
      listenIps: [{
        ip: '45.117.171.211',
        announcedIp: null
      }],
      maxIncomingBitrate: 1500000,
      initialAvailableOutgoingBitrate: 1000000
    }
  }
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
__webpack_require__(89074);
var _DebugTask = _interopRequireDefault(__webpack_require__(69382));
__webpack_require__(19858);
__webpack_require__(47515);
var _Draggable = _interopRequireDefault(__webpack_require__(39891));
var _EmojiChars = _interopRequireDefault(__webpack_require__(24394));
var _EmojiAnims = _interopRequireDefault(__webpack_require__(98541));
var _install = _interopRequireDefault(__webpack_require__(4337));
var _BlurTrigger = _interopRequireDefault(__webpack_require__(17471));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var AComp = {
  core: _ACore["default"],
  $: _ACore["default"].$,
  _: _ACore["default"]._,
  creator: _ACore["default"].creator,
  buildDom: _ACore["default"].buildDom,
  runDebugTask: _DebugTask["default"].start.bind(_DebugTask["default"]),
  Draggable: _Draggable["default"],
  EmojiChars: _EmojiChars["default"],
  EmojiAnims: _EmojiAnims["default"],
  install: _install["default"],
  BlurTrigger: _BlurTrigger["default"]
};
window.runDebugTask = _DebugTask["default"].start.bind(_DebugTask["default"]);
var _default = AComp;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = exports._ = exports.$$ = exports.$ = void 0;
__webpack_require__(7425);
var _Dom = _interopRequireDefault(__webpack_require__(64821));
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;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(63824);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _SearchStringArrayAdapter = _interopRequireDefault(__webpack_require__(27521));
var _SearchObjectArrayAdapter = _interopRequireDefault(__webpack_require__(10035));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 *
 * @extends {AElement}
 * @constructor
 */
function AutoCompleteInput() {
  this.$input = $('input', this).on('keyup', this.eventHandler.keyup).on('keydown', this.eventHandler.keydown).on('focus', this.eventHandler.focus).on('blur', this.eventHandler.blur);
  this.$dropdown = $('.absol-autocomplete-input-dropdown', this);
  this.$vscroller = $('bscroller', this).on('click', this.eventHandler.vscrollerClick);
  this.$poolItems = [];
  this._currentData = [];
  this._sessionIndex = 0;
  this._updatedSession = -1;
  this._cache = {};
  _OOP["default"].drillProperty(this, this.$input, 'value');
}
AutoCompleteInput.tag = 'AutoCompleteInput'.toLowerCase();
AutoCompleteInput.render = function () {
  return _({
    extendEvent: 'change',
    "class": 'absol-autocomplete-input',
    child: ['input[type="text"].absol-autocomplete-input-text', {
      "class": 'absol-autocomplete-input-dropdown',
      style: {
        display: 'none'
      },
      child: {
        tag: 'bscroller',
        style: {
          'max-height': '500px'
        }
      }
    }]
  });
};
AutoCompleteInput.eventHandler = {};
AutoCompleteInput.eventHandler.keyup = function (event) {
  if (this._keyTimeout) {
    clearTimeout(this._keyTimeout);
    this._keyTimeout = 0;
  }
  var cTimeout = setTimeout(function () {
    clearTimeout(cTimeout);
    this.find();
  }.bind(this), 300);
  if (this._cacheTimeout) {
    clearTimeout(this._cacheTimeout);
    this._cacheTimeout = 0;
  }
  var cacheTimeout = setTimeout(function () {
    clearTimeout(cacheTimeout);
    this.clearCache();
  }.bind(this), 300);
  this._cacheTimeout = cacheTimeout;
  this._keyTimeout = cTimeout;
};
AutoCompleteInput.eventHandler.blur = function () {
  if (!this.hasClass('focus')) return;
  this.removeClass('focus');
  $(document.body).off('mousedown', this.eventHandler.clickOut);
};
AutoCompleteInput.eventHandler.focus = function () {
  if (this.hasClass('focus')) return;
  this.addClass('focus');
  $(document.body).on('mousedown', this.eventHandler.clickOut);
};
AutoCompleteInput.eventHandler.clickOut = function (event) {
  if (_EventEmitter["default"].hitElement(this, event)) return;
  $(document.body).off('mousedown', this.eventHandler.clickOut);
  var text = this.$input.value;
  if (this._lastValue != text) {
    this._lastValue = text;
    this.$dropdown.addStyle('display', 'none');
    this._lastValue = text;
    this.emit('change', {
      target: this,
      value: text
    }, this);
  }
};
AutoCompleteInput.eventHandler.vscrollerClick = function (event) {
  var current = event.target;
  while (current && current.hasClass && !current.hasClass('absol-autocomplete-input-item') && current != this.$vscroller) {
    current = current.parentElement;
  }
  if (current && current._holderItem) {
    var text = this.getItemText(current._holderItem);
    this.$input.value = text;
    this._lastQuery = text;
    this._selectedIndex = current._holderIndex;
    this.$dropdown.addStyle('display', 'none');
    this._lastValue = text;
    this.emit('change', {
      target: this,
      value: text
    }, this);
  }
};
AutoCompleteInput.eventHandler.keydown = function (event) {
  var key = event.key;
  if (key === 'ArrowDown') {
    if (this._selectedIndex + 1 < this._currentData.length) {
      if (this.$poolItems[this._selectedIndex]) {
        this.$poolItems[this._selectedIndex].removeClass('active');
      }
      this._selectedIndex += 1;
      if (this.$poolItems[this._selectedIndex]) {
        this.$poolItems[this._selectedIndex].addClass('active');
        this.$vscroller.scrollInto(this.$poolItems[this._selectedIndex]);
      }
    }
    event.preventDefault();
  } else if (key === 'ArrowUp') {
    if (this._selectedIndex - 1 >= 0) {
      if (this.$poolItems[this._selectedIndex]) {
        this.$poolItems[this._selectedIndex].removeClass('active');
      }
      this._selectedIndex -= 1;
      if (this.$poolItems[this._selectedIndex]) {
        this.$poolItems[this._selectedIndex].addClass('active');
        this.$vscroller.scrollInto(this.$poolItems[this._selectedIndex]);
      }
    }
    event.preventDefault();
  } else if (key === 'Enter') {
    var text;
    if (this._currentData[this._selectedIndex] === undefined) {
      text = this.$input.value;
    } else {
      text = this.getItemText(this._currentData[this._selectedIndex]);
      this.$input.value = text;
    }
    this._lastQuery = text;
    this.$dropdown.addStyle('display', 'none');
    this._lastValue = text;
    this.emit('change', {
      target: this,
      value: text
    }, this);
  }
};
AutoCompleteInput.prototype.focus = function () {
  if (this.disabled) return;
  this.$input.focus.apply(this.$input, arguments);
};
AutoCompleteInput.prototype.blur = function () {
  this.$input.blur.apply(this.$input, arguments);
};
AutoCompleteInput.prototype.select = function () {
  this.$input.select.apply(this.$input, arguments);
};
AutoCompleteInput.prototype.find = function () {
  var query = this.$input.value;
  if (query == this._lastQuery) return;
  this._lastQuery = query;
  var currentSession = ++this._sessionIndex;
  if (!query) {
    this.pushData([], currentSession, query);
    return;
  }
  if (this.disableCache) {
    var onReciveData = function (data) {
      cacheHolder.data = data;
      this.pushData(data, currentSession, query); //sessionIndex may be change
    }.bind(this);
    var result = this.queryItems(query);
    if (typeof result.then == 'function') result.then(onReciveData);else onReciveData(result);
  } else {
    if (this._cache[query]) {
      this._cache[query].sessionIndex = currentSession;
      if (!this._cache[query].pending) {
        var data = this._cache[query].data;
        this.pushData(data, currentSession);
      }
    } else {
      var cacheHolder = {
        pending: true,
        sessionIndex: currentSession
      };
      var onReciveData = function (data) {
        cacheHolder.data = data;
        cacheHolder.pending = false;
        this.pushData(data, cacheHolder.sessionIndex, query); //sessionIndex may be change
      }.bind(this);
      var result = this.queryItems(query);
      if (typeof result.then == 'function') result.then(onReciveData);else onReciveData(result);
      this._cache[query] = cacheHolder;
    }
  }
};
AutoCompleteInput.prototype.pushData = function (data, sessionIndex, query) {
  if (sessionIndex > this._updatedSession) {
    this._updatedSession = sessionIndex;
    this.$vscroller.clearChild();
    this._currentData = data;
    if (data && data.length > 0) {
      this.$dropdown.removeStyle('display');
    } else {
      this.$dropdown.addStyle('display', 'none');
    }
    var maxHeight = this.getComputedStyleValue('max-height');
    if (maxHeight == 'none' || !maxHeight) {
      maxHeight = 10000;
    } else {
      maxHeight = parseFloat(maxHeight.replace('px', ''));
    }
    var outBound = _Dom["default"].traceOutBoundingClientRect(this);
    var bound = this.$input.getBoundingClientRect();
    var aTop = bound.top - outBound.top;
    var aBotom = outBound.bottom - bound.bottom;
    this.$dropdown.removeClass('top');
    if (aTop > aBotom) {
      maxHeight = Math.min(maxHeight, aTop - 10);
    } else {
      maxHeight = Math.min(maxHeight, aBotom - 10);
    }
    this.$vscroller.addStyle('max-height', maxHeight + 'px');
    this._selectedIndex = -1;
    data.reduce(function (sync, item, i, arr) {
      return sync.then(function () {
        if (this._updatedSession != sessionIndex) return;
        return new Promise(function (rs) {
          if (this._updatedSession != sessionIndex) return;
          var reuseItem = this.$poolItems.length > i ? this.$poolItems[i] : undefined;
          if (reuseItem) {
            reuseItem.removeClass('active');
          }
          var newView = this.getItemView(item, i, _, $, query, reuseItem, this);
          newView.addClass('absol-autocomplete-input-item');
          newView._holderItem = item;
          newView._holderIndex = i;
          if (i == this._selectedIndex) newView.addClass('active');
          if (this.$poolItems.length <= i) {
            this.$poolItems.push(newView);
          } else {
            this.$poolItems[i] = newView;
          }
          this.$vscroller.addChild(newView);
          if (i == 0) {
            var estimateHeight = newView.getBoundingClientRect().height * arr.length;
            if (aTop > aBotom && estimateHeight > aBotom) {
              this.$dropdown.addClass('top');
            }
          }
          if (i >= 50 && i % 50 == 0) setTimeout(rs, 0);else rs();
        }.bind(this));
      }.bind(this));
    }.bind(this), Promise.resolve());
  }
};
AutoCompleteInput.prototype.getItemText = function (item) {
  if (this.adapter && this.adapter.getItemText) {
    return this.adapter.getItemText(item, this);
  } else if (typeof item == 'string') {
    return item;
  } else {
    throw Error('You need adapter.getItemText(item, mAutoCompleteInput) to handle your item text!');
  }
};
AutoCompleteInput.prototype.getItemView = function (item, index, _, $, query, reuseItem, refParent) {
  if (this.adapter && this.adapter.getItemView) {
    return this.adapter.getItemView(item, index, _, $, query, reuseItem, refParent, this);
  } else {
    var text = this.getItemText(item);
    if (reuseItem) {
      reuseItem.childNodes[0].innerHTML = text;
      return reuseItem;
    }
    return _({
      child: {
        tag: 'span',
        "class": 'absol-autocomplete-input-item-text',
        child: {
          text: text
        }
      }
    });
  }
};

/**
 * @param {String} query
 * @returns {Array}
 */
AutoCompleteInput.prototype.queryItems = function (query) {
  if (this.adapter && this.adapter.queryItems) {
    return this.adapter.queryItems(query, this);
  } else {
    throw new Error('Invalid adapter: queryItems(query, mAutoCompleteInput) not found!');
  }
};
AutoCompleteInput.prototype.clearCache = function (old) {
  if (typeof old != "number") old = 30;
  for (var key in this._cache) {
    var cacheHolder = this._cache[key];
    if (this._sessionIndex - cacheHolder.sessionIndex > old) {
      delete this._cache[key];
    }
  }
};
AutoCompleteInput.property = {};
AutoCompleteInput.property.adapter = {
  set: function set(value) {
    if (value instanceof Array) {
      if (value[0] == 'SearchStringArray') {
        this._adapter = new _SearchStringArrayAdapter["default"](value[1], value[2]);
      } else if (value[0] == 'SearchObjectArray') {
        this._adapter = new _SearchObjectArrayAdapter["default"](value[1], value[2]);
      } else {
        throw new Error("Unknown adapter type name");
      }
    } else {
      this._adapter = value;
    }
    if (this.adapter && this.adapter.onAttached) {
      this.adapter.onAttached(this);
    }
  },
  get: function get() {
    return this._adapter;
  }
};
AutoCompleteInput.property.selectedItem = {
  get: function get() {
    return this._currentData && this._currentData[this._selectedIndex] || null;
  }
};
AutoCompleteInput.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('absol-disabled');
    } else {
      this.removeClass('absol-disabled');
    }
  },
  get: function get() {
    return this.hasClass('absol-disabled');
  }
};
AutoCompleteInput.attribute = {};
AutoCompleteInput.attribute.disabled = {
  set: function set(value) {
    if (value === true || value === 'true' || value === null) {
      this.disabled = true;
    } else {
      this.disabled = false;
    }
  },
  get: function get() {
    return this.disabled ? 'true' : 'false';
  },
  remove: function remove() {
    this.disabled = false;
  }
};
_ACore["default"].install(AutoCompleteInput);
var _default = AutoCompleteInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(931);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Element = _interopRequireDefault(__webpack_require__(55781));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function BScroller() {
  this.addClass('as-bscroller');
}
BScroller.tag = "bscroller";
BScroller.render = function (data) {
  if (data && data.elt) {
    return $(data.elt);
  } else return _('div');
};
BScroller.prototype.scrollInto = function (element) {
  if (_Element["default"].prototype.isDescendantOf.call(element, this)) {
    var elementBound = element.getBoundingClientRect();
    var viewportBound = this.getBoundingClientRect();
    var currentScrollTop = this.scrollTop;
    var newScrollTop = currentScrollTop;
    if (elementBound.bottom > viewportBound.bottom) {
      newScrollTop = currentScrollTop + (elementBound.bottom - viewportBound.bottom);
    }
    if (elementBound.top < viewportBound.top) {
      newScrollTop = currentScrollTop - (viewportBound.top - elementBound.top);
    }
    if (newScrollTop != currentScrollTop) {
      this.scrollTop = newScrollTop;
    }
    var currentScrollLeft = this.scrollLeft;
    var newScrollLeft = currentScrollLeft;
    if (elementBound.right > viewportBound.right) {
      newScrollLeft = currentScrollLeft + (elementBound.right - viewportBound.right);
    }
    if (elementBound.left < viewportBound.left) {
      newScrollLeft = currentScrollLeft - (viewportBound.left - elementBound.left);
    }
    if (newScrollLeft != currentScrollLeft) {
      this.scrollLeft = newScrollLeft;
    }
  }
};
_ACore["default"].install(BScroller);
var _default = BScroller;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(98521);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function Board() {}
Board.tag = "board";
Board.render = function () {
  return _({
    "class": 'as-board',
    extendEvent: ['sizechange', 'changeposition']
  });
};
Board.prototype.getParent = function () {
  var parent = this.parentElement;
  while (parent) {
    if (parent.classList.contains('ac-board-table')) return parent;
    parent = parent.parentElement;
  }
  return null;
};
_ACore["default"].install(Board);
var _default = Board;
exports["default"] = _default;

/***/ }),

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

"use strict";


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"] = exports.FREE_ZONE_CLASS_NAME = exports.EFFECT_ZONE_CLASS_NAME = exports.DRAG_ZONE_CLASS_NAME = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
__webpack_require__(98521);
__webpack_require__(67711);
var _Vec = _interopRequireDefault(__webpack_require__(73316));
var _Element = _interopRequireDefault(__webpack_require__(55781));
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _EventEmitter = _interopRequireWildcard(__webpack_require__(46833));
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
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 }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function BoardTable() {
  var events = {
    touchstart: this.eventHandler.mousedown,
    mousedown: this.eventHandler.mousedown
  };
  _Hanger["default"].prototype.on2.call(this, events);
  this._childHolders = [];
  this._dragEventData = null;
  this._friends = [];
  this._longPressEventData = null;
}
BoardTable.tag = 'boardtable';
BoardTable.render = function () {
  return _({
    "class": 'as-board-table',
    extendEvent: ['sizechange', 'orderchange', 'itemleave', 'itementer', 'dragitemstart', 'dragitemend']
  });
};
var EFFECT_ZONE_CLASS_NAME = 'as-board-table-effect-zone';
exports.EFFECT_ZONE_CLASS_NAME = EFFECT_ZONE_CLASS_NAME;
var DRAG_ZONE_CLASS_NAME = 'as-board-drag-zone';
exports.DRAG_ZONE_CLASS_NAME = DRAG_ZONE_CLASS_NAME;
var FREE_ZONE_CLASS_NAME = 'as-board-free-zone';
exports.FREE_ZONE_CLASS_NAME = FREE_ZONE_CLASS_NAME;
BoardTable.EFFECT_ZONE_CLASS_NAME = EFFECT_ZONE_CLASS_NAME;
BoardTable.DRAG_ZONE_CLASS_NAME = DRAG_ZONE_CLASS_NAME;
BoardTable.FREE_ZONE_CLASS_NAME = FREE_ZONE_CLASS_NAME;
BoardTable.prototype.$preventContext = _({
  tag: 'textarea',
  "class": 'as-board-table-prevent-context',
  props: {
    readOnly: true
  }
});
BoardTable.prototype.maxScrollSpeed = 300;
BoardTable.prototype.findDomChildBefore = function (elt) {
  var nodes = this.childNodes;
  for (var i = 0; i < nodes.length; ++i) {
    if (nodes[i] == elt) return nodes[i - 1];
  }
  return null;
};
BoardTable.prototype.findDomChildAfter = function (elt) {
  var nodes = this.childNodes;
  for (var i = 0; i < nodes.length; ++i) {
    if (nodes[i] == elt) return nodes[i + 1];
  }
  return null;
};
BoardTable.prototype.addChild = function (elt) {
  if (elt.classList.contains('as-board')) {
    elt.selfRemove();
    var atElt;
    if (this._childHolders.length > 0) {
      atElt = this.findDomChildAfter(this._childHolders[this._childHolders.length - 1].elt);
      if (atElt) {
        if (atElt != -1) this.insertBefore(elt, atElt);else throw new Error("Violation data!");
      } else {
        this.appendChild(elt);
      }
    } else {
      this.appendChild(elt);
    }
    var holder = {
      elt: elt
    };
    // elt.on('sizechange', holder.onsizechange);
    this._childHolders.push(holder);
  } else {
    this.appendChild(elt);
  }
  return this;
};
BoardTable.prototype.removeChild = function (elt) {
  var holderIndex = this.findChildHolderIndex(elt);
  if (holderIndex >= 0) {
    var holder = this._childHolders[holderIndex];
    // holder.elt.off('sizechange', holder.onsizechange);
    this._childHolders.splice(holderIndex, 1);
    holder.elt.remove();
  } else {
    this["super"](elt);
  }
};
BoardTable.prototype.findChildBefore = function (elt) {
  var holderIndex = this.findChildHolderIndex(elt);
  if (holderIndex < 0) return holderIndex;
  if (holderIndex < 1) return null;
  return this._childHolders[holderIndex - 1];
};
BoardTable.prototype.findChildAfter = function (elt) {
  var holderIndex = this.findChildHolderIndex(elt);
  if (holderIndex < 0) return holderIndex;
  if (holderIndex <= this._childHolders.length) return null;
  return this._childHolders[holderIndex + 1];
};
BoardTable.prototype.addChildBefore = function (elt, at) {
  elt.selfRemove();
  var atIndex = this.findChildHolderIndex(at);
  if (elt.classList.contains('as-board')) {
    if (atIndex < 0) {
      if (this._childHolders.length > 0) {
        if (this.findDomChildAfter(this._childHolders[this._childHolders.length - 1].elt) == at) {
          atIndex = this._childHolders.length;
        } else {
          throw new Error("Invalid position, you must insert board next to other board!");
        }
      }
    }
    this.insertBefore(elt, at);
    var holder = {
      elt: elt
    };
    this._childHolders.splice(atIndex, 0, holder);
  } else {
    if (atIndex > 0) {
      throw new Error("Invalid position, you can not insert othert type between two board!");
    } else {
      this.insertBefore(elt, at);
    }
  }
  return this;
};
BoardTable.prototype.addChildAfter = function (elt, at) {
  elt.selfRemove();
  var atIndex = this.findChildHolderIndex(at);
  var afterAt = this.findDomChildAfter(at);
  if (elt.classList.contains('as-board')) {
    if (atIndex < 0) {
      if (this._childHolders.length > 0) {
        if (this.findDomChildBefore(this._childHolders[0].elt) == at) {
          atIndex = -1;
        } else throw new Error("Invalid position,  you must insert board next to other board!");
      }
    }
    var holder = {
      elt: elt
    };
    if (!afterAt) {
      this.appendChild(elt);
    } else {
      this.insertBefore(elt, afterAt);
    }
    this._childHolders.splice(atIndex + 1, 0, holder);
  } else {
    if (this._childHolders.length > 1 && atIndex >= 0 && atIndex + 1 < this._childHolders.length) {
      throw new Error("Invalid position, you can not insert othert type between two board!");
    } else {
      if (!afterAt) {
        this.appendChild(elt);
      } else {
        this.insertBefore(elt, afterAt);
      }
    }
  }
  return this;
};
BoardTable.prototype.clearChild = function () {
  this._childHolders = [];
  return _Element["default"].prototype.clearChild.call(this);
};
BoardTable.prototype.findChildHolder = function (elt) {
  return this._childHolders[this.findChildHolderIndex(elt)];
};
BoardTable.prototype.findChildHolderIndex = function (elt) {
  for (var i = 0; i < this._childHolders.length; ++i) {
    if (this._childHolders[i].elt == elt) return i;
  }
  return -1;
};
BoardTable.prototype.getEffectZone = function () {
  var ez = this;
  while (ez) {
    if (ez.classList.contains(EFFECT_ZONE_CLASS_NAME)) {
      return ez;
    }
    ez = ez.parentElement;
  }
  return this;
};
BoardTable.prototype._findDragZone = function (elt) {
  var res = null;
  while (elt != this && elt) {
    if (elt.classList.contains('as-board-table')) return null; //maybe in other
    if (!res && elt.classList.contains(DRAG_ZONE_CLASS_NAME)) {
      res = elt;
    }
    if (!res && elt.classList.contains(FREE_ZONE_CLASS_NAME)) return null; // do not drag
    elt = elt.parentElement;
  }
  return res;
};
BoardTable.prototype._findBoard = function (elt) {
  while (elt != this && elt) {
    if (elt.classList.contains('as-board')) return elt;
    elt = elt.parentElement;
  }
  return null;
};
BoardTable.prototype.getAllFriends = function () {
  var thisBT = this;
  var res = [];
  var friendQR;
  for (var i = 0; i < this._friends.length; ++i) {
    friendQR = this._friends[i];
    if (friendQR != this && friendQR && friendQR.classList && friendQR.classList.contains('as-board-table')) {
      res.push(friendQR);
    } else if (typeof friendQR == 'string') {
      // query
      $(friendQR, false, function (elt) {
        if (thisBT != elt && elt.classList && elt.classList.contains('as-board-table')) {
          res.push(elt);
        }
        return false;
      });
    }
  }
  return res;
};
BoardTable.prototype._findHoverBoardIndex = function (clientX, clientY, excludes) {
  var cli = new _Vec["default"](clientX, clientY);
  var bound;
  for (var i = 0; i < this._childHolders.length; ++i) {
    // holder =
    if (excludes && excludes.indexOf(this._childHolders[i].elt) >= 0) continue;
    bound = _Rectangle["default"].fromClientRect(this._childHolders[i].elt.getBoundingClientRect());
    if (bound.containsPoint(cli)) return i;
  }
  return -1;
};

/**
 * @type {BoardTable}
 */
BoardTable.eventHandler = {};
BoardTable.eventHandler.mousedown = function (event) {
  if (this._dragEventData) return;
  var mousePos;
  var pointerIdent = -1;
  var target;
  var isTouch = event.type === 'touchstart';
  if (isTouch) {
    var touch = event.changedTouches[0];
    target = touch.target;
    pointerIdent = touch.identifier;
    mousePos = new _Vec["default"](touch.clientX, touch.clientY);
  } else {
    mousePos = new _Vec["default"](event.clientX, event.clientY);
    target = event.target;
  }
  var dragzone = this._findDragZone(target);
  if (dragzone) {
    var boardElt = this._findBoard(dragzone);
    var holderIndex = this.findChildHolderIndex(boardElt);
    if (holderIndex < 0) return; // can not move
    var cBound = boardElt.getBoundingClientRect();
    var mouseBoardOffset = mousePos.sub(new _Vec["default"](cBound.left, cBound.top));
    this._dragEventData = {
      boardElt: boardElt,
      state: 'WAIT',
      mouseStartPos: mousePos,
      mousePos: mousePos,
      mouseBoardOffset: mouseBoardOffset,
      holderIndex: holderIndex,
      boardBound: cBound,
      isTouch: isTouch,
      pointerIdent: pointerIdent
    };
    var cEvent = _EventEmitter["default"].copyEvent(event);
    if (isTouch) {
      _Hanger["default"].prototype.on2.call(document.body, {
        touchend: this.eventHandler.touchFinishBeforeReadyDrag,
        touchcancel: this.eventHandler.touchFinishBeforeReadyDrag,
        touchmove: this.eventHandler.touchMoveBeforeReadyDrag
      });
      this.$preventContext.off('contextmenu', this.eventHandler.contextMenu); //event maybe not remove because of double click
      this.$preventContext.on('contextmenu', this.eventHandler.contextMenu);
      var thisBT = this;
      this._dragEventData._longPressTimeout = setTimeout(function () {
        thisBT._longPressEventData = -1;
        thisBT.$preventContext.addStyle({
          '--x': mousePos.x + 'px',
          '--y': mousePos.y + 'px'
        }).addTo(document.body);
        if (thisBT._dragEventData) thisBT.eventHandler.readyDrag(cEvent);
      }, 400);
    } else {
      this.eventHandler.readyDrag(event);
    }
  }
};
BoardTable.eventHandler.touchFinishBeforeReadyDrag = function (event) {
  var thisBT = this;
  var dragEventData = this._dragEventData;
  if (!dragEventData) return;
  _Hanger["default"].prototype.off2.call(document.body, {
    touchend: this.eventHandler.touchFinishBeforeReadyDrag,
    touchcancel: this.eventHandler.touchFinishBeforeReadyDrag,
    touchmove: this.eventHandler.touchMoveBeforeReadyDrag
  });
  if (this._dragEventData._longPressTimeout > 0) {
    clearTimeout(this._dragEventData._longPressTimeout);
  }
  if (dragEventData.state === 'WAIT') {
    this._dragEventData = null; // canceled
  } else {
    setTimeout(function () {
      thisBT.$preventContext.off('contextmenu', thisBT.eventHandler.contextMenu);
      thisBT.$preventContext.remove();
    }, 60);
  }
};
BoardTable.eventHandler.contextMenu = function (event) {
  event.preventDefault();
  this.$preventContext.off('contextmenu', this.eventHandler.contextMenu);
  this.$preventContext.remove();
  this.eventHandler.touchFinishBeforeReadyDrag(event);
};
BoardTable.eventHandler.touchMoveBeforeReadyDrag = function (event) {
  var dragEventData = this._dragEventData;
  var touch = (0, _EventEmitter.findChangedTouchByIdent)(event, dragEventData.pointerIdent);
  if (!touch) return;
  var mousePos = new _Vec["default"](touch.clientX, touch.clientY);
  if (dragEventData.state === 'WAIT') {
    var dv = mousePos.sub(dragEventData.mouseStartPos);
    if (dv.abs() > 8) {
      this.eventHandler.touchFinishBeforeReadyDrag(event);
      this._dragEventData = null; // cancel
    }
  } else {
    this.$preventContext.addStyle({
      '--x': mousePos.x + 'px',
      '--y': mousePos.y + 'px'
    });
  }
};
BoardTable.eventHandler.readyDrag = function (event) {
  var dragEventData = this._dragEventData;
  dragEventData.state = "PRE_DRAG";
  var bodyEvents = {};
  if (dragEventData.isTouch) {
    bodyEvents.touchmove = this.eventHandler.mousemove;
    bodyEvents.touchcancel = this.eventHandler.mousefinish;
    bodyEvents.touchend = this.eventHandler.mousefinish;
  } else {
    bodyEvents.mousemove = this.eventHandler.mousemove;
    bodyEvents.mouseup = this.eventHandler.mousefinish;
    bodyEvents.mouseleave = this.eventHandler.mousefinish;
  }
  _Hanger["default"].prototype.on2.call(document.body, bodyEvents);
  if (dragEventData.isTouch) {
    this.eventHandler.mousemove(event);
  }
};
BoardTable.eventHandler.mousemovePredrag = function (event) {
  var dragEventData = this._dragEventData;
  var mousePos = dragEventData.mousePos;
  var thisBT = this;
  event.preventDefault();
  var cBound = dragEventData.boardElt.getBoundingClientRect();
  if (mousePos.sub(dragEventData.mouseStartPos).abs() > 8 || dragEventData.isTouch) {
    dragEventData.placeHolderElt = $(dragEventData.boardElt.cloneNode(false)).addClass('as-board-place-holder').addStyle({
      width: cBound.width + 'px',
      height: cBound.height + 'px'
    });
    dragEventData.friendHolders = this.getAllFriends().concat([this]).map(function (elt) {
      //include itself
      var effectZone = elt.getEffectZone();
      var res = {
        elt: elt,
        effectZone: effectZone
      };
      if (!dragEventData.isTouch) {
        var enterEvent = thisBT.eventHandler.enterFriendEffectZone.bind(thisBT, elt);
        _Hanger["default"].prototype.on2.call(effectZone, dragEventData.isTouch ? 'touchmove' : 'mouseenter', enterEvent);
        res.enterEvent = enterEvent;
      } else {
        // use move event to detect
      }
      return res;
    });
    dragEventData.inEffectZoneOf = this;
    dragEventData.cardStyle = {
      width: dragEventData.boardElt.style.width,
      height: dragEventData.boardElt.style.height
    };
    dragEventData.boardElt.addStyle({
      width: cBound.width + 'px',
      height: cBound.height + 'px'
    });
    this.insertBefore(dragEventData.placeHolderElt, dragEventData.boardElt);
    dragEventData.state = "DRAG";
    $(document.body).addClass('as-has-board-table-drag');
    dragEventData.boardElt.addClass('as-board-moving');
    dragEventData.boardAt = dragEventData.holderIndex;
    dragEventData.boardIn = thisBT;
    this.emit('dragitemstart', {
      type: 'dragitemstart',
      target: this,
      boardElt: this._dragEventData.boardElt
    }, this);
  }
};
BoardTable.eventHandler.mousemoveDragInSelf = function (event) {
  var dragEventData = this._dragEventData;
  var mousePos = dragEventData.mousePos;
  if (this._childHolders.length < 2) {
    if (dragEventData.boardIn != this) {
      this.insertBefore(dragEventData.placeHolderElt, this._childHolders[0].elt);
      dragEventData.boardIn = this;
      dragEventData.boardAt = 0;
    }
  } else {
    // bản thân chỉ có 1, hoặc nhiều hơn
    var i = this._findHoverBoardIndex(mousePos.x, mousePos.y, [dragEventData.boardElt]);
    if (i >= 0) {
      if (dragEventData.boardIn != this) {
        dragEventData.boardIn = this;
      }
      var viewIndex;
      if (i < dragEventData.holderIndex && i < dragEventData.boardAt || i > dragEventData.holderIndex && i > dragEventData.boardAt || dragEventData.holderIndex == dragEventData.boardAt) {
        viewIndex = i;
      } else {
        if (dragEventData.holderIndex > dragEventData.boardAt) {
          viewIndex = i + 1;
        } else {
          viewIndex = i - 1;
        }
      }
      var fbound = this._childHolders[i].elt.getBoundingClientRect();
      var displayStyple = this._childHolders[i].elt.getComputedStyleValue('display');
      if (mousePos.x > fbound.left && mousePos.x < fbound.right && mousePos.y > fbound.top && mousePos.y < fbound.bottom) {
        if (displayStyple.startsWith('inline')) {
          if (dragEventData.boardBound.width < fbound.width) {
            if (dragEventData.boardAt > viewIndex && mousePos.x > fbound.left + dragEventData.boardBound.width) {
              viewIndex += 1;
            } else if (dragEventData.boardAt < viewIndex && mousePos.x < fbound.left + fbound.width - dragEventData.boardBound.width) {
              viewIndex -= 1;
            }
          }
        } else {
          if (dragEventData.boardBound.height < fbound.height) {
            if (dragEventData.boardAt > viewIndex && mousePos.y >= fbound.top + dragEventData.boardBound.height) {
              viewIndex += 1;
            } else if (dragEventData.boardAt < viewIndex && mousePos.y <= fbound.top + fbound.height - dragEventData.boardBound.height) {
              viewIndex -= 1;
            }
          }
        }
        viewIndex = Math.max(0, Math.min(this._childHolders.length, viewIndex));
        if (viewIndex != dragEventData.boardAt) {
          dragEventData.boardAt = viewIndex;
          if (dragEventData.holderIndex >= viewIndex) {
            this.insertBefore(dragEventData.placeHolderElt, this._childHolders[viewIndex].elt);
          } else {
            var bf = _Element["default"].prototype.findChildAfter.call(this, this._childHolders[viewIndex].elt);
            if (bf) this.insertBefore(dragEventData.placeHolderElt, bf);else {
              this.appendChild(dragEventData.placeHolderElt);
            }
          }
        }
      }
    }
  }
};
BoardTable.eventHandler.mousemoveDragInOther = function (event) {
  var dragEventData = this._dragEventData;
  var mousePos = dragEventData.mousePos;
  var other = dragEventData.inEffectZoneOf;
  if (other._childHolders.length == 0) {
    if (dragEventData.boardIn != other) {
      dragEventData.boardIn = other;
      dragEventData.boardAt = 0;
      other.appendChild(dragEventData.placeHolderElt);
    }
  } else {
    var i = other._findHoverBoardIndex(mousePos.x, mousePos.y);
    if (i >= 0) {
      if (dragEventData.boardIn != other) {
        dragEventData.boardIn = other;
      }
      var displayStyple = other._childHolders[i].elt.getComputedStyleValue('display');
      var di = 0;
      var bbound = other._childHolders[i].elt.getBoundingClientRect();
      if (displayStyple.startsWith('inline')) {
        if (mousePos.x > bbound.left + bbound.width / 2) di++;
      } else {
        if (mousePos.y > bbound.top + bbound.height / 2) di++;
      }
      i += di;
      if (i < other._childHolders.length) {
        other.insertBefore(dragEventData.placeHolderElt, other._childHolders[i].elt);
      } else {
        var bf = other.findChildAfter(other._childHolders[other._childHolders.length - 1].elt);
        if (bf) {
          other.insertBefore(dragEventData.placeHolderElt, bf);
        } else {
          other.appendChild(dragEventData.placeHolderElt);
        }
      }
      dragEventData.boardAt = i;
    }
  }
};
BoardTable.eventHandler.mousemoveDrag = function (event) {
  var dragEventData = this._dragEventData;
  if (dragEventData.inEffectZoneOf == this) {
    this.eventHandler.mousemoveDragInSelf(event);
  } else {
    this.eventHandler.mousemoveDragInOther(event);
  }
};
BoardTable.eventHandler.boarDrag = function (event) {
  var dragEventData = this._dragEventData;
  var mousePos = dragEventData.mousePos;
  var boardPos = mousePos.sub(dragEventData.mouseBoardOffset);
  dragEventData.boardElt.addStyle({
    left: boardPos.x + 'px',
    top: boardPos.y + 'px'
  });
};
BoardTable.eventHandler.dragOnEffectZone = function (event) {
  var dragEventData = this._dragEventData;
  var mousePos = dragEventData.mousePos;
  var friendHolders = dragEventData.friendHolders;
  var bound;
  for (var i = 0; i < friendHolders.length; ++i) {
    bound = _Rectangle["default"].fromClientRect(friendHolders[i].effectZone.getBoundingClientRect());
    if (bound.containsPoint(mousePos)) {
      dragEventData.inEffectZoneOf = friendHolders[i].elt;
      break;
    }
  }
};
BoardTable.eventHandler.mousemoveOverflow = function (event) {
  if (!this._dragEventData) return;
  var dragEventData = this._dragEventData;
  var scrollerX = this._dragEventData.boardIn;
  var overflowStyle;
  while (scrollerX) {
    overflowStyle = window.getComputedStyle(scrollerX)['overflow'];
    if ((overflowStyle === 'auto' || overflowStyle === 'auto hidden' || overflowStyle === 'scroll' || scrollerX.tagName === 'HTML') && scrollerX.clientWidth < scrollerX.scrollWidth) break;
    scrollerX = scrollerX.parentElement;
  }
  var scrollerY = this._dragEventData.boardIn;
  while (scrollerY) {
    overflowStyle = window.getComputedStyle(scrollerY)['overflow'];
    if ((overflowStyle === 'auto' || overflowStyle === 'hidden auto' || overflowStyle === 'scroll' || scrollerY.tagName === 'HTML') && scrollerY.clientHeight < scrollerY.scrollHeight) break;
    scrollerY = scrollerY.parentElement;
  }
  var outBound;
  var bBound;
  var screenSize = _Dom["default"].getScreenSize();
  var vx = 0;
  var vy = 0;
  bBound = this._dragEventData.boardElt.getBoundingClientRect();
  if (scrollerX) {
    if (dragEventData.$scrollerX !== scrollerX) {
      dragEventData.scrollerXValue = scrollerX.scrollLeft;
      dragEventData.$scrollerX = scrollerX;
    }
    outBound = scrollerX.getBoundingClientRect();
    outBound = {
      left: Math.max(outBound.left, 0),
      top: Math.max(outBound.top, 0),
      bottom: Math.min(outBound.bottom, screenSize.height),
      right: Math.min(outBound.right, screenSize.width)
    };
    if (bBound.left < outBound.left) {
      vx = bBound.left - outBound.left;
    } else if (bBound.right > outBound.right) {
      vx = bBound.right - outBound.right;
    }
  } else {
    dragEventData.$scrollerX = null;
  }
  if (scrollerY) {
    if (dragEventData.$scrollerY !== scrollerY) {
      dragEventData.scrollerYValue = scrollerY.scrollTop;
      dragEventData.$scrollerY = scrollerY;
    }
    outBound = scrollerY.getBoundingClientRect();
    outBound = {
      left: Math.max(outBound.left, 0),
      top: Math.max(outBound.top, 0),
      bottom: Math.min(outBound.bottom, screenSize.height),
      right: Math.min(outBound.right, screenSize.width)
    };
    if (bBound.top < outBound.top) {
      vy = bBound.top - outBound.top;
    } else if (bBound.bottom > outBound.bottom) {
      vy = bBound.bottom - outBound.bottom;
    }
  } else {
    dragEventData.$scrollerY = null;
  }
  vx = Math.max(-this.maxScrollSpeed, Math.min(this.maxScrollSpeed, vx * Math.sqrt(Math.abs(vx))));
  vy = Math.max(-this.maxScrollSpeed, Math.min(this.maxScrollSpeed, vy * Math.sqrt(Math.abs(vy))));
  if (vx !== 0 || vy !== 0) {
    var copyEvent = {
      type: event.type,
      preventDefault: function preventDefault() {/* noop */
      },
      target: event.target
    };
    if (event.type === 'touchmove') {
      copyEvent.changedTouches = Array.prototype.map.call(event.changedTouches, function (it) {
        return {
          identifier: it.identifier,
          clientX: it.clientX,
          clientY: it.clientY,
          target: it.target
        };
      });
      copyEvent.touches = Array.prototype.map.call(event.touches, function (it) {
        return {
          identifier: it.identifier,
          clientX: it.clientX,
          clientY: it.clientY,
          target: it.target
        };
      });
    } else {
      copyEvent.clientX = event.clientX;
      copyEvent.clientY = event.clientY;
    }
    var thisBT = this;
    var now = new Date().getTime();
    if (dragEventData.requestAnimationFrameId >= 0) {
      cancelAnimationFrame(dragEventData.requestAnimationFrameId);
    }
    dragEventData.requestAnimationFrameId = requestAnimationFrame(function () {
      dragEventData.requestAnimationFrameId = -1;
      var dt = (new Date().getTime() - now) / 1000;
      if (dragEventData.$scrollerY) {
        dragEventData.scrollerYValue += vy * dt;
        dragEventData.scrollerYValue = Math.max(0, Math.min(dragEventData.$scrollerY.scrollHeight - dragEventData.$scrollerY.clientHeight, dragEventData.scrollerYValue));
        dragEventData.$scrollerY.scrollTop = dragEventData.scrollerYValue;
      }
      if (dragEventData.$scrollerX) {
        dragEventData.scrollerXValue += vx * dt;
        dragEventData.scrollerXValue = Math.max(0, Math.min(dragEventData.$scrollerX.scrollWidth - dragEventData.$scrollerX.clientWidth, dragEventData.scrollerXValue));
        dragEventData.$scrollerX.scrollLeft = dragEventData.scrollerXValue;
      }
      if (thisBT._dragEventData && thisBT._dragEventData.state === "DRAG") {
        thisBT.eventHandler.mousemoveOverflow(copyEvent);
      }
    });
  }
};
BoardTable.eventHandler.mousemove = function (event) {
  var dragEventData = this._dragEventData;
  var isTouch = event.type === 'touchmove' || event.type === 'touchstart'; // call from timeout
  if (dragEventData.isTouch !== isTouch) return;
  var mousePos;
  var pointerIdent;
  var touch = -2;
  if (isTouch) {
    touch = (0, _EventEmitter.findChangedTouchByIdent)(event, dragEventData.pointerIdent);
    if (touch) {
      pointerIdent = touch.identifier;
      mousePos = new _Vec["default"](touch.clientX, touch.clientY);
    }
  } else {
    pointerIdent = -1;
    mousePos = new _Vec["default"](event.clientX, event.clientY);
  }
  if (dragEventData.pointerIdent !== pointerIdent) return;
  dragEventData.mousePos = mousePos;
  event.preventDefault();
  if (dragEventData.isTouch && dragEventData.state === 'DRAG') {
    this.eventHandler.dragOnEffectZone(event); //because touch not have mouseenter event
  }

  if (dragEventData.state === 'PRE_DRAG') {
    this.eventHandler.mousemovePredrag(event);
  }
  if (dragEventData.state === 'DRAG') {
    this.eventHandler.mousemoveDrag(event);
    this.eventHandler.boarDrag(event);
    this.eventHandler.mousemoveOverflow(event);
  }
};
BoardTable.eventHandler.mousefinish = function (event) {
  var dragEventData = this._dragEventData;
  var isTouch = event.type === 'touchend';
  if (dragEventData.isTouch !== isTouch) return;
  var mousePos;
  var pointerIdent;
  var touch = -2;
  if (isTouch) {
    touch = (0, _EventEmitter.findChangedTouchByIdent)(event, dragEventData.pointerIdent);
    if (touch) {
      pointerIdent = touch.identifier;
      mousePos = new _Vec["default"](touch.clientX, touch.clientY);
    }
  } else {
    pointerIdent = -1;
    mousePos = new _Vec["default"](event.clientX, event.clientY);
  }
  if (dragEventData.pointerIdent !== pointerIdent) return;
  dragEventData.mousePos = mousePos;
  var changed;
  if (dragEventData.state == 'DRAG') {
    setTimeout(function () {
      $(document.body).removeClass('as-has-board-table-drag');
    }, 1);
    dragEventData.boardElt.removeClass('as-board-moving').removeStyle('left').removeStyle('top');
    dragEventData.boardElt.addStyle(dragEventData.cardStyle);
    dragEventData.placeHolderElt.remove();
    dragEventData.state = "FINISH";
    if (!dragEventData.isTouch) dragEventData.friendHolders.forEach(function (holder) {
      _Hanger["default"].prototype.off2.call(holder.effectZone, 'mouseenter', holder.enterEvent);
    });
    if (dragEventData.boardIn == this) {
      if (dragEventData.holderIndex != dragEventData.boardAt) {
        if (dragEventData.holderIndex > dragEventData.boardAt) {
          this.insertBefore(dragEventData.boardElt, this._childHolders[dragEventData.boardAt].elt);
        } else if (dragEventData.holderIndex < dragEventData.boardAt) {
          var bf = _Element["default"].prototype.findChildAfter.call(this, this._childHolders[dragEventData.boardAt].elt);
          if (bf) this.insertBefore(dragEventData.boardElt, bf);else {
            this.appendChild(dragEventData.boardElt);
          }
        }
        var holder = this._childHolders.splice(dragEventData.holderIndex, 1)[0];
        this._childHolders.splice(dragEventData.boardAt, 0, holder);
        changed = 'orderchange';
        this.emit('orderchange', {
          type: 'orderchange',
          boardElt: holder.elt,
          action: 'move',
          from: dragEventData.holderIndex,
          to: dragEventData.boardAt,
          target: this
        }, this);
      }
    } else {
      var holder = this._childHolders.splice(dragEventData.holderIndex, 1)[0];
      holder.elt.remove();
      ///remove all event
      var other = dragEventData.boardIn;
      changed = 'itemleave';
      this.emit('itemleave', {
        type: 'itemleave',
        item: holder.elt,
        from: {
          index: dragEventData.holderIndex,
          table: this
        },
        to: {
          index: dragEventData.boardAt,
          table: other
        },
        target: this
      }, this);
      if (other._childHolders.length == 0) {
        other.appendChild(holder.elt);
        other._childHolders.push(holder);
      } else {
        if (dragEventData.boardAt < other._childHolders.length) {
          other.insertBefore(holder.elt, other._childHolders[dragEventData.boardAt].elt);
          other._childHolders.splice(dragEventData.boardAt, 0, holder);
        } else {
          var bf = other.findDomChildAfter(other._childHolders.elt);
          if (bf) {
            other.insertBefore(holder.elt, bf);
          } else {
            other.appendChild(holder.elt);
          }
          other._childHolders.push(holder);
        }
      }
      other.emit('itementer', {
        type: 'itementer',
        item: holder.elt,
        target: other,
        from: {
          index: dragEventData.holderIndex,
          table: this
        },
        to: {
          index: dragEventData.boardAt,
          table: other
        }
      }, other);
    }
    this.emit('dragitemend', {
      type: 'dragitemend',
      target: this,
      changed: changed,
      boardElt: this._dragEventData.boardElt
    }, this);
  }
  var bodyEvents = {};
  if (dragEventData.isTouch) {
    bodyEvents.touchmove = this.eventHandler.mousemove;
    bodyEvents.touchcancel = this.eventHandler.mousefinish;
    bodyEvents.touchend = this.eventHandler.mousefinish;
  } else {
    bodyEvents.mousemove = this.eventHandler.mousemove;
    bodyEvents.mouseup = this.eventHandler.mousefinish;
    bodyEvents.mouseleave = this.eventHandler.mousefinish;
  }
  _Hanger["default"].prototype.off2.call(document.body, bodyEvents);
  this._dragEventData = null;
};
BoardTable.eventHandler.enterFriendEffectZone = function (friendElt, event) {
  this._dragEventData.inEffectZoneOf = friendElt;
};
BoardTable.prototype.getAllBoards = function () {
  return this._childHolders.map(function (holder) {
    return holder.elt;
  });
};
BoardTable.property = {};
BoardTable.property.friends = {
  set: function set(value) {
    value = value || [];
    if (!(value instanceof Array)) value = [value];
    this._friends = value;
  },
  get: function get() {
    return this._friends;
  }
};
_ACore["default"].install(BoardTable);
var _default = BoardTable;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(99607);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
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); }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function ButtonArray() {
  this._dict = {};
  this._pool = [];
  this._items = [];
  this.$lastActiveBtn = null;
  this._value = undefined;
  this._lastValue = this._value;
}
ButtonArray.tag = 'buttonarray';
ButtonArray.render = function () {
  return _({
    extendEvent: ['change'],
    "class": 'as-button-array'
  });
};
ButtonArray.prototype._newButton = function () {
  var button = _({
    tag: 'button',
    "class": 'as-button-array-item',
    child: {
      text: 'null'
    }
  });
  button.on('click', this.eventHandler.clickItem.bind(this, button));
  return button;
};
ButtonArray.prototype._requestButton = function (items) {
  var button;
  if (this._pool.length > 0) {
    button = this._pool.pop();
  } else {
    button = this._newButton();
  }
  return button;
};
ButtonArray.prototype._assignButton = function (button, data) {
  button._data = data;
  button.childNodes[0].data = data.text;
};
ButtonArray.prototype._releaseButton = function (button) {
  this._pool.push(button);
};
ButtonArray.prototype._getFullFormat = function (item) {
  var res = {};
  if (typeof item == 'string' || typeof item == 'number' || typeof item == 'boolean' || item === null || item === undefined) {
    res.ident = item;
    res.value = item;
    res.text = item + '';
  } else if (item && _typeof(item) == 'object') {
    res.value = item.value;
    res.ident = res.value + '';
    res.text = item.text;
  }
  return res;
};
ButtonArray.property = {};

/**
 * @type {ButtonArray}
 */
ButtonArray.property.items = {
  set: function set(items) {
    items = items || [];
    this._items = items;
    var child;
    while (this.childNodes.length > items.length) {
      child = this.lastChild;
      this._releaseButton(child);
      this.removeChild(child);
    }
    while (this.childNodes.length < items.length) {
      this.addChild(this._requestButton());
    }
    var item;
    for (var i = 0; i < items.length; ++i) {
      item = this._getFullFormat(items[i]);
      this._assignButton(this.childNodes[i], item);
      this._dict[item.ident] = {
        elt: this.childNodes[i],
        data: item
      };
    }
    if (items.length > 0) {
      if (!this._dict[this._value + '']) {
        this._value = this._getFullFormat(items[0]).value;
      }
    }
    this.value = this._value;
  },
  get: function get() {
    return this._items;
  }
};
ButtonArray.property.value = {
  set: function set(value) {
    this._value = value;
    this._lastValue = this._value;
    if (this.$lastActiveBtn) {
      this.$lastActiveBtn.removeClass('as-active');
      this.$lastActiveBtn = null;
    }
    var hodler = this._dict[value + ''];
    if (hodler) {
      hodler.elt.addClass('as-active');
      this.$lastActiveBtn = hodler.elt;
    }
  },
  get: function get() {
    return this._value;
  }
};
ButtonArray.eventHandler = {};
ButtonArray.eventHandler.clickItem = function (item, event) {
  if (this._lastValue != item._data.value) {
    this.value = item._data.value;
    this.emit('change', {
      target: this,
      value: this.value,
      type: 'change'
    }, this);
  }
};
_ACore["default"].install(ButtonArray);
var _default = ButtonArray;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(11839);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _ButtonArray = _interopRequireDefault(__webpack_require__(34169));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
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); }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var ChevronLeft = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 410.258 410.258" style="enable-background:new 0 0 410.258 410.258;" xml:space="preserve">\n' + '<polygon points="298.052,24 266.052,0 112.206,205.129 266.052,410.258 298.052,386.258 162.206,205.129 "/>\n' + '</svg>';
var ChevronRight = '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n' + '\t viewBox="0 0 410.258 410.258" style="enable-background:new 0 0 410.258 410.258;" xml:space="preserve">\n' + '<polygon points="144.206,0 112.206,24 248.052,205.129 112.206,386.258 144.206,410.258 298.052,205.129 "/>\n' + '</svg>';

/***
 * @extends AElement
 * @constructor
 */
function ButtonRange() {
  this._dict = {};
  this._pool = [];
  this._items = [];
  this.$lastActiveBtn = null;
  this._value = undefined;
  this._lastValue = this._value;
  this.$scroller = $('.as-button-range-scroller', this).on('wheel', this.eventHandler.wheel);
  this.$prevBtn = $('.as-button-range-left-btn', this).on('click', this.prevValue.bind(this));
  this.$nextBtn = $('.as-button-range-right-btn', this).on('click', this.nextValue.bind(this));
  this._scrollTimeout = -1;
  this._scrollToSelected = this._scrollToSelected.bind(this);
  this.$attachhook = $('attachhook', this).on('error', this.eventHandler.attached);
  this.autoWidth = false;
}
ButtonRange.tag = 'buttonrange';
ButtonRange.render = function () {
  return _({
    extendEvent: ['change'],
    "class": 'as-button-range',
    child: [{
      "class": 'as-button-range-scroller'
    }, {
      "class": 'as-button-range-left-ctn',
      child: {
        tag: 'button',
        "class": 'as-button-range-left-btn',
        child: ChevronLeft
      }
    }, {
      "class": 'as-button-range-right-ctn',
      child: {
        tag: 'button',
        "class": 'as-button-range-right-btn',
        child: ChevronRight
      }
    }, 'attachhook']
  });
};
ButtonRange.prototype._updateUnderlinePosition = function () {
  if (!this.$lastActiveBtn) return;
  var scrollerFirstBound = this.$scroller.firstChild.getBoundingClientRect();
  if (scrollerFirstBound.width === 0) return;
  var activeBound = this.$lastActiveBtn.getBoundingClientRect();
  this.addStyle({
    '--underline-left': activeBound.left - scrollerFirstBound.left + 'px',
    '--underline-width': activeBound.width + 'px'
  });
};
ButtonRange.prototype.updateSize = function () {
  if (this.autoWidth) {
    if (this.$scroller.childNodes.length > 0) {
      var left = this.$scroller.firstChild.getBoundingClientRect().left;
      var right = this.$scroller.lastChild.getBoundingClientRect().right;
      if (left < right) {
        var fontSize = this.getFontSize() || 14;
        this.addStyle('width', (right - left + 2) / fontSize + 2 + 'em');
      }
    }
  }
  this._updateUnderlinePosition();
  this._scrollToSelected();
};
ButtonRange.prototype._newButton = function () {
  var button = _({
    tag: 'button',
    "class": 'as-button-range-item',
    child: {
      text: 'null'
    }
  });
  button.on('click', this.eventHandler.clickItem.bind(this, button));
  return button;
};
ButtonRange.prototype._requestButton = function (items) {
  var button;
  if (this._pool.length > 0) {
    button = this._pool.pop();
  } else {
    button = this._newButton();
  }
  return button;
};
ButtonRange.prototype._assignButton = function (button, data) {
  button._data = data;
  button.childNodes[0].data = data.text;
};
ButtonRange.prototype._releaseButton = function (button) {
  this._pool.push(button);
};
ButtonRange.prototype._requireButton = function (n) {
  var child;
  while (this.$scroller.childNodes.length > n) {
    child = this.$scroller.lastChild;
    this._releaseButton(child);
    this.$scroller.removeChild(child);
  }
  while (this.$scroller.childNodes.length < n) {
    this.$scroller.addChild(this._requestButton());
  }
};
ButtonRange.prototype._assignButtonList = function (items) {
  var item;
  for (var i = 0; i < items.length; ++i) {
    item = this._getFullFormat(items[i]);
    this._assignButton(this.$scroller.childNodes[i], item);
    this._dict[item.ident] = {
      elt: this.$scroller.childNodes[i],
      data: item
    };
  }
};
ButtonRange.prototype._scrollToSelected = function () {
  if (this._scrollTimeout >= 0) return;
  if (!this.$lastActiveBtn) return;
  var scrollerBound = this.$scroller.getBoundingClientRect();
  if (scrollerBound.width === 0) return;
  var activeBound = this.$lastActiveBtn.getBoundingClientRect();
  var dx, speed;
  if (activeBound.left < scrollerBound.left - 1) {
    dx = activeBound.left - scrollerBound.left;
    if (dx < -500) dx = -500;
    speed = Math.sqrt(-dx * 2 + 4);
    this.$scroller.scrollLeft -= speed;
  } else if (activeBound.right - 1 > scrollerBound.right) {
    dx = activeBound.right - scrollerBound.right;
    if (dx > 500) dx = 500;
    speed = Math.sqrt(dx * 2 + 4);
    this.$scroller.scrollLeft += speed;
  } else {
    return;
  }
  var thisBR = this;
  this._scrollTimeout = setTimeout(function () {
    thisBR._scrollTimeout = -1;
    thisBR._scrollToSelected();
  }, 20);
};
ButtonRange.prototype.nextValue = function (userAction) {
  var currentIndex = this._findActiveIndex();
  var nextIndex;
  var nextValue;
  if (currentIndex < 0) {
    nextIndex = 0;
  } else {
    nextIndex = Math.min(this._items.length - 1, currentIndex + 1);
  }
  if (nextIndex >= 0) {
    nextValue = this._getFullFormat(this._items[nextIndex]).value;
    this.value = nextValue;
    if (userAction) this.notifyChange();
  }
};
ButtonRange.prototype.prevValue = function (userAction) {
  var currentIndex = this._findActiveIndex();
  var prevIndex;
  var prevValue;
  if (currentIndex < 0) {
    prevIndex = 0;
  } else {
    prevIndex = Math.max(0, currentIndex - 1);
  }
  if (prevIndex >= 0 && prevIndex < this._items.length && prevIndex != currentIndex) {
    prevValue = this._getFullFormat(this._items[prevIndex]).value;
    this.value = prevValue;
    if (userAction) this.notifyChange();
  }
};
ButtonRange.prototype._findActiveIndex = function () {
  var item;
  var value = this._value;
  for (var i = 0; i < this._items.length; ++i) {
    item = this._items[i];
    if (item === value || item && item.value === value) return i;
  }
  return -1;
};
ButtonRange.prototype._getFullFormat = function (item) {
  var res = {};
  if (typeof item == 'string' || typeof item == 'number' || typeof item == 'boolean' || item === null || item === undefined) {
    res.ident = item + '';
    res.value = item;
    res.text = item + '';
  } else if (item && _typeof(item) == 'object') {
    res.value = item.value;
    res.ident = res.value + '';
    res.text = item.text;
  }
  return res;
};
ButtonRange.prototype.notifyChange = function () {
  this.emit('change', {
    target: this,
    value: this.value,
    type: 'change'
  }, this);
};
ButtonRange.property = {};

/**
 * @type {ButtonRange}
 */
ButtonRange.property.items = {
  set: function set(items) {
    items = items || [];
    this._items = items;
    this._requireButton(items.length);
    this._assignButtonList(items);
    if (items.length > 0) {
      if (!this._dict[this._value + '']) {
        this._value = this._getFullFormat(items[0]).value;
      }
    }
    this.value = this._value;
    this.updateSize();
  },
  get: function get() {
    return this._items;
  }
};
ButtonRange.property.value = {
  set: function set(value) {
    this._value = value;
    this._lastValue = this._value;
    if (this.$lastActiveBtn) {
      this.$lastActiveBtn.removeClass('as-active');
      this.$lastActiveBtn = null;
    }
    var hodler = this._dict[value + ''];
    if (hodler) {
      hodler.elt.addClass('as-active');
      this.$lastActiveBtn = hodler.elt;
    }
    var activeIndex = this._findActiveIndex();
    this.$prevBtn.disabled = activeIndex === 0;
    this.$nextBtn.disabled = activeIndex === this._items.length - 1;
    this._updateUnderlinePosition();
    this._scrollToSelected();
  },
  get: function get() {
    return this._value;
  }
};
ButtonRange.eventHandler = {};
ButtonRange.eventHandler.clickItem = function (item, event) {
  if (this._lastValue != item._data.value) {
    this.value = item._data.value;
    this.notifyChange();
  }
};
ButtonRange.eventHandler.attached = function () {
  if (this.style.width === 'auto') this.autoWidth = true;
  _Dom["default"].addToResizeSystem(this.$attachHook);
  this.updateSize();
};
ButtonRange.eventHandler.wheel = function (event) {
  var prevLeft = this.$scroller.scrollLeft;
  if (event.deltaY < 0) {
    this.$scroller.scrollLeft -= 100;
  } else if (event.deltaY > 0) {
    this.$scroller.scrollLeft += 100;
  }
  if (prevLeft !== this.$scroller.scrollLeft) event.preventDefault();
};
_ACore["default"].install(ButtonRange);
var _default = ButtonRange;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.OldCalendarInput = OldCalendarInput;
exports["default"] = void 0;
__webpack_require__(350);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _datetime = __webpack_require__(58286);
var _ChromeCalendar = _interopRequireDefault(__webpack_require__(51631));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
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); }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/**
 * @extends AElement
 * @constructor
 */
function CalendarInput() {
  var thisCI = this;
  this.$input = $('input', this);
  this._value = null;
  this._quickOption = _ChromeCalendar["default"].showWhenClick(this, {
    minLimitDate: this.minLimitDate || this.minDateLimit,
    maxLimitDate: this.maxLimitDate || this.maxDateLimit,
    selectedDates: [new Date()]
  }, 'auto', function (value) {
    thisCI._value = value;
    thisCI.$input.value = thisCI.formatDateString(value);
    thisCI._quickOption.calendarProps.selectedDates = [value]; //change new option
    thisCI.emit('change', {
      target: thisCI,
      value: value
    }, thisCI);
  });
  _OOP["default"].drillProperty(this, this._quickOption.calendarProps, {
    minLimitDate: 'minLimitDate',
    maxLimitDate: 'maxLimitDate',
    minDateLimit: 'minLimitDate',
    maxDateLimit: 'maxLimitDate'
  });
}
CalendarInput.tag = 'CalendarInput'.toLowerCase();
CalendarInput.render = function () {
  return _({
    extendEvent: ['change'],
    "class": 'absol-calendar-input',
    child: 'input[type="text"][readonly="true"][value="dd/mm/yyyy"]'
  });
};
CalendarInput.property = {};
CalendarInput.property.value = {
  set: function set(value) {
    if (value === null || value === undefined) {
      this.$input.value = this.formatDateString(value);
      this._quickOption.calendarProps.selectedDates = [];
      this._value = value;
      this._quickOption.calendarProps.selectedDates = [new Date()];
    } else {
      if (typeof value == 'number') value = new Date(value);
      this._value = value;
      this.$input.value = this.formatDateString(value);
      this._quickOption.calendarProps.selectedDates = [value];
    }
  },
  get: function get() {
    return this._value;
  }
};
CalendarInput.property.disabled = {
  set: function set(value) {
    this.$input.disabled = !!value;
    if (value) {
      this.addClass('absol-disabled');
    } else {
      this.removeClass('absol-disabled');
    }
  },
  get: function get() {
    return this.$input.disabled;
  }
};
CalendarInput.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
CalendarInput.attribute = {
  disabled: {
    set: function set(value) {
      this.$input.attr('disabled', value);
      if (this.$input.disabled) this.addClass('absol-disabled');
    },
    get: function get() {
      return this.$input.attr('disabled');
    },
    remove: function remove() {
      this.$input.attr('disabled', undefined);
      this.removeClass('absol-disabled');
    }
  }
};
CalendarInput.property.dateToString = {
  set: function set(value) {
    this._dateToString = value;
    this.$input.value = this.formatDateString(this.value);
  },
  get: function get() {
    return this._dateToString;
  }
};
CalendarInput.prototype.formatDateString = function (date) {
  if (!date) {
    return {
      'undefined': 'dd/mm/yyyy',
      'function': '--/--/--',
      'object': 'dd/mm/yyyy',
      'string': _typeof(this.dateToString)
    }[_typeof(this.dateToString)] || '--/--/--';
  }
  if (!this.dateToString) {
    return (0, _datetime.formatDateString)(date);
  } else if (typeof this.dateToString == 'string') {
    return (0, _datetime.formatDateString)(date, this.dateToString);
  } else if (typeof this.dateToString == 'function') {
    return this.dateToString(date);
  }
};
_ACore["default"].install(CalendarInput);
function OldCalendarInput() {}
OldCalendarInput.tag = 'calendar-input';
OldCalendarInput.render = function (data) {
  return _({
    tag: 'calendarinput',
    extendEvent: 'changed',
    props: data,
    on: {
      change: function change(ev) {
        this.emit('changed', ev.value);
      }
    }
  });
};
_ACore["default"].install(OldCalendarInput);
var _default = CalendarInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(59338);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _CheckBoxInput = _interopRequireDefault(__webpack_require__(8398));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var $$ = _ACore["default"].$$;

/***
 * @extends AElement
 * @constructor
 */
function CheckBox() {
  this.defineEvent('change');
  /***
   *
   * @type {CheckboxInput}
   */
  this.$input = $('checkboxinput', this).on('change', this.notifyChange.bind(this));
  this.$labels = $$('span', this);
  this.on('click', this.eventHandler.click);
  _OOP["default"].drillProperty(this, this.$input, ['checked']);
  _OOP["default"].drillProperty(this, this.$input, ['minus']);
  /***
   * @type {boolean}
   * @name checked
   * @memberOf CheckBox#
   */

  /***
   * @type {boolean}
   * @name minus
   * @memberOf CheckBox#
   */
}

CheckBox.tag = 'checkbox';
CheckBox.render = function () {
  return _({
    "class": ['absol-checkbox', 'as-no-label'],
    child: [{
      tag: 'span',
      "class": ['absol-checkbox-label', 'as-left'],
      child: {
        text: ''
      }
    }, 'checkboxinput', {
      tag: 'span',
      "class": ['absol-checkbox-label', 'as-right'],
      child: {
        text: ''
      }
    }]
  });
};
CheckBox.prototype.notifyChange = function () {
  this.emit('change', {
    type: 'change',
    checked: this.checked,
    target: this
  }, this);
};
//v, labelText, checked

CheckBox.attribute = {
  checked: {
    set: function set(value) {
      if (value === 'false' || value == null) {
        this.checked = false;
      } else {
        this.checked = true;
      }
    },
    get: function get() {
      return this.checked ? 'true' : 'false';
    },
    remove: function remove() {
      this.checked = false;
    }
  },
  disabled: {
    set: function set(value) {
      this.disabled = !(value === 'false' || value === null);
    },
    get: function get() {
      return this.disabled ? 'true' : 'false';
    },
    remove: function remove() {
      this.disabled = false;
    }
  },
  readonly: {
    set: function set(value) {
      this.readOnly = !(value === 'false' || value === null);
    },
    get: function get() {
      return this.readOnly ? 'true' : 'false';
    }
  }
};
CheckBox.property = {};
CheckBox.property.text = {
  get: function get() {
    return this._text;
  },
  set: function set(value) {
    value = value || '';
    if (value.length === 0) {
      this.addClass('as-no-label');
    } else {
      this.removeClass('as-no-label');
    }
    this._text = value;
    this.$labels[0].firstChild.data = value;
    this.$labels[1].firstChild.data = value;
  }
};
CheckBox.property.disabled = {
  get: function get() {
    return this.$input.disabled;
  },
  set: function set(value) {
    value = !!value;
    this.$input.disabled = value;
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  }
};
CheckBox.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
      this.$input.readOnly = true;
    } else {
      this.addClass('as-read-only');
      this.$input.readOnly = false;
    }
  },
  get: function get() {
    return this.$input.readOnly;
  }
};

/***
 *
 * @type {{}|CheckBox}
 */
CheckBox.eventHandler = {};
CheckBox.eventHandler.click = function (event) {
  if (!_EventEmitter["default"].hitElement(this.$input, event) && !this.readOnly) {
    this.$input.click();
  }
};
_ACore["default"].install(CheckBox);
var _default = CheckBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(80963);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var tickIcon = _(['<svg class="as-checkbox-input-check-icon" width="18px" height="18px" version="1.1" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg" >', ' <g transform="translate(0 -279)">', '  <path class="bound" d="m3 279.69h12c1.3434 0.0111 2.3298 1.5259 2.3131 2.4775v11.836c0.05005 0.89373-1.1834 2.2964-2.3131 2.3131h-12c-0.82692 0.0166-2.3131-1.1834-2.3131-2.3131v-12.237c0.0022374-1.171 0.3775-2.0759 2.3131-2.0759z" style="stroke-linejoin:round; stroke-width: 1"/>', '  <path class="tick" d="m3.1656 288.66c-0.10159 0.0612-0.11743 0.12506-0.12993 0.18899l3.7473 4.3467c0.066638 0.0459 0.11813 0.0263 0.16832 1e-3 0 0 1.7699-4.2166 4.7251-7.4568 1.4783-1.6208 3.2406-3.3659 3.2406-3.3659 0.0054-0.14125-0.10946-0.15807-0.1754-0.22551 0 0-2.5832 1.6364-4.7524 3.8336-1.8697 1.8939-3.6666 4.4016-3.6666 4.4016z"/>', '  <path class="minus" d="m4 287 h10 v2 h-10z"/>', ' </g>', '</svg>'].join(''));

/***
 * @extends AElement
 * @constructor
 */
function CheckboxInput() {
  this.$input = $('input', this).on('change', this.notifyChange.bind(this));
  this.checked = false;
  this.disabled = false;
  this.readOnly = false;
  this.on('click', this.eventHandler.click);
  this.onchange = null;
}
CheckboxInput.tag = "CheckboxInput".toLowerCase();
CheckboxInput.render = function (data) {
  return _({
    tag: 'label',
    extendEvent: 'change',
    "class": 'as-checkbox-input',
    child: [{
      elt: data && data.$input,
      tag: 'input',
      "class": 'as-checkbox-input-value',
      attr: {
        type: 'checkbox'
      }
    }, tickIcon.cloneNode(true)]
  });
};

/***
 * as normal, change event will be fired when checkbox change by system
 */
CheckboxInput.prototype.notifyChange = function () {
  var event = {
    checked: this.checked
  };
  this.emit('change', event, this);
};
CheckboxInput.prototype._updateCheckedClass = function () {
  if (this.checked) {
    this.addClass('as-checked');
  } else {
    this.removeClass('as-checked');
  }
};
CheckboxInput.property = {};
CheckboxInput.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
    this.$input.disabled = !!value;
  },
  get: function get() {
    return this.$input.disabled;
  }
};
CheckboxInput.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};

/***
 *
 * @type {CheckboxInput}
 */
CheckboxInput.property.checked = {
  set: function set(value) {
    this.$input.checked = !!value;
    this._updateCheckedClass();
  },
  get: function get() {
    return this.$input.checked;
  }
};

/***
 *
 * @type {CheckboxInput}
 */
CheckboxInput.property.minus = {
  set: function set(value) {
    if (value) {
      this.addClass('as-has-minus');
    } else {
      this.removeClass('as-has-minus');
    }
  },
  get: function get() {
    return this.hasClass('as-has-minus');
  }
};
CheckboxInput.attribute = {
  checked: {
    set: function set(value) {
      if (value === 'false' || value === null) {
        this.checked = false;
      } else {
        this.checked = true;
      }
    },
    get: function get() {
      return this.checked ? 'true' : 'false';
    },
    remove: function remove() {
      this.checked = false;
    }
  },
  disabled: {
    set: function set(value) {
      if (value === 'false' || value === null) {
        this.disabled = false;
      } else {
        this.disabled = true;
      }
    },
    get: function get() {
      return this.disabled ? 'true' : 'false';
    },
    remove: function remove() {
      this.disabled = false;
    }
  }
};

/***
 *
 * @type {CheckboxInput}
 */
CheckboxInput.eventHandler = {};
CheckboxInput.eventHandler.click = function (event) {
  if (this.readOnly) {
    event.preventDefault();
  }
  this._updateCheckedClass();
};
_ACore["default"].install(CheckboxInput);
CheckboxInput.autoReplace = function () {
  var placeHolders = Array.prototype.slice.call(document.getElementsByTagName(this.tag));
  var ph;
  var attOfPH;
  var attrs;
  var style;
  var classList;
  var attNode;
  var attrName, attrValue;
  var props;
  for (var i = 0; i < placeHolders.length; ++i) {
    ph = placeHolders[i];
    attOfPH = ph.attributes;
    classList = [];
    style = {};
    attrs = {};
    props = {};
    for (var j = 0; j < attOfPH.length; ++j) {
      attNode = attOfPH[j];
      attrName = attNode.nodeName;
      attrValue = attNode.nodeValue;
      if (attrName == 'style') {
        attrValue.trim().split(';').reduce(function (style, prop) {
          var p = prop.split(':');
          if (p.length == 2) {
            style[p[0].trim()] = p[1].trim();
          }
          return style;
        }, style);
      } else if (attrName == 'class') {
        classList = attrValue.trim().split(/\s+/);
      } else if (attrName == 'onchange') {
        props.onchange = new Function('event', 'sender', attrValue);
      } else {
        attrs[attrName] = attrValue;
      }
    }
    var newElt = _({
      tag: this.tag,
      attr: attrs,
      "class": classList,
      style: style,
      props: props
    });
    $(ph).selfReplace(newElt);
  }
};
CheckboxInput.initAfterLoad = function () {
  _Dom["default"].documentReady.then(function () {
    CheckboxInput.autoReplace();
  });
};
var _default = CheckboxInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.CheckListBox = CheckListBox;
exports["default"] = void 0;
exports.makeItem = makeItem;
exports.measureArial14TextWidth = void 0;
exports.releaseItem = releaseItem;
exports.requireItem = requireItem;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _SelectListBox = _interopRequireWildcard(__webpack_require__(47818));
var _CheckListItem = _interopRequireDefault(__webpack_require__(27129));
__webpack_require__(85969);
var _noop = _interopRequireDefault(__webpack_require__(5025));
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
var _utils = __webpack_require__(84512);
var _Dom = __webpack_require__(64821);
var _stringGenerate = __webpack_require__(10713);
var _ListSearchMaster = _interopRequireDefault(__webpack_require__(85604));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _TextMeasurement = _interopRequireDefault(__webpack_require__(77694));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _DelaySignal = _interopRequireDefault(__webpack_require__(81809));
var _Array = __webpack_require__(40411);
var _stringUtils = __webpack_require__(26243);
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 _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var itemPool = [];
function makeItem() {
  return (0, _ACore._)({
    tag: _CheckListItem["default"],
    on: {
      select: function select(event) {
        this.$parent.eventHandler.itemSelect(this, event);
      }
    }
  });
}
function requireItem($parent) {
  var item;
  if (itemPool.length > 0) {
    item = itemPool.pop();
  } else {
    item = makeItem();
  }
  item.$parent = $parent;
  return item;
}
function releaseItem(item) {
  item.$parent = null;
  item.selected = false;
  itemPool.push(item);
}
function fillItemToPage($parent, $page, n) {
  while ($page.childNodes.length > n) {
    releaseItem($page.lastChild);
    $page.removeChild($page.lastChild);
  }
  while ($page.childNodes.length < n) {
    $page.addChild(requireItem($parent));
  }
}
var mTextMeasurement = null;
var measureArial14TextWidth = function measureArial14TextWidth(text) {
  if (!mTextMeasurement) {
    mTextMeasurement = new _TextMeasurement["default"]();
    mTextMeasurement.compute('14px arial');
  }
  return mTextMeasurement.measureTextWidth(text, '14px arial');
};
exports.measureArial14TextWidth = measureArial14TextWidth;
var keyStringOfItem = function keyStringOfItem(item) {
  return (0, _utils.keyStringOf)(item.value) + (0, _stringUtils.stringHashCode)(item.text + '');
};

/***
 * TODO: check all duplicate value when select
 * @extends SelectListBox
 * @constructor
 */
function CheckListBox() {
  if (this.cancelWaiting) this.cancelWaiting();
  this._items = [];
  this._valueDict = {};
  this.itemHolders = [];
  this._holderDict = {};
  this._estimateWidth = 100;
  this.widthLimit = (0, _SelectListBox.calcWidthLimit)();
  this.addStyle('--as-width-limit', this.widthLimit + 'px');
  this.$scroller = (0, _ACore.$)('.as-select-list-box-scroller', this);
  this.$content = (0, _ACore.$)('.as-select-list-box-content', this);
  this.$pages = (0, _ACore.$$)('.as-select-list-box-page', this);
  this.$searchInput = (0, _ACore.$)('searchtextinput', this).on('stoptyping', this.eventHandler.searchModify);
  this.pagingCtrl = new CLPagingController(this);
  this.searchMaster = new _ListSearchMaster["default"]();
  this._initDomHook();
  this._initFooter();
  this.domSignal.on('viewListAtValue', this.viewListAtValue.bind(this));
  this.domSignal.on('viewListAtItem', this.viewListAtItem.bind(this));
  /***
   * @name selectedAll
   * @type {boolean}
   * @memberOf CheckListBox#
   */
  /***
   * @name selectedItems
   * @type {Array<>}
   * @memberOf CheckListBox#
   */
}

CheckListBox.tag = 'CheckListBox'.toLowerCase();
CheckListBox.render = function () {
  return (0, _ACore._)({
    tag: _Follower["default"].tag,
    extendEvent: ['change', 'cancel', 'close'],
    attr: {
      tabindex: 0
    },
    "class": ['as-select-list-box', 'as-check-list-box'],
    child: [{
      "class": 'as-select-list-box-search-ctn',
      child: 'searchtextinput'
    }, {
      "class": ['as-bscroller', 'as-select-list-box-scroller'],
      child: [{
        "class": 'as-select-list-box-content',
        child: Array(3).fill('.as-select-list-box-page')
      }]
    }, {
      "class": 'as-dropdown-box-footer',
      child: [{
        tag: 'checkbox',
        "class": 'as-select-list-box-check-all',
        props: {
          checked: false,
          text: _LanguageSystem["default"].getText('txt_check_all') || _LanguageSystem["default"].getText('txt_all') || 'Check All'
        }
      }, {
        "class": 'as-dropdown-box-footer-right',
        child: [{
          tag: 'a',
          "class": 'as-select-list-box-cancel-btn',
          attr: {
            'data-ml-key': 'txt_cancel'
          }
        }, {
          tag: 'a',
          "class": 'as-select-list-box-close-btn',
          attr: {
            'data-ml-key': 'txt_close'
          }
        }]
      }]
    }, 'attachhook.as-dom-signal'],
    props: {
      anchor: [1, 6, 2, 5]
    }
  });
};
Object.assign(CheckListBox.prototype, _SelectListBox["default"].prototype);
CheckListBox.property = {};
CheckListBox.eventHandler = {};
CheckListBox.prototype.footerMinWidth = 110;
CheckListBox.prototype.revokeResource = function () {
  this.searchMaster.revokeResource();
};
CheckListBox.prototype._initDomHook = function () {
  var _this = this;
  this.domSignal = new _DelaySignal["default"]();
  this.domSignal.on('viewListAt', this.viewListAt.bind(this));
  this.domSignal.on('viewListAtFirstSelected', this.viewListAtFirstSelected.bind(this));
  this.domSignal.on('viewListAtCurrentScrollTop', this.viewListAtCurrentScrollTop.bind(this));
  this.domSignal.on('updateCheckedAll', function () {
    _this.$checkAll.checked = _this.selectedAll;
  });
};
CheckListBox.prototype._initFooter = function () {
  this.$checkAll = (0, _ACore.$)('.as-select-list-box-check-all', this).on('change', this.eventHandler.checkAllChange);
  this.$cancelBtn = (0, _ACore.$)('.as-select-list-box-cancel-btn', this).on('click', this.eventHandler.clickCancelBtn);
  this.$closeBtn = (0, _ACore.$)('.as-select-list-box-close-btn', this);
  if (this.$closeBtn)
    //mobile ref
    this.$closeBtn.on('click', this.eventHandler.clickCloseBtn);
};
CheckListBox.prototype.viewListAtFirstSelected = _noop["default"];
CheckListBox.prototype.viewListAtValue = function (value) {
  if (this.isDescendantOf(document.body)) {
    this.pagingCtrl.viewListAtValue(value);
  }
};
CheckListBox.prototype.viewListAtItem = function (item) {
  if (this.isDescendantOf(document.body)) {
    this.pagingCtrl.viewListAtItem(item);
  }
};
CheckListBox.prototype.findItemsByValue = function (value) {
  return this._holderDict[(0, _utils.keyStringOf)(value)];
};

/**
 *
 * @param {number | Array<number>}idx
 */
CheckListBox.prototype.getItemByIndex = function (idx) {
  var arr = this._items;
  if (!Array.isArray(idx)) {
    idx = [idx];
  }
  for (var i = 0; i < idx.length; ++i) {
    if (!arr) return null;
    if (i + 1 === idx.length) return arr[idx[i]];
    arr = arr[idx[i]].items;
  }
};
CheckListBox.prototype.notifyChange = function (data) {
  this.emit('change', Object.assign({
    target: this,
    type: 'change'
  }, data), this);
};
CheckListBox.prototype.focus = _SelectListBox["default"].prototype.focus;
CheckListBox.property.values = {
  set: function set(values) {
    values = values || [];
    var dict = values.reduce(function (ac, cr) {
      var key = (0, _utils.keyStringOf)(cr);
      ac[key] = cr;
      return ac;
    }, {});
    this._valueDict = dict;
    this.itemHolders.forEach(function visit(holder) {
      holder.selected = holder.valueKey in dict;
      if (holder.children) holder.children.forEach(visit);
    });
    this.pagingCtrl.updateSelected();
    this.domSignal.emit('updateCheckedAll');
  },
  get: function get() {
    var values = this.itemHolders.reduce(function visit(ac, holder) {
      if (holder.selected && !holder.data.noSelect) ac.push(holder.data.value);
      if (holder.children) holder.children.reduce(visit, ac);
      return ac;
    }, []);
    return (0, _Array.arrayUnique)(values);
  }
};
CheckListBox.property.selectedIndexes = {
  set: function set(indexes) {
    if (!Array.isArray(indexes)) indexes = [];
  },
  get: function get() {
    var genVisit = function genVisit(rootValue) {
      return function (ac, holder, i) {
        if (holder.selected && !holder.data.noSelect) {
          if (rootValue) ac.push(rootValue.concat([i]));else ac.push(i);
        }
        if (holder.children) holder.children.reduce(genVisit((rootValue || []).concat([i])), ac);
        return ac;
      };
    };
    return this.itemHolders.reduce(genVisit(), []);
  }
};
CheckListBox.property.selectedItems = {
  get: function get() {
    var _this2 = this;
    return this.selectedIndexes.map(function (idx) {
      return _this2.getItemByIndex(idx);
    }).filter(function (it) {
      return !!it;
    });
  }
};
CheckListBox.prototype.resetSearchState = function () {
  this.$searchInput.value = '';
  this.pagingCtrl.viewArr(this.itemHolders);
};
CheckListBox.property.enableSearch = _SelectListBox["default"].property.enableSearch;
CheckListBox.property.items = {
  set: function set(items) {
    var _this3 = this;
    items = items || [];
    items = (0, _utils.copySelectionItemArray)(items, {
      removeNoView: true,
      removeNewLine: true
    });
    this._items = items;
    this.itemHolders = items.map(function (it) {
      return new CLHolder(_this3, it);
    });
    var res = this.itemHolders.reduce(function visit(ac, cr) {
      var textWidth = 3.5 * 14 + 1.75 * 14 * cr.level + 14 + measureArial14TextWidth(cr.data.text + '') + 7 + 17;
      if (cr.data.icon) textWidth += 32;
      ac.textWidth = Math.max(ac.textWidth, textWidth);
      if (cr.data.desc) {
        ac.descWidth = Math.max(ac.descWidth, measureArial14TextWidth(cr.data.desc + ''));
      }
      ac.dict[cr.valueKey] = ac.dict[cr.valueKey] || [];
      ac.dict[cr.valueKey].push({
        idx: ac.idx++,
        item: cr.data,
        holder: cr
      });
      if (cr.children) cr.children.reduce(visit, ac);
      return ac;
    }, {
      idx: 0,
      dict: {},
      textWidth: 50,
      descWidth: 0
    });
    this._holderDict = res.dict;
    this._estimateWidth = Math.min(this.widthLimit || Infinity, res.textWidth + (res.descWidth ? res.descWidth + 30 : 0));
    this.addStyle('--select-list-estimate-width', this._estimateWidth + 'px');
    this.$scroller.scrollTop = 0;
    this.pagingCtrl.viewArr(this.itemHolders);
    this.searchMaster.transfer(this.itemHolders.map(function (it) {
      return it.getSearchItem();
    }));
    this.domSignal.emit('updateCheckedAll');
  },
  get: function get() {
    return (0, _utils.copySelectionItemArray)(this._items);
  }
};
CheckListBox.property.selectedAll = {
  get: function get() {
    return this.itemHolders.length > 0 && this.itemHolders.every(function visit(holder) {
      var res = holder.selected || holder.data.noSelect;
      if (res && holder.children) {
        res = holder.children.every(visit);
      }
      return res;
    });
  }
};

/***
 * @this CheckListBox
 * @param event
 */
CheckListBox.eventHandler.checkAllChange = function (event) {
  var _this4 = this;
  var checked = this.$checkAll.checked;
  var changed = false;
  var visit = function visit(holder) {
    var canCheck = checked && !holder.data.noSelect;
    if (holder.selected !== canCheck) {
      changed = true;
      holder.selected = canCheck;
    }
    if (canCheck) {
      _this4._valueDict[holder.valueKey] = holder.data.value;
    } else {
      delete _this4._valueDict[holder.valueKey];
    }
    if (holder.children) holder.children.forEach(visit);
  };
  this.itemHolders.forEach(visit);
  this.pagingCtrl.updateSelected();
  if (changed) {
    this.notifyChange({
      originalEvent: event.originalEvent || event.originEvent || event,
      action: checked ? 'check_all' : "uncheck_all"
    }, this);
  }
};

/***
 * @this CheckListBox
 * @param itemElt
 * @param event
 */
CheckListBox.eventHandler.itemSelect = function (itemElt, event) {
  var selected = itemElt.selected;
  var holder = itemElt.clHolder;
  holder.selected = selected;
  if (selected) {
    this._valueDict[holder.valueKey] = holder.data.value;
  } else {
    delete this._valueDict[holder.valueKey];
  }
  this.notifyChange({
    originalEvent: event.originalEvent || event.originEvent || event,
    action: selected ? 'check' : 'uncheck',
    value: holder.data.value,
    itemData: holder.data
  });
  this.domSignal.emit('updateCheckedAll');
};

/***
 * @this CheckListBox
 * @param event
 */
CheckListBox.eventHandler.clickCancelBtn = function (event) {
  this.emit('cancel', {
    type: 'cancel',
    target: this,
    originalEvent: event
  }, this);
};

/***
 * @this CheckListBox
 * @param event
 */
CheckListBox.eventHandler.clickCloseBtn = function (event) {
  this.emit('close', {
    type: 'close',
    target: this,
    originalEvent: event
  }, this);
};

/**
 * @this {CheckListBox}
 */
CheckListBox.eventHandler.searchModify = function () {
  var _this5 = this;
  var text = this.$searchInput.value;
  if (text) {
    this.searchMaster.query({
      text: text
    }).then(function (result) {
      if (text !== _this5.$searchInput.value) return;
      var arr = _this5.itemHolders.filter(function (it) {
        return !!result[it.id];
      });
      arr.sort(function (a, b) {
        return result[b.id][1] - result[a.id][1];
      });
      var searchHolders = arr.map(function (holder) {
        return new CLHolderRef(_this5, holder, null, result);
      });
      _this5.$scroller.scrollTop = 0;
      _this5.pagingCtrl.viewArr(searchHolders);
      _ResizeSystem["default"].update();
    });
  } else {
    this.pagingCtrl.viewArr(this.itemHolders.reduce(function (ac, holder) {
      return holder.toArray(ac);
    }, []));
    _ResizeSystem["default"].update();
  }
};
_ACore["default"].install(CheckListBox);
function CLHolder(boxElt, data, parent) {
  var _this6 = this;
  this.id = (0, _stringGenerate.randomIdent)(8);
  this.parent = parent;
  this.level = parent ? parent.level + 1 : 0;
  this.boxElt = boxElt;
  this.data = data;
  this.valueKey = (0, _utils.keyStringOf)(data.value);
  this.itemKey = keyStringOfItem(data);
  this.itemElt = null;
  this.children = null;
  this.selected = this.valueKey in boxElt._valueDict;
  if (data.items && data.items.length > 0) {
    this.children = data.items.map(function (it) {
      return new CLHolder(boxElt, it, _this6);
    });
  }
}
CLHolder.prototype.toArray = function (ac) {
  ac = ac || [];
  ac.push(this);
  if (this.children) this.children.reduce(function (ac, holder) {
    return holder.toArray(ac);
  }, ac);
  return ac;
};
CLHolder.prototype.attachView = function (itemElt) {
  if (itemElt.clHolder) itemElt.clHolder.detachView();
  if (!this.textLength) this.textLength = (0, _utils.measureText)(this.data.text + '', '14px arial').width;
  if (this.textLength > this.boxElt.widthLimit - (0.7 + 2.5) * 14) {
    itemElt.attr('title', this.data.text);
  }
  itemElt.clHolder = this;
  this.itemElt = itemElt;
  itemElt.data = this.data;
  itemElt.level = this.level;
  itemElt.selected = this.selected;
};
CLHolder.prototype.detachView = function () {
  if (this.itemElt) {
    this.itemElt.attr('title', null);
    this.itemElt.clHolder = null;
    this.itemElt = null;
  }
};
CLHolder.prototype.getSearchItem = function () {
  var res = {
    value: this.id
  };
  res.text = this.data.text + '';
  if (this.data.desc) res.text += '/' + this.data.desc;
  if (this.children) res.items = this.children.map(function (c) {
    return c.getSearchItem();
  });
  return res;
};
function CLHolderRef(boxElt, origin, parent, result) {
  var _this7 = this;
  this.boxElt = boxElt;
  this.origin = origin;
  this.data = origin.data;
  this.parent = parent;
  this.level = origin.level;
  _OOP["default"].drillProperty(this, origin, 'selected');
  var arr, children;
  if (origin.children) {
    arr = origin.children.filter(function (it) {
      return !!result[it.id];
    });
    arr.sort(function (a, b) {
      return result[b.id][1] - result[a.id][1];
    });
    children = arr.map(function (holder) {
      return new CLHolderRef(boxElt, holder, _this7, result);
    });
    if (children.length > 0) this.children = children;
  }
}
_OOP["default"].mixClass(CLHolderRef, CLHolder);

/***
 *
 * @param {CheckListBox} boxElt
 * @constructor
 */
function CLPagingController(boxElt) {
  this.boxElt = boxElt;
  this.$pages = boxElt.$pages;
  this.$content = boxElt.$content;
  this.$scroller = boxElt.$scroller.on('scroll', this.ev_scroll.bind(this));
  this.itemPerPage = Math.ceil((0, _Dom.getScreenSize)().height / this.itemHeight * 2);
  this.holderArr = [];
  this.holderDict = {};
}
CLPagingController.prototype.itemHeight = 30;
CLPagingController.prototype.ev_scroll = function (event) {
  var _this8 = this;
  if (this.pageN <= 2) return;
  var top = this.$scroller.scrollTop;
  var pageIdx = Math.min(this.pageN - 1, Math.max(0, Math.floor(top / this.itemHeight / this.itemPerPage)));
  if (pageIdx === this.pageIdx) return;
  if (pageIdx === this.pageIdx - 1) {
    this.pageIdx = pageIdx;
    this.$pages.unshift(this.$pages.pop());
    if (pageIdx > 0) {
      this.$pages[0].removeStyle('display').addStyle('top', (pageIdx - 1) * this.itemPerPage * this.itemHeight + 'px');
      fillItemToPage(this.boxElt, this.$pages[0], this.itemPerPage);
      Array.prototype.forEach.call(this.$pages[0].childNodes, function (elt, i) {
        return _this8.holderArr[(pageIdx - 1) * _this8.itemPerPage + i].attachView(elt);
      });
    } else {
      this.$pages[0].addStyle('display', 'none');
    }
  } else if (pageIdx === this.pageIdx + 1) {
    this.pageIdx = pageIdx;
    this.$pages.push(this.$pages.shift());
    if (pageIdx + 1 < this.pageN) {
      this.$pages[2].removeStyle('display').addStyle('top', (pageIdx + 1) * this.itemPerPage * this.itemHeight + 'px');
      fillItemToPage(this.boxElt, this.$pages[2], Math.min(this.itemPerPage, this.holderArr.length - this.itemPerPage * (pageIdx + 1)));
      Array.prototype.forEach.call(this.$pages[2].childNodes, function (elt, i) {
        return _this8.holderArr[(pageIdx + 1) * _this8.itemPerPage + i].attachView(elt);
      });
    } else {
      this.$pages[2].addStyle('display', 'none');
    }
  } else {
    this.update();
  }
};
CLPagingController.prototype.update = function () {
  var _this9 = this;
  var top = this.$content.scrollTop;
  var pageIdx = Math.floor(top / this.itemHeight / this.itemPerPage);
  this.pageIdx = pageIdx;
  var ii = (pageIdx - 1) * this.itemPerPage;
  var pageElt;
  var itemInPage;
  for (var pi = 0; pi < 3; ++pi) {
    pageElt = this.$pages[pi];
    if (ii < 0 || ii >= this.holderArr.length) {
      ii += this.itemPerPage;
      pageElt.addStyle('display', 'none');
    } else {
      itemInPage = Math.min(this.itemPerPage, this.holderArr.length - ii);
      fillItemToPage(this.boxElt, pageElt, itemInPage);
      pageElt.removeStyle('display').addStyle('top', this.itemHeight * ii + 'px');
      Array.prototype.forEach.call(pageElt.childNodes, function (child, i) {
        _this9.holderArr[ii].attachView(child);
        ii++;
      });
    }
  }
};
CLPagingController.prototype.viewListAtIdx = function (idx) {
  var bound = this.$scroller.getBoundingClientRect();
  if (!bound.height) return;
  var y = idx * this.itemHeight;
  var maxY = this.holderArr.length * this.itemHeight - bound.height;
  this.$scroller.scrollTop = Math.min(maxY, y);
};
CLPagingController.prototype.viewListAtValue = function (value) {
  var idx = this.holderDict[(0, _utils.keyStringOf)(value)];
  if (idx === undefined) return;
  this.viewListAtIdx(idx);
};
CLPagingController.prototype.viewListAtItem = function (item) {
  var idx = this.holderHashDict[keyStringOfItem(item)];
  if (idx === undefined) return;
  this.viewListAtIdx(idx);
};
CLPagingController.prototype.viewArr = function (itemHolders) {
  this.holderArr = itemHolders.reduce(function (ac, holder) {
    return holder.toArray(ac);
  }, []);
  this.holderDict = this.holderArr.reduce(function (ac, cr, idx) {
    if (!(0, _utils.isNaturalNumber)(ac[cr.valueKey])) ac[cr.valueKey] = idx;
    return ac;
  }, {});
  this.holderHashDict = this.holderArr.reduce(function (ac, cr, idx) {
    ac[cr.itemKey] = idx;
    return ac;
  }, {});
  this.pageN = Math.ceil(this.holderArr.length / this.itemPerPage);
  this.$content.addStyle('height', this.holderArr.length * this.itemHeight + 'px');
  this.update();
};
CLPagingController.prototype.updateSelected = function () {
  this.$pages.forEach(function (pageElt) {
    Array.prototype.forEach.call(pageElt.childNodes, function (itemElt) {
      if (itemElt.clHolder) itemElt.selected = itemElt.clHolder.selected;
    });
  });
};

/**********************************************************************************************************************/

/***
 * @extends SelectListBox
 * @constructor
 */
function CheckListBoxV1() {
  this._initDomHook();
  this._initControl();
  this._initScroller();
  this._initFooter();
  this._initProperty();
  this.domSignal.on('viewListAtValue', this.viewListAtValue.bind(this));
}
CheckListBoxV1.tag = 'CheckListBox'.toLowerCase();
CheckListBoxV1.render = function () {
  return (0, _ACore._)({
    tag: _Follower["default"].tag,
    extendEvent: ['change', 'cancel', 'close'],
    attr: {
      tabindex: 0
    },
    "class": ['as-select-list-box', 'as-check-list-box'],
    child: [{
      "class": 'as-select-list-box-search-ctn',
      child: 'searchtextinput'
    }, {
      "class": ['as-bscroller', 'as-select-list-box-scroller'],
      child: [{
        "class": 'as-select-list-box-content',
        child: Array(this.prototype.preLoadN).fill('.as-select-list-box-page')
      }]
    }, {
      "class": 'as-dropdown-box-footer',
      child: [{
        tag: 'checkbox',
        "class": 'as-select-list-box-check-all',
        props: {
          checked: false,
          text: _LanguageSystem["default"].getText('txt_check_all') || _LanguageSystem["default"].getText('txt_all') || 'Check All'
        }
      }, {
        "class": 'as-dropdown-box-footer-right',
        child: [{
          tag: 'a',
          "class": 'as-select-list-box-cancel-btn',
          attr: {
            'data-ml-key': 'txt_cancel'
          }
        }, {
          tag: 'a',
          "class": 'as-select-list-box-close-btn',
          attr: {
            'data-ml-key': 'txt_close'
          }
        }]
      }]
    }, 'attachhook.as-dom-signal'],
    props: {
      anchor: [1, 6, 2, 5]
    }
  });
};
Object.assign(CheckListBoxV1.prototype, _SelectListBox["default"].prototype);
CheckListBoxV1.property = Object.assign({}, _SelectListBox["default"].property);
CheckListBoxV1.eventHandler = Object.assign({}, _SelectListBox["default"].eventHandler);
CheckListBoxV1.prototype.itemHeightMode = [25, 30];
CheckListBoxV1.prototype.itemHeight = 25;
CheckListBoxV1.prototype.footerMinWidth = 110;
CheckListBoxV1.prototype._initFooter = function () {
  this.$checkAll = (0, _ACore.$)('.as-select-list-box-check-all', this).on('change', this.eventHandler.checkAllChange);
  this.$cancelBtn = (0, _ACore.$)('.as-select-list-box-cancel-btn', this).on('click', this.eventHandler.clickCancelBtn);
  this.$closeBtn = (0, _ACore.$)('.as-select-list-box-close-btn', this);
  if (this.$closeBtn)
    //mobile ref
    this.$closeBtn.on('click', this.eventHandler.clickCloseBtn);
};
CheckListBoxV1.prototype._requireItem = function (pageElt, n) {
  var itemElt;
  while (pageElt.childNodes.length > n) {
    itemElt = pageElt.lastChild;
    itemElt.selfRemove();
    releaseItem(itemElt);
  }
  while (pageElt.childNodes.length < n) {
    itemElt = requireItem(this);
    pageElt.addChild(itemElt);
  }
};
CheckListBoxV1.prototype.viewListAtFirstSelected = _noop["default"];
CheckListBoxV1.prototype.viewListAtValue = function (value) {
  if (!this.isDescendantOf(document.body)) {
    this.domSignal.emit('viewListAtValue', value);
    return;
  }
  if (this._displayValue === _SelectListBox.VALUE_HIDDEN) {
    return false;
  }
  var itemHolders = this._displayItemHolderByValue[value + ''];
  if (itemHolders) {
    this.domSignal.once('scrollIntoValue', function () {
      var holder = itemHolders[0];
      this.viewListAt(holder.idx);
      var itemElt = (0, _ACore.$)('.as-check-list-item', this.$listScroller, function (elt) {
        return elt.value === value;
      });
      if (itemElt) {
        var scrollBound = this.$listScroller.getBoundingClientRect();
        var itemBound = itemElt.getBoundingClientRect();
        this.$listScroller.scrollTop += itemBound.top - scrollBound.top;
      }
    }.bind(this));
    this.domSignal.emit('scrollIntoValue');
    return true;
  } else return false;
};
CheckListBoxV1.prototype.focus = _SelectListBox["default"].prototype.focus;
CheckListBoxV1.property.values = {
  set: function set(value) {
    _SelectListBox["default"].property.values.set.apply(this, arguments);
    this.$checkAll.checked = this._values.length === this.items.length;
  },
  get: _SelectListBox["default"].property.values.get
};

/***
 * @this CheckListBoxV1
 * @param event
 */
CheckListBoxV1.eventHandler.checkAllChange = function (event) {
  var checked = this.$checkAll.checked;
  if (checked) {
    this._values = this.items.map(function (cr) {
      return _typeof(cr) === "object" ? cr.value : cr;
    });
    this._valueDict = this._values.reduce(function (ac, value) {
      ac[value + ''] = true;
      return ac;
    }, {});
  } else {
    this._values = [];
    this._valueDict = {};
  }
  this._updateSelectedItem();
  this.emit('change', {
    target: this,
    type: 'change',
    originalEvent: event.originalEvent || event.originEvent || event,
    action: checked ? 'check_all' : "uncheck_all"
  }, this);
};

/***
 * @this CheckListBoxV1
 * @param itemElt
 * @param event
 */
CheckListBoxV1.eventHandler.itemSelect = function (itemElt, event) {
  var selected = itemElt.selected;
  var value = itemElt.value;
  var itemData = itemElt.data;
  var idx;
  if (selected) {
    this._values.push(value);
    this._valueDict[value + ''] = true;
  } else {
    idx = this._values.indexOf(value);
    delete this._valueDict[value + ''];
    if (idx >= 0) {
      this._values.splice(idx, 1);
    } else {
      console.error("Violation data");
    }
  }
  this.emit('change', {
    target: this,
    type: 'change',
    originalEvent: event.originalEvent || event.originEvent || event,
    action: selected ? 'check' : 'uncheck',
    value: value,
    itemData: itemData
  }, this);
};

/***
 * @this CheckListBoxV1
 * @param event
 */
CheckListBoxV1.eventHandler.clickCancelBtn = function (event) {
  this.emit('cancel', {
    type: 'cancel',
    target: this,
    originalEvent: event
  }, this);
};

/***
 * @this CheckListBoxV1
 * @param event
 */
CheckListBoxV1.eventHandler.clickCloseBtn = function (event) {
  this.emit('close', {
    type: 'close',
    target: this,
    originalEvent: event
  }, this);
};
_ACore["default"].install('checklistboxv1', CheckListBoxV1);
var _default = CheckListBoxV1;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.measureCheckListHeight = measureCheckListHeight;
exports.measureCheckListSize = measureCheckListSize;
exports.measureMaxCheckboxTextWidth = measureMaxCheckboxTextWidth;
__webpack_require__(5416);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _CheckboxButton = _interopRequireDefault(__webpack_require__(93475));
var _Attributes = _interopRequireDefault(__webpack_require__(36447));
var _SelectListItem = _interopRequireDefault(__webpack_require__(57040));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _utils = __webpack_require__(84512);
var _SelectList = __webpack_require__(884);
var _EventEmitter = __webpack_require__(46833);
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 measureMaxCheckboxTextWidth(items) {
  var maxTextWidth = 0;
  var maxText = 0;
  var maxEst = 0;
  var maxLv = 0;
  var est;
  var text;
  var item;
  for (var i = 0; i < items.length; ++i) {
    item = items[i];
    if (item.text) {
      text = item.text;
      est = (0, _utils.estimateWidth14)(text) + 14 * 1.25 * (item.level || 0);
      if (est > maxEst) {
        maxEst = est;
        maxText = text;
        maxLv = item.level || 0;
      }
    }
  }
  if (maxText) maxTextWidth = 18 + 14 * (1.25 + 0.35) * maxLv + (0, _utils.measureText)(maxText, '14px Arial, Helvetica, sans-serif').width + 14; //padding left, right 7px, checkbox 18px
  return maxTextWidth;
}
function measureCheckListHeight(items) {
  var border = 0;
  var n = items.length - 1;
  return items.length * 25 + border;
}
function measureCheckListSize(items) {
  var descWidth = (0, _SelectList.measureMaxDescriptionWidth)(items);
  var textWidth = measureMaxCheckboxTextWidth(items);
  var width = textWidth;
  if (descWidth > 0) {
    width += descWidth + 14;
  }
  var height = measureCheckListHeight(items);
  return {
    width: width,
    height: height,
    descWidth: descWidth,
    textWidth: textWidth
  };
}

/***
 * @extends SelectListItem
 * @constructor
 */
function CheckListItem() {
  this.$text = (0, _ACore.$)('span.absol-selectlist-item-text', this);
  this.$textValue = this.$text.childNodes[0];
  this.$descCtn = (0, _ACore.$)('.absol-selectlist-item-desc-container', this);
  this.$desc = (0, _ACore.$)('span.absol-selectlist-item-desc', this.$descCtn);
  this.$descValue = this.$desc.childNodes[0];
  this.$checkbox = (0, _ACore.$)(_CheckboxButton["default"].tag, this).on('change', this.eventHandler.checkboxChange);
  this.$icon = null;
  this._icon = null;
  this._viewData = new _Attributes["default"](this);
  this._viewData.loadAttributeHandlers(this.viewHandlers);
  _OOP["default"].drillProperty(this, this._viewData, 'extendClasses');
  _OOP["default"].drillProperty(this, this._viewData, 'extendStyle');
  this.level = 0;
  this.selected = false;
  this.on('click', this.eventHandler.clickText);
}
CheckListItem.tag = 'CheckListItem'.toLowerCase();
CheckListItem.render = function () {
  return (0, _ACore._)({
    extendEvent: ['select'],
    "class": ['as-check-list-item', "absol-selectlist-item"],
    child: [{
      tag: _CheckboxButton["default"].tag,
      "class": 'as-check-list-item-checkbox'
    }, {
      tag: 'span',
      "class": 'absol-selectlist-item-text',
      child: {
        text: ''
      }
    }, {
      "class": 'absol-selectlist-item-desc-container',
      child: {
        tag: 'span',
        "class": 'absol-selectlist-item-desc',
        child: {
          text: ''
        }
      }
    }]
  });
};
CheckListItem.property = {
  text: _SelectListItem["default"].property.text,
  value: _SelectListItem["default"].property.value,
  icon: _SelectListItem["default"].property.icon
};
CheckListItem.property.data = {
  set: function set(value) {
    this._data = value;
    var viewData = {
      text: '',
      desc: '',
      noSelect: false,
      extendStyle: null,
      extendClasses: null,
      icon: null
    };
    if (typeof value === 'string') {
      viewData.text = value;
    } else {
      Object.assign(viewData, value);
    }
    Object.assign(this._viewData, viewData);
  },
  get: function get() {
    return this._data;
  }
};
CheckListItem.property.selected = {
  set: function set(value) {
    this.$checkbox.checked = !!value;
  },
  get: function get() {
    return this.$checkbox.checked;
  }
};
CheckListItem.property.level = {
  set: function set(value) {
    value = value || 0;
    this._level = value;
    this.$checkbox.addStyle('margin-left', value * 1.75 + 'em');
  },
  get: function get() {
    return this._level;
  }
};
CheckListItem.prototype.viewHandlers = {};
CheckListItem.prototype.viewHandlers.text = {
  set: function set(value) {
    this.$textValue.data = value;
  },
  get: function get() {
    return this.$textValue.data;
  }
};
CheckListItem.prototype.viewHandlers.desc = {
  set: function set(value) {
    this.$descValue.data = value;
  },
  get: function get() {
    return this.$descValue.data;
  }
};
CheckListItem.prototype.viewHandlers.extendClasses = {
  set: function set(value, ref) {
    var prevVal = ref.get() || [];
    var i;
    for (i = 0; i < prevVal.length; ++i) {
      this.removeClass(prevVal[i]);
    }
    var newVal = [];
    if (typeof value == 'string') value = value.trim().split(/\s+/);
    value = value || [];
    for (i = 0; i < value.length; ++i) {
      newVal.push(value[i]);
      this.addClass(value[i]);
    }
    return newVal;
  }
};
CheckListItem.prototype.viewHandlers.extendStyle = {
  /***
   *
   * @param value
   * @param {Ref} ref
   */
  set: function set(value, ref) {
    this.removeStyle(ref.get() || {});
    this._extendStyle = Object.assign({}, value || {});
    this.addStyle(this._extendStyle);
  },
  get: function get() {
    return this._extendClasses;
  }
};
CheckListItem.prototype.viewHandlers.noSelect = {
  set: function set(value) {
    if (value) this.addClass('as-no-select');else this.removeClass('as-no-select');
    return value;
  }
};
CheckListItem.prototype.viewHandlers.icon = {
  set: function set(icon) {
    this.icon = icon;
  },
  get: function get() {
    return this.icon;
  }
};
CheckListItem.eventHandler = {};
CheckListItem.eventHandler.clickText = function (event) {
  if ((0, _EventEmitter.hitElement)(this.$checkbox, event)) return;
  this.$checkbox.checked = !this.$checkbox.checked;
  this.emit('select', {
    target: this,
    type: 'select',
    originalEvent: event.originalEvent || event.originEvent || event,
    selected: this.selected
  });
};
CheckListItem.eventHandler.checkboxChange = function (event) {
  this.emit('select', {
    target: this,
    type: 'select',
    originalEvent: event.originalEvent || event.originEvent || event,
    selected: this.selected
  });
};
_ACore["default"].install(CheckListItem);
var _default = CheckListItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.CTBItemListController = CTBItemListController;
exports.TreeNodeHolder = TreeNodeHolder;
exports.TreeRootHolder = TreeRootHolder;
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _Dom = __webpack_require__(64821);
var _CheckTreeItem = _interopRequireDefault(__webpack_require__(26638));
__webpack_require__(17779);
var _utils = __webpack_require__(84512);
var _search = __webpack_require__(67858);
var _SelectListBox = _interopRequireDefault(__webpack_require__(47818));
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
var _Array = __webpack_require__(40411);
var _CheckListBox = __webpack_require__(62896);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _Searcher = _interopRequireDefault(__webpack_require__(47106));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _attribute = __webpack_require__(18144);
var _noop = _interopRequireDefault(__webpack_require__(5025));
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; }
/***
 * @extends Follower
 * @constructor
 */
function CheckTreeBox() {
  if (this.cancelWaiting) this.cancelWaiting();
  /**
   *
   * @type {CTBItemListController}
   */
  this.listCtrl = new this.ListControllerClass(this);
  _OOP["default"].drillProperty(this, this.listCtrl, ['viewHolders', '$checkAll', 'estimateSize']);
  this.dropdownCtrl = new CTBDropdownController(this);
  this.actionCtrl = new CTBActionController(this);
  this.searchCtrl = new CTBSearchController(this);
  _OOP["default"].drillProperty(this, this.searchCtrl, ['$searchInput']);
  this._initDomHook();
  this._initProperty();
  if (!this.updatePosition) {
    this.updatePosition = _noop["default"];
  }

  /**
   * @name mobile
   * @type {boolean}
   * @memberof  CheckTreeBox#
   */

  /***
   * @name strictValue
   * @memberof CheckTreeBox#
   * @type {boolean}
   */

  /**
   * @name values
   * @memberof CheckTreeBox#
   * @type {Array}
   */
  /**
   * @name viewValues
   * @memberof CheckTreeBox#
   * @type {Array}
   */
}

CheckTreeBox.tag = 'CheckTreeBox'.toLowerCase();
CheckTreeBox.prototype.preLoadN = 3;
CheckTreeBox.prototype.itemHeight = 28;
CheckTreeBox.prototype.itemInPage = 36;
CheckTreeBox.prototype._initDomHook = function () {};
CheckTreeBox.prototype._initProperty = function () {
  this.scale14 = (0, _ACore.$)(document.body).getFontSize() / 14;
  this.initOpened = 0;
  this.enableSearch = true;
};
CheckTreeBox.prototype.focus = _SelectListBox["default"].prototype.focus;
CheckTreeBox.prototype.addStyle = function (name, value) {
  var ms;
  if (name === 'minWidth' || name === 'min-width') {
    ms = (0, _attribute.parseMeasureValue)(value);
    if (ms.unit === 'px') {
      value = Math.max(240, ms.value) + 'px';
    }
    return _AElement["default"].prototype.addStyle.call(this, name, value);
  }
  return _AElement["default"].prototype.addStyle.apply(this, arguments);
};
CheckTreeBox.render = function () {
  var mobile = arguments[1] && arguments[1].forceMobile || _BrowserDetector["default"].isMobile;
  var footer = {
    "class": 'as-dropdown-box-footer',
    child: [{
      tag: 'checkbox',
      "class": 'as-select-list-box-check-all',
      props: {
        checked: false,
        text: _LanguageSystem["default"].getText('txt_check_all') || _LanguageSystem["default"].getText('txt_all') || 'Check All'
      }
    }, {
      "class": 'as-dropdown-box-footer-right',
      child: [{
        tag: 'a',
        "class": 'as-select-list-box-cancel-btn',
        attr: {
          "data-ml-key": 'txt_cancel'
        }
      }].concat(mobile ? [] : [{
        tag: 'a',
        "class": 'as-select-list-box-close-btn',
        attr: {
          "data-ml-key": 'txt_close'
        }
      }])
    }]
  };
  var content = {
    "class": ['as-check-tree-box-scroller', 'as-bscroller', 'as-select-list-box-scroller'],
    child: {
      "class": ['as-check-tree-box-content', 'as-select-list-box-content'],
      child: Array(this.prototype.preLoadN).fill('.as-select-list-box-page')
    }
  };
  if (mobile) {
    return (0, _ACore._)({
      props: {
        mobile: true
      },
      extendEvent: ['change', 'close', 'toggleitem', 'cancel'],
      "class": ['am-check-tree-box-modal', 'am-modal', 'am-dropdown-box-modal'],
      child: {
        "class": ['am-check-tree-box', 'am-dropdown-box', 'as-dropdown-box-common-style'],
        child: [{
          "class": 'am-dropdown-box-header',
          child: [{
            tag: _Searcher["default"].tag
          }, {
            tag: 'button',
            "class": 'am-dropdown-box-close-btn',
            child: 'span.mdi.mdi-close'
          }]
        }, content, footer]
      }
    });
  }
  return (0, _ACore._)({
    tag: 'follower',
    extendEvent: ['change', 'toggleitem', 'cancel', 'close'],
    "class": ['as-check-tree-box', 'as-select-list-box', 'as-anchor-1'],
    child: [{
      "class": 'as-select-list-box-search-ctn',
      child: 'searchtextinput'
    }, content, footer],
    props: {
      anchor: [1, 6, 2, 5],
      mobile: false
    }
  });
};
CheckTreeBox.prototype.HolderClass = TreeNodeHolder;
CheckTreeBox.prototype.findItemHoldersByValue = function (value) {
  return this.listCtrl.findItemHoldersByValue(value);
};
CheckTreeBox.prototype.viewListAt = function (offset) {
  this.listCtrl.viewListAt(offset);
};
CheckTreeBox.prototype.noTransition = function () {
  if (this.hasClass('as-no-transition')) return;
  this.addClass('as-no-transition');
  setTimeout(function () {
    this.removeClass('as-no-transition');
  }.bind(this), 100);
};
CheckTreeBox.prototype.resetSearchState = function () {
  this.listCtrl.resetView();
};
CheckTreeBox.prototype.updateContentSize = function () {
  this.listCtrl.updateContentSize();
};
CheckTreeBox.prototype._implicit = function (values) {
  return values || [];
};
CheckTreeBox.property = {};
CheckTreeBox.property.items = {
  /***
   * @this CheckTreeBox
   * @param items
   */
  set: function set(items) {
    items = items || [];
    this._items = items;
    this.listCtrl.setItems(items);
  },
  get: function get() {
    return this._items;
  }
};
CheckTreeBox.property.values = {
  /***
   * @this CheckTreeBox
   * @param values
   */
  set: function set(values) {
    this.listCtrl.setValues(values);
  },
  get: function get() {
    return this.listCtrl.getValues();
  }
};
CheckTreeBox.property.viewValues = {
  get: function get() {
    return this.listCtrl.getViewValues();
  }
};
CheckTreeBox.property.enableSearch = {
  set: function set(value) {
    if (value) this.addClass('as-enable-search');else this.removeClass('as-enable-search');
  },
  get: function get() {
    return this.hasClass('as-enable-search');
  }
};
CheckTreeBox.eventHandler = {};
CheckTreeBox.eventHandler.toggleItem = function (item, event) {
  this.noTransition();
  var nodeHolder = item.nodeHolder;
  if (!nodeHolder) {
    console.error("Load error, item was not assigned TreeNodeHolder!");
  } else nodeHolder.toggle();
};
CheckTreeBox.eventHandler.selectItem = function (item, event) {
  var nodeHolder = item.nodeHolder;
  if (!nodeHolder) {
    console.error("Load error, item was not assigned TreeNodeHolder!");
    return;
  }
  this.noTransition();
  var ref = nodeHolder.findReferenceNode();
  var targetNode = ref || nodeHolder;
  var selected = item.selected;
  if (selected === 'all' && (targetNode.canSelectAll || targetNode.selected === 'none')) {
    targetNode.selectAll();
  } else {
    targetNode.unselectAll();
  }
  if (ref) {
    nodeHolder.getRoot().updateSelectedFromRef();
  }
  this.emit('change', {
    type: 'change',
    target: this
  }, this);
};

/***
 * @this CheckTreeBox
 */
CheckTreeBox.eventHandler.searchModify = function () {};
CheckTreeBox.prototype.updateSelectedInViewIfNeed = function () {
  if (this.rootViewHolder !== this.rootHolder) {
    this.rootViewHolder.updateSelectedFromRef();
  }
};
CheckTreeBox.eventHandler.clickCancelBtn = function (event) {
  this.emit('cancel', {
    type: 'cancel',
    target: this,
    originalEvent: event
  }, this);
};
CheckTreeBox.eventHandler.clickCloseBtn = function (event) {
  this.emit('close', {
    type: 'close',
    target: this,
    originalEvent: event
  }, this);
};
_ACore["default"].install(CheckTreeBox);
var _default = CheckTreeBox;
/***
 *
 * @param {CheckTreeBox} boxElt
 * @param items
 * @constructor
 */
exports["default"] = _default;
function TreeRootHolder(boxElt, items) {
  var _this = this;
  this.boxElt = boxElt;
  this.items = items;
  this.selected = 'none';
  var Clazz = this.SubHolderClass;
  this.child = [];
  this.idx = -1; //root
  this.tailIdx = this.idx;
  if (items && items.length > 0) {
    items.reduce(function (ac, it) {
      var child = new Clazz(boxElt, it, ac.idx + 1, _this);
      ac.idx = child.tailIdx;
      ac.arr.push(child);
      return ac;
    }, {
      idx: this.idx,
      arr: this.child
    });
    this.tailIdx = this.child[this.child.length - 1].tailIdx;
  }
  this.canSelectAll = this.child.every(function (c) {
    return c.canSelectAll;
  });
  this.canSelect = this.child.length === 0 || this.child.some(function (c) {
    return c.canSelect;
  });
}
CheckTreeBox.prototype.RootHolderClass = TreeRootHolder;
TreeRootHolder.prototype.level = -1;
TreeRootHolder.prototype.reset = function () {
  this.child.forEach(function (c) {
    return c.reset();
  });
  this.selected = "none";
};

/***
 *
 * @param {Array=} ac
 */
TreeRootHolder.prototype.toArray = function (ac) {
  ac = ac || [];
  this.child.forEach(function (c) {
    return c.toArray(ac);
  });
  return ac;
};
TreeRootHolder.prototype.updateFromChild = function () {
  var childSelectAll = 0;
  var childSelectChild = 0;
  var isCheckAll = true;
  this.traverse(function (hd) {
    if (hd.selected === 'none' && !hd.item.noSelect) {
      isCheckAll = false;
    }
  });
  if (this.canSelectAll) {
    this.boxElt.$checkAll.checked = isCheckAll;
    this.boxElt.$checkAll.minus = false;
    this.selected = isCheckAll ? 'all' : 'none';
  } else {
    this.boxElt.$checkAll.checked = false;
    this.boxElt.$checkAll.minus = isCheckAll;
    this.selected = isCheckAll ? 'child' : 'none';
  }
};
TreeRootHolder.prototype.updateUp = function () {
  this.updateFromChild();
};

/***
 *
 * @param {Array=} ac
 */
TreeRootHolder.prototype.getValues = function (ac) {
  ac = ac || [];
  this.child.forEach(function (c) {
    return c.getValues(ac);
  });
  return (0, _Array.arrayUnique)(ac);
};
TreeRootHolder.prototype.getViewValues = function (ac) {
  ac = ac || [];
  this.child.forEach(function (c) {
    return c.getViewValues(ac);
  });
  return (0, _Array.arrayUnique)(ac);
};

/***
 *
 * @param {Array} values
 */
TreeRootHolder.prototype.setValues = function (values) {
  this.reset();
  values = values.reduce(function (ac, cr) {
    ac[(0, _utils.keyStringOf)(cr)] = true;
    return ac;
  }, values.slice());
  this.child.forEach(function (c) {
    return c.setValues(values);
  });
};
TreeRootHolder.prototype.calcEstimateSize = function () {
  var res = {
    width: 0,
    height: this.boxElt.itemHeight + (this.tailIdx + 1)
  };
  var holders = this.child;
  var n = holders.length;
  var holder;
  var longestHolder = null;
  var longest = 0;
  var w;
  for (var i = 0; i < n; ++i) {
    holder = holders[i];
    holder.traverse(function (hd) {
      w = hd.calcEstimateWidth();
      if (w > longest) {
        longest = w;
        longestHolder = hd;
      }
    });
  }
  if (longestHolder) {
    res.width = longestHolder.calcWidth() * this.boxElt.scale14;
  }
  return res;
};
TreeRootHolder.prototype.selectAll = function () {
  this.child.forEach(function (c) {
    return c.selectAll();
  });
};
TreeRootHolder.prototype.unselectAll = function () {
  this.child.forEach(function (c) {
    return c.unselectAll();
  });
};
TreeRootHolder.prototype.findReferenceNode = function () {
  if (this.boxElt.listCtrl.rootHolder === this) return null;
  return this.boxElt.listCtrl.rootHolder;
};
TreeRootHolder.prototype.updateSelectedFromRef = function () {
  if (this.boxElt.listCtrl.rootHolder === this) return;
  this.child.forEach(function (c) {
    return c.updateSelectedFromRef();
  });
};
TreeRootHolder.prototype.traverse = function (cb) {
  this.child.forEach(function (c) {
    return c.traverse(cb);
  });
};
TreeRootHolder.prototype.getRoot = function () {
  return this;
};

/***
 *
 * @param {Object<string, TreeNodeHolder>|{}=}ac
 * @returns {Object<string, TreeNodeHolder>|{}}
 */
TreeRootHolder.prototype.depthIndexing = function (ac) {
  ac = ac || {};
  this.child.forEach(function (c) {
    return c.depthIndexing(ac);
  });
  return ac;
};

/***
 *
 * @param {CheckTreeBox} boxElt
 * @param {SelectionItem} item
 * @param {number} idx
 * @param {TreeNodeHolder | TreeRootHolder} parent
 * @constructor
 */
function TreeNodeHolder(boxElt, item, idx, parent) {
  var _this2 = this;
  this.boxElt = boxElt;
  this.item = item;
  this.idx = idx;
  this.tailIdx = idx; //last child index
  this.parent = parent;
  this.status = item.items && item.items.length > 0 ? 'close' : 'none';
  this.selected = 'none';
  this.level = parent ? parent.level + 1 : 0;
  if (this.status === 'close' && this.level < this.boxElt.initOpened) {
    this.status = 'open';
  }
  this._elt = null;
  var Clazz = this.constructor;
  /***
   *
   * @type {this[]}
   */
  this.child = [];
  if (item.items && item.items.length > 0) {
    item.items.reduce(function (ac, it) {
      var child = new Clazz(boxElt, it, ac.idx + 1, _this2);
      ac.idx = child.tailIdx;
      ac.arr.push(child);
      return ac;
    }, {
      idx: this.idx,
      arr: this.child
    });
    this.tailIdx = this.child[this.child.length - 1].tailIdx;
  }
  this.canSelectAll = !this.item.noSelect && this.child.every(function (c) {
    return c.canSelectAll;
  });
  this.canSelect = !this.item.noSelect && (this.child.length === 0 || this.child.some(function (c) {
    return c.canSelect;
  }));
}
TreeRootHolder.prototype.SubHolderClass = TreeNodeHolder;

/***
 *
 * @param {Object<string, TreeNodeHolder>|{}}ac
 * @returns {Object<string, TreeNodeHolder>|{}}
 */
TreeNodeHolder.prototype.depthIndexing = function (ac) {
  ac = ac || {};
  var key = (0, _utils.keyStringOf)(this.item.value);
  if (!ac[key]) ac[key] = [];
  ac[key].push(this);
  // if (ac[key].length === 2) {//allow
  //     console.warn("Duplicate value", ac[key]);
  // }
  this.child.forEach(function (c) {
    return c.depthIndexing(ac);
  });
  return ac;
};
TreeNodeHolder.prototype.findIdxInView = function () {
  var holders = this.boxElt.listCtrl.viewHolders;
  var start = 0;
  var end = holders.length - 1;
  var mid;
  var idx = this.idx;
  var holderIdx;
  while (start < end) {
    mid = start + end >> 1;
    holderIdx = holders[mid].idx;
    if (holderIdx < idx) {
      start = mid + 1;
    } else if (holderIdx > idx) {
      end = mid - 1;
    } else {
      return mid;
    }
  }
  holderIdx = holders[start].idx;
  if (holderIdx === idx) return start;
  return -1;
};
TreeNodeHolder.prototype.getValues = function (ac) {
  ac = ac || [];
  if (this.selected === 'all') {
    ac.push(this.item.value);
  } else if (this.selected === 'child') {
    this.child.forEach(function (c) {
      return c.getValues(ac);
    });
  }
  return ac;
};
TreeNodeHolder.prototype.getViewValues = function (ac) {
  return this.getValues(ac);
};
TreeNodeHolder.prototype.setValues = function (values) {
  if (values[(0, _utils.keyStringOf)(this.item.value)]) {
    this.selectAll(true);
  } else {
    this.child.forEach(function (c) {
      return c.setValues(values);
    });
  }
  this.updateFromChild();
};
TreeNodeHolder.prototype.toggle = function () {
  var idx = this.findIdxInView();
  var status = this.status;
  if (status === 'close') {
    this.itemElt.status = 'open';
    this.status = 'open';
    var arr = this.toArray();
    arr.shift();
    this.boxElt.listCtrl.viewHolders.splice.apply(this.boxElt.listCtrl.viewHolders, [idx + 1, 0].concat(arr));
    this.boxElt.listCtrl.updateContentSize();
    this.boxElt.listCtrl.viewListAt(idx);
    this.boxElt.emit('toggleitem', {
      type: 'toggleitem',
      target: this.boxElt,
      nodeHolder: this,
      status: 'open'
    }, this.boxElt);
  } else if (status === 'open') {
    this.itemElt.status = 'close';
    this.status = 'close';
    var l = 0;
    while (this.boxElt.viewHolders[idx + 1 + l] && this.boxElt.listCtrl.viewHolders[idx + 1 + l].isDescendantOf(this)) {
      ++l;
    }
    this.boxElt.listCtrl.viewHolders.splice(idx + 1, l);
    this.boxElt.listCtrl.updateContentSize();
    this.boxElt.listCtrl.viewListAt(idx);
    this.boxElt.emit('toggleitem', {
      type: 'toggleitem',
      target: this.boxElt,
      nodeHolder: this,
      status: 'close'
    }, this.boxElt);
  }
};

/***
 *
 * @param {boolean=} isDownUpdate
 */
TreeNodeHolder.prototype.selectAll = function (isDownUpdate) {
  if (this.selected === 'all') return;
  if (!this.canSelect) return;
  if (this.canSelectAll) this.selected = 'all';else this.selected = 'child';
  if (this.itemElt) this.itemElt.selected = this.selected;
  this.child.forEach(function (child) {
    child.selectAll(true);
  });
  if (!isDownUpdate) {
    if (this.parent) this.parent.updateUp();
  }
};

/***
 *
 * @param {boolean=} isDownUpdate
 */
TreeNodeHolder.prototype.unselectAll = function (isDownUpdate) {
  if (this.selected === 'none') return;
  this.selected = 'none';
  if (this.itemElt) this.itemElt.selected = this.selected;
  this.child.forEach(function (child) {
    child.unselectAll(true);
  });
  if (!isDownUpdate) {
    if (this.parent) this.parent.updateUp();
  }
};
TreeNodeHolder.prototype.reset = function () {
  if (this.selected !== "empty") this.selected = 'none';
  if (this.itemElt) this.itemElt.selected = this.selected;
  this.child.forEach(function (child) {
    child.reset(true);
  });
};
TreeNodeHolder.prototype.updateFromChild = function () {
  if (this.child.length === 0) return;
  var childSelectAll = 0;
  var childSelectChild = 0;
  for (var i = 0; i < this.child.length; ++i) {
    if (this.child[i].selected === 'all') {
      childSelectAll++;
    } else if (this.child[i].selected === 'child') {
      childSelectChild++;
    }
  }
  if (childSelectAll === this.child.length) {
    this.selected = 'all';
  } else if (childSelectChild + childSelectAll > 0) {
    this.selected = 'child';
  } else {
    this.selected = 'none';
  }
  if (this.itemElt) {
    this.itemElt.selected = this.selected;
  }
};
TreeNodeHolder.prototype.updateUp = function () {
  this.updateFromChild();
  if (this.parent) this.parent.updateUp();
};
TreeNodeHolder.prototype.calcEstimateWidth = function () {
  var width = 12; //padding
  width += 23 * this.level;
  width += 14.7 + 5; //toggle icon
  width += 16; //checkbox
  if (this.item.icon) width += 21; //icon
  width += 7 + (0, _utils.estimateWidth14)(this.item.text); //margin-text
  if (this.item.desc) width += 6 + (0, _utils.estimateWidth14)(this.item.desc) * 0.85;
  return width;
};
TreeNodeHolder.prototype.calcWidth = function () {
  var width = 12; //padding
  width += 43; //cheat for some size with checklistbox
  width += 1.75 * 14 * this.level;
  width += 14.7 + 5; //toggle icon
  width += 16; //checkbox
  if (this.item.icon) width += 21; //icon
  width += 7 + (0, _CheckListBox.measureArial14TextWidth)(this.item.text); //margin-text
  if (this.item.desc) width += 6 + (0, _CheckListBox.measureArial14TextWidth)(this.item.desc /*, '11.9px arial'*/).width * 0.85;
  return width;
};
TreeNodeHolder.prototype.isDescendantOf = function (parent) {
  var cr = this.parent;
  while (cr) {
    if (parent === cr) return true;
    cr = cr.parent;
  }
  return false;
};

/***
 *
 * @param {TreeNodeHolder[]=} ac
 * @return {TreeNodeHolder[]}
 */
TreeNodeHolder.prototype.toArray = function (ac) {
  ac = ac || [];
  ac.push(this);
  if (this.status === 'open') {
    for (var i = 0; i < this.child.length; ++i) {
      this.child[i].toArray(ac);
    }
  }
  return ac;
};
TreeNodeHolder.prototype.traverse = function (cb) {
  cb(this);
  this.child.forEach(function (c) {
    return c.traverse(cb);
  });
};
Object.defineProperty(TreeNodeHolder.prototype, 'itemElt', {
  set: function set(elt) {
    if (this._elt === elt) return;
    if (this._elt) {
      if (this._elt.nodeHolder === this) {
        this._elt.nodeHolder = null;
      }
    }
    if (elt) {
      if (elt.nodeHolder) {
        elt.nodeHolder.itemElt = null;
      }
      elt.nodeHolder = this;
      this._elt = elt;
      elt.data = this.item;
      elt.level = this.level;
      elt.status = this.status;
      elt.selected = this.selected;
      if (this.item.noSelect || !this.canSelect) {
        elt.noSelect = true;
      } else {
        elt.noSelect = false;
      }
    } else {
      this._elt = null;
    }
  },
  get: function get() {
    return this._elt;
  },
  configurable: true
});
TreeNodeHolder.prototype.findReferenceNode = function () {
  var value = this.item.value;
  var holders = this.boxElt.findItemHoldersByValue(value);
  var holder;
  for (var i = 0; i < holders.length; ++i) {
    holder = holders[i];
    if ((holder.item === this.item.ref || holder.item === this.item) && holder !== this) return holder;
  }
  return null;
};
TreeNodeHolder.prototype.getRoot = function () {
  if (!this.parent) return this;
  return this.parent.getRoot();
};
TreeNodeHolder.prototype.updateSelectedFromRef = function () {
  var ref = this.findReferenceNode();
  if (!ref) return;
  var selected = ref.selected;
  this.selected = selected;
  if (this.itemElt) this.itemElt.selected = selected;
  this.child.forEach(function (c) {
    c.updateSelectedFromRef();
  });
};

/**
 *
 * @param {CheckTreeBox} elt
 * @constructor
 */
function CTBItemListController(elt) {
  this.elt = elt;
  var RootHolderClass = this.elt.RootHolderClass;
  this._items = [];
  this._values = [];
  this.itemHolderByValue = {};
  this.rootHolder = new RootHolderClass(this.elt, []);

  // this.rootHolders = [];

  /***
   *
   * @type {TreeRootHolder}
   */
  this.rootViewHolder = this.rootHolder;
  /***
   *
   * @type {TreeNodeHolder[]}
   */
  this.viewHolders = []; //toArray

  this.$checkAll = (0, _ACore.$)('.as-select-list-box-check-all', this.elt).on('change', this.ev_checkAllChange.bind(this));
  this.$scroller = (0, _ACore.$)('.as-check-tree-box-scroller', elt).on('scroll', this.ev_scroll.bind(this));
  this.itemInPage = Math.max(36, Math.ceil((0, _Dom.getScreenSize)().height / this.itemHeight));
  this.$content = (0, _ACore.$)('.as-check-tree-box-content', elt);
  this.$pages = (0, _ACore.$$)('.as-select-list-box-page', elt);
  this.$pages.forEach(function (p) {
    p.__viewOffset__ = -1;
  });
}
CheckTreeBox.prototype.ListControllerClass = CTBItemListController;
CTBItemListController.prototype.preLoadN = 3;
CTBItemListController.prototype.itemHeight = 28;
CTBItemListController.prototype.itemInPage = 36;
CTBItemListController.prototype.resetView = function () {
  this.elt.$searchInput.value = '';
  this.viewHolders = this.rootHolder.toArray();
  this.rootViewHolder = this.rootHolder;
  this.updateContentSize();
  this.viewListAt(0);
};
CTBItemListController.prototype.setItems = function (items) {
  if (!(items instanceof Array)) items = [];
  (0, _search.prepareSearchForList)(items);
  this._items = items;
  var RootHolderClass = this.elt.RootHolderClass;
  this.rootHolder = new RootHolderClass(this.elt, items);
  this.itemHolderByValue = this.rootHolder.depthIndexing();
  this.estimateSize = this.rootHolder.calcEstimateSize();
  this.elt.addStyle('--select-list-estimate-width', this.estimateSize.width + 'px');
  this.resetView();
  this.rootHolder.setValues(this._values);
};
CTBItemListController.prototype.setValues = function (values) {
  if (values instanceof Array) {
    values = values.slice();
  } else if (values === undefined || values === null) {
    values = [];
  } else values = [values];
  this._values = values;
  this.rootHolder.setValues(values);
};
CTBItemListController.prototype.getValues = function () {
  return this.rootHolder.getValues();
};
CTBItemListController.prototype.getViewValues = function () {
  return this.rootHolder.getViewValues();
};
CTBItemListController.prototype.updateContentSize = function () {
  this.$content.addStyle('height', this.viewHolders.length * this.itemHeight / 14 + 'em');
};
CTBItemListController.prototype.viewListAt = function (offset) {
  offset = offset || 0;
  this.elt.noTransition();
  var midPage = this.$pages.length >> 1;
  var startOffset = Math.max(0, offset - midPage * this.itemInPage);
  var cOffset;
  var itemN = this.viewHolders.length;
  for (var i = 0; i < this.$pages.length; ++i) {
    cOffset = startOffset + i * this.itemInPage;
    if (cOffset < itemN) {
      this.$pages[i].__viewOffset__ = cOffset;
      this.$pages[i].removeStyle('display').addStyle('top', cOffset * this.itemHeight / 14 + 'em');
      this._fillPage(this.$pages[i], Math.min(this.itemInPage, itemN - cOffset));
      this._assignItems(this.$pages[i], cOffset);
    } else {
      this.$pages[i].__viewOffset__ = -1;
      this.$pages[i].addStyle('display', 'none');
    }
  }
};
CTBItemListController.prototype._fillPage = function (pageElt, n) {
  while (pageElt.childNodes.length > n) {
    this._releaseItem(pageElt.lastChild);
    pageElt.removeChild(pageElt.lastChild);
  }
  while (pageElt.childNodes.length < n) {
    pageElt.addChild(this._requestItem());
  }
};
CTBItemListController.prototype._assignItems = function (pageElt, offset) {
  for (var i = 0; i < pageElt.childNodes.length; ++i) {
    this.viewHolders[offset + i].itemElt = pageElt.childNodes[i];
  }
};
CTBItemListController.prototype._requestItem = function () {
  var res = this._pool.pop() || (0, _ACore._)({
    tag: _CheckTreeItem["default"].tag,
    props: {
      menuElt: this
    },
    on: {
      presstoggle: function presstoggle(event) {
        this.menuElt.eventHandler.toggleItem(this, event);
      },
      select: function select(event) {
        this.menuElt.eventHandler.selectItem(this, event);
      }
    }
  });
  res.menuElt = this.elt;
  return res;
};
CTBItemListController.prototype._pool = [];
CTBItemListController.prototype._releaseItem = function (item) {
  if (item.nodeHolder && item.nodeHolder.itemElt === item) {
    item.nodeHolder.itemElt = null;
  }
  this._pool.push(item);
};
CTBItemListController.prototype.findItemHoldersByValue = function (value) {
  return (this.itemHolderByValue[(0, _utils.keyStringOf)(value)] || []).slice();
};
CTBItemListController.prototype.isSelectedAll = function () {
  return this.rootHolder.selected;
};
/*
CTBItemListController.prototype.selectAll = function (selected){
    var preValues = this.getValues();
    switch (selected) {
        case 'all':
            this.rootHolder.unselectAll();
            break;
        case 'child':
            if (this.rootHolder.canSelectAll) {
                this.rootHolder.selectAll();
            }
            else {
                this.rootHolder.unselectAll();
            }
            break;
        case 'none':
            this.rootHolder.selectAll();
            break;
    }
    if (this.rootViewHolder !== this.rootHolder) {
        this.rootViewHolder.updateSelectedFromRef();
    }
    var newValues = this.getValues();
    if (!arrayCompare(preValues, newValues)) {
        this.elt.emit('change', { type: 'change', target: this }, this);
    }
};*/

CTBItemListController.prototype.ev_scroll = function (event) {
  var itemHeight = this.itemHeight * this.elt.getFontSize() / 14;
  var scrollTop = this.$scroller.scrollTop;
  var scrollBottom = scrollTop + this.$scroller.clientHeight;
  var startOffset = this.$pages[0].__viewOffset__;
  var endOffset = this.$pages[this.$pages.length - 1].__viewOffset__;
  if (endOffset === -1) {
    endOffset = this.viewHolders.length;
  } else {
    endOffset += this.$pages[this.$pages.length - 1].childNodes.length;
  }
  var needLoad = 0;
  if (startOffset > 0 && startOffset * itemHeight + 200 > scrollTop) needLoad = -1;
  if (needLoad === 0 && this.viewHolders.length > endOffset && endOffset * itemHeight - 200 < scrollBottom) {
    needLoad = 1;
  }
  var page2Load;
  if (needLoad < 0) {
    page2Load = this.$pages.pop();
    this.$pages.unshift(page2Load);
    page2Load.__viewOffset__ = Math.max(0, startOffset - this.itemInPage);
    this._fillPage(page2Load, startOffset - page2Load.__viewOffset__);
    this._assignItems(page2Load, page2Load.__viewOffset__);
    page2Load.removeStyle('display');
    page2Load.addStyle('top', page2Load.__viewOffset__ * itemHeight + 'px');
  } else if (needLoad > 0) {
    for (var i = 0; i < this.$pages.length; ++i) {
      if (this.$pages[i].__viewOffset__ === -1) {
        page2Load = this.$pages[i];
        break;
      }
    }
    if (!page2Load) {
      page2Load = this.$pages.shift();
      this.$pages.push(page2Load);
    }
    page2Load.__viewOffset__ = endOffset;
    this._fillPage(page2Load, Math.min(this.itemInPage, this.viewHolders.length - endOffset));
    this._assignItems(page2Load, page2Load.__viewOffset__);
    page2Load.removeStyle('display');
    page2Load.addStyle('top', page2Load.__viewOffset__ * itemHeight + 'px');
  }
};
CTBItemListController.prototype.ev_checkAllChange = function (event) {
  var selected = this.rootHolder.selected;
  var preValues = this.getValues();
  switch (selected) {
    case 'all':
      this.rootHolder.unselectAll();
      break;
    case 'child':
      if (this.rootHolder.canSelectAll) {
        this.rootHolder.selectAll();
      } else {
        this.rootHolder.unselectAll();
      }
      break;
    case 'none':
      this.rootHolder.selectAll();
      break;
  }
  if (this.rootViewHolder !== this.rootHolder) {
    this.rootViewHolder.updateSelectedFromRef();
  }
  var newValues = this.getValues();
  if (!(0, _Array.arrayCompare)(preValues, newValues)) {
    this.elt.emit('change', {
      type: 'change',
      target: this
    }, this);
  }
};

/**
 *
 * @param {CheckTreeBox} elt
 * @constructor
 */
function CTBActionController(elt) {
  this.elt = elt;
  this.$cancelBtn = (0, _ACore.$)('.as-select-list-box-cancel-btn', this.elt).on('click', this.ev_clickCancelBtn.bind(this));
  this.$closeBtn = (0, _ACore.$)('.as-select-list-box-close-btn', this.elt) || (0, _ACore.$)('.am-dropdown-box-close-btn', this.elt);
  this.$closeBtn.on('click', this.ev_clickCloseBtn.bind(this));
}
CTBActionController.prototype.ev_clickCancelBtn = function (event) {
  this.elt.emit('cancel', {
    type: 'cancel',
    target: this,
    originalEvent: event
  }, this);
};
CTBActionController.prototype.ev_clickCloseBtn = function (event) {
  this.elt.emit('close', {
    type: 'close',
    target: this,
    originalEvent: event
  }, this);
};
function CTBSearchController(elt) {
  this.elt = elt;
  this.cache = {};
  this.$searchInput = (0, _ACore.$)('searchtextinput', this.elt).on('stoptyping', this.ev_searchModify.bind(this));
}
CTBSearchController.prototype.ev_searchModify = function () {
  var text = this.$searchInput.value.trim();
  if (text.length === 0) {
    this.elt.listCtrl.resetView();
    return;
  }
  var searchData;
  if (this.cache[text]) {
    searchData = this.cache[text];
  } else {
    searchData = {};
    searchData.items = (0, _search.searchTreeListByText)(text, this.elt.listCtrl._items);
    searchData.rootViewHolder = new TreeRootHolder(this.elt, searchData.items);
    searchData.items.forEach(function visit(it) {
      if (it.ref.items && it.ref.items.length > 0 && (!it.items || it.items.length === 0)) {
        it.items = it.ref.items;
        it.doNotInitOpen = true;
      } else if (it.items && it.items.length > 0) {
        it.items.forEach(visit);
      }
    });
  }
  searchData.rootViewHolder.traverse(function (hd) {
    if (hd.status === 'close') {
      if (!hd.item.doNotInitOpen) hd.status = 'open';
    }
  });

  //todo: short command
  this.elt.listCtrl.rootViewHolder = searchData.rootViewHolder;
  this.elt.listCtrl.viewHolders = this.elt.listCtrl.rootViewHolder.toArray();
  this.elt.listCtrl.rootViewHolder.updateSelectedFromRef();
  this.elt.listCtrl.updateContentSize();
  this.elt.listCtrl.viewListAt(0);
  this.elt.dropdownCtrl.updatePosition();
};

/**
 *
 * @param {CheckTreeBox} elt
 * @constructor
 */
function CTBDropdownController(elt) {
  this.elt = elt;
}
CTBDropdownController.prototype.updatePosition = function () {
  if (this.elt.updatePosition) {
    this.elt.updatePosition();
  }
};

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _ExpTree = __webpack_require__(87326);
var _SelectListItem = __webpack_require__(57040);
__webpack_require__(90127);
var _EventEmitter = __webpack_require__(46833);
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; }
/***
 * @extends ExpNode
 * @constructor
 */
function CheckTreeItem() {
  this._itemData = null;
  this.$name = (0, _ACore.$)('span.absol-exp-node-name', this);
  this.$desc = (0, _ACore.$)('span.absol-exp-node-desc', this);
  this.$iconCtn = (0, _ACore.$)('div.absol-exp-node-ext-icon', this);
  this.$level = (0, _ACore.$)('.absol-exp-node-level', this);
  this.$checkbox = (0, _ACore.$)('checkboxbutton', this).on('change', this.eventHandler.checkboxChange);
  this.$toggleIcon = (0, _ACore.$)('toggler-ico', this);
  this.on('click', this.eventHandler.click);
}
CheckTreeItem.tag = 'CheckTreeItem'.toLowerCase();
CheckTreeItem.render = function () {
  return (0, _ACore._)({
    tag: 'button',
    extendEvent: ['select', 'presstoggle'],
    "class": ['as-check-tree-item', 'absol-exp-node'],
    child: ['.absol-exp-node-level', 'toggler-ico', 'checkboxbutton', 'img.absol-exp-node-ext-icon', 'div.absol-exp-node-ext-icon', 'span.absol-exp-node-name', 'span.absol-exp-node-desc']
  });
};
CheckTreeItem.property = {};
CheckTreeItem.property.icon = _ExpTree.ExpNode.property.icon;
CheckTreeItem.property.text = _ExpTree.ExpNode.property.name;
CheckTreeItem.property.level = _ExpTree.ExpNode.property.level;
CheckTreeItem.property.desc = _ExpTree.ExpNode.property.desc;
CheckTreeItem.property.status = _ExpTree.ExpNode.property.status;
CheckTreeItem.property.data = {
  set: function set(itemData) {
    this._itemData = itemData;
    var text = (0, _SelectListItem.getTextOfListItem)(itemData);
    this.text = text;
    this.attr('title', itemData.value + '');
    var desc = (0, _SelectListItem.getDescriptionOfListItem)(itemData);
    this.desc = desc;
    if (itemData && itemData.icon) {
      this.icon = itemData.icon;
    } else {
      this.icon = null;
    }
    this.noSelect = itemData.noSelect;
  },
  get: function get() {
    return this._itemData;
  }
};
CheckTreeItem.property.selected = {
  set: function set(value) {
    this._selected = value;
    this.$checkbox.disabled = value === 'empty';
    if (value === 'all') {
      this.$checkbox.minus = false;
      this.$checkbox.checked = true;
    } else if (value === 'child') {
      this.$checkbox.checked = false;
      this.$checkbox.minus = true;
    } else if (value === 'empty') {
      this.$checkbox.minus = false;
      this.$checkbox.checked = false;
    } else {
      this.$checkbox.minus = false;
      this.$checkbox.checked = false;
    }
  },
  get: function get() {
    if (this.$checkbox.disabled) return 'empty';
    if (this.$checkbox.checked) return 'all';else if (this.$checkbox.minus) return 'child';
    return 'none';
  }
};
CheckTreeItem.property.noSelect = {
  set: function set(value) {
    if (value) {
      this.addClass('as-no-select');
    } else {
      this.removeClass('as-no-select');
    }
  },
  get: function get() {
    return this.hasClass('as-no-select');
  }
};
CheckTreeItem.eventHandler = {};
CheckTreeItem.eventHandler.checkboxChange = function (event) {
  this.emit('select', {
    type: 'select',
    target: this,
    originalEvent: event.originalEvent || event.originEvent || event
  });
};
CheckTreeItem.eventHandler.click = function (event) {
  var tBound;
  if (this.status === 'open' || this.status === 'close') {
    tBound = this.$toggleIcon.getBoundingClientRect();
    if (event.clientX <= tBound.right || this.noSelect) {
      this.emit('presstoggle', {
        type: 'presstoggle',
        target: this,
        originalEvent: event
      }, this);
    } else if (!(0, _EventEmitter.hitElement)(this.$checkbox, event) && !this.$checkbox.disabled) {
      this.$checkbox.checked = !this.$checkbox.checked;
      this.eventHandler.checkboxChange(event);
    }
  } else {
    if (!(0, _EventEmitter.hitElement)(this.$checkbox, event) && !this.noSelect && !this.$checkbox.disabled) {
      this.$checkbox.checked = !this.$checkbox.checked;
      this.eventHandler.checkboxChange(event);
    }
  }
};
_ACore["default"].install(CheckTreeItem);
var _default = CheckTreeItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.TreeLeafOnlyNodeHolder = TreeLeafOnlyNodeHolder;
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _CheckTreeBox = _interopRequireWildcard(__webpack_require__(93794));
var _CheckTreeItem = _interopRequireDefault(__webpack_require__(26638));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
var _utils = __webpack_require__(84512);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _Searcher = _interopRequireDefault(__webpack_require__(47106));
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 normalizeItem = function normalizeItem(item) {
  var nItem = Object.assign({}, item);
  if (!nItem.isLeaf && nItem.noSelect) {
    delete nItem.noSelect;
  }
  if (nItem.items && nItem.items.map) nItem.items = normalizeItems(nItem.items);
  return nItem;
};
var normalizeItems = function normalizeItems(items) {
  return items.map(function (it) {
    return normalizeItem(it);
  });
};
var verifyItems = function verifyItems(items) {
  var leafDict = {};
  var subTreeDict = {};
  var visit = function visit() {};
  items.forEach(visit);
};

/***
 * Only tree has leaf can be selected
 * @extends CheckTreeBox
 * @constructor
 */
function CheckTreeLeafOnlyBox() {
  _CheckTreeBox["default"].apply(this, arguments);
}
CheckTreeLeafOnlyBox.tag = 'CheckTreeLeafOnlyBox'.toLowerCase();
CheckTreeLeafOnlyBox.render = function () {
  var mobile = arguments[1] && arguments[1].forceMobile || _BrowserDetector["default"].isMobile;
  var footer = {
    "class": 'as-dropdown-box-footer',
    child: [{
      tag: 'checkbox',
      "class": 'as-select-list-box-check-all',
      props: {
        checked: false,
        text: _LanguageSystem["default"].getText('txt_check_all') || _LanguageSystem["default"].getText('txt_all') || 'Check All'
      }
    }, {
      "class": 'as-dropdown-box-footer-right',
      child: [{
        tag: 'a',
        "class": 'as-select-list-box-cancel-btn',
        attr: {
          "data-ml-key": 'txt_cancel'
        }
      }].concat(mobile ? [] : [{
        tag: 'a',
        "class": 'as-select-list-box-close-btn',
        attr: {
          "data-ml-key": 'txt_close'
        }
      }])
    }]
  };
  var content = {
    "class": ['as-check-tree-box-scroller', 'as-bscroller', 'as-select-list-box-scroller'],
    child: {
      "class": ['as-check-tree-box-content', 'as-select-list-box-content'],
      child: Array(this.prototype.preLoadN).fill('.as-select-list-box-page')
    }
  };
  if (mobile) {
    return (0, _ACore._)({
      props: {
        mobile: true
      },
      extendEvent: ['change', 'close', 'toggleitem', 'cancel'],
      "class": ['am-check-tree-box-modal', 'am-modal', 'am-dropdown-box-modal'],
      child: {
        "class": ['am-check-tree-box', 'am-dropdown-box', 'as-dropdown-box-common-style'],
        child: [{
          "class": 'am-dropdown-box-header',
          child: [{
            tag: _Searcher["default"].tag
          }, {
            tag: 'button',
            "class": 'am-dropdown-box-close-btn',
            child: 'span.mdi.mdi-close'
          }]
        }, content, footer]
      }
    });
  }
  return (0, _ACore._)({
    tag: 'follower',
    extendEvent: ['change', 'toggleitem', 'cancel', 'close'],
    "class": ['as-check-tree-leaf-only-box', 'as-check-tree-box', 'as-select-list-box', 'as-anchor-1'],
    child: [{
      "class": 'as-select-list-box-search-ctn',
      child: 'searchtextinput'
    }, content, footer],
    props: {
      anchor: [1, 6, 2, 5]
    }
  });
};
Object.assign(CheckTreeLeafOnlyBox.prototype, _CheckTreeBox["default"].prototype);
CheckTreeLeafOnlyBox.property = Object.assign({}, _CheckTreeBox["default"].property);
CheckTreeLeafOnlyBox.eventHandler = Object.assign({}, _CheckTreeBox["default"].eventHandler);
CheckTreeLeafOnlyBox.prototype._pool = [];
CheckTreeLeafOnlyBox.property.items = {
  get: _CheckTreeBox["default"].property.items.get,
  set: function set(items) {
    items = normalizeItems(items || []);
    verifyItems(items);
    _CheckTreeBox["default"].property.items.set.call(this, items);
  }
};
CheckTreeLeafOnlyBox.prototype._requestItem = function () {
  var res = this._pool.pop() || (0, _ACore._)({
    tag: _CheckTreeItem["default"].tag,
    "class": 'as-check-tree-leaf-only-item',
    props: {
      menuElt: this
    },
    on: {
      presstoggle: function presstoggle(event) {
        this.menuElt.eventHandler.toggleItem(this, event);
      },
      select: function select(event) {
        this.menuElt.eventHandler.selectItem(this, event);
      }
    }
  });
  res.menuElt = this;
  return res;
};
CheckTreeLeafOnlyBox.prototype.HolderClass = TreeLeafOnlyNodeHolder;
_ACore["default"].install(CheckTreeLeafOnlyBox);
var _default = CheckTreeLeafOnlyBox;
/***
 * @extends TreeRootHolder
 * @param {CheckTreeLeafOnlyBox} boxElt
 * @param items
 * @constructor
 */
exports["default"] = _default;
function TreeLeafOnlyRootHolder(boxElt, items) {
  _CheckTreeBox.TreeRootHolder.apply(this, arguments);
}
CheckTreeLeafOnlyBox.prototype.RootHolderClass = TreeLeafOnlyRootHolder;
_OOP["default"].mixClass(TreeLeafOnlyRootHolder, _CheckTreeBox.TreeRootHolder);

/***
 * @extends TreeNodeHolder
 * @constructor
 */
function TreeLeafOnlyNodeHolder() {
  _CheckTreeBox.TreeNodeHolder.apply(this, arguments);
  /***
   * @memberOf  TreeLeafOnlyNodeHolder#
   * @type {number}
   */
  this.leafCount = 0;
  if (this.item.isLeaf) {
    this.leafCount = 1;
  } else {
    this.leafCount = this.child.reduce(function (ac, c) {
      return ac + c.leafCount;
    }, 0);
  }
  if (this.child.length > 0) {
    this.item.noSelect = this.child.every(function (c) {
      return c.item.noSelect;
    }); //all child is noSelect=> noSelect
  }

  this.canSelect = this.canSelect && this.leafCount > 0;
  this.canSelectAll = this.canSelect && !this.item.noSelect && this.child.every(function (c) {
    return c.canSelectAll || c.leafCount === 0;
  });
  if (this.leafCount === 0) this.selected = 'empty';
}
_OOP["default"].mixClass(TreeLeafOnlyNodeHolder, _CheckTreeBox.TreeNodeHolder);
TreeLeafOnlyRootHolder.prototype.SubHolderClass = TreeLeafOnlyNodeHolder;
TreeLeafOnlyNodeHolder.prototype.setValues = function (values) {
  if (values[(0, _utils.keyStringOf)(this.item.value)]) {
    this.selectAll(true);
  } else {
    this.child.forEach(function (c) {
      return c.setValues(values);
    });
  }
  this.updateFromChild();
};
TreeLeafOnlyNodeHolder.prototype.getValues = function (ac) {
  ac = ac || [];
  if (this.selected === 'all' && this.item.isLeaf) {
    ac.push(this.item.value);
  } else {
    this.child.forEach(function (c) {
      return c.getValues(ac);
    });
  }
  return ac;
};
TreeLeafOnlyNodeHolder.prototype.getViewValues = function (ac) {
  ac = ac || [];
  if (this.selected === 'all') {
    ac.push(this.item.value);
  } else if (this.selected === 'child') {
    this.child.forEach(function (c) {
      return c.getViewValues(ac);
    });
  }
  return ac;
};

/***
 *
 * @param {boolean=} isDownUpdate
 */
TreeLeafOnlyNodeHolder.prototype.selectAll = function (isDownUpdate) {
  if (this.selected === 'empty') return;
  return _CheckTreeBox.TreeNodeHolder.prototype.selectAll.apply(this, arguments);
};
TreeLeafOnlyNodeHolder.prototype.unselectAll = function (isDownUpdate) {
  if (this.selected === 'empty') return;
  return _CheckTreeBox.TreeNodeHolder.prototype.unselectAll.apply(this, arguments);
};
TreeLeafOnlyNodeHolder.prototype.updateFromChild = function () {
  if (this.child.length === 0) return;
  var count = this.child.reduce(function (ac, cr) {
    ac[cr.selected]++;
    return ac;
  }, {
    all: 0,
    child: 0,
    none: 0,
    empty: 0
  });
  // if (this.boxElt.debug)
  // console.log( this.item, count.empty , count.all, this.child.length);//0, 9, 10

  if (count.empty === this.child.length) {
    this.selected = 'empty';
  } else if (count.empty + count.all === this.child.length) {
    this.selected = 'all';
  } else if (count.all + count.child > 0) {
    this.selected = 'child';
  } else if (this.selected !== "empty") {
    this.selected = 'none';
  }
  if (this.itemElt) {
    this.itemElt.selected = this.selected;
  }
};

/***/ }),

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

"use strict";


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.TreeLeafOnlyNodeHolder = TreeLeafOnlyNodeHolder;
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _OOP = _interopRequireWildcard(__webpack_require__(38608));
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
var _utils = __webpack_require__(84512);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _Searcher = _interopRequireDefault(__webpack_require__(47106));
var _CheckTreeBox = _interopRequireWildcard(__webpack_require__(93794));
var _CheckTreeItem = _interopRequireDefault(__webpack_require__(26638));
var _EventEmitter = __webpack_require__(46833);
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 normalizeItem = function normalizeItem(item) {
  var nItem = Object.assign({}, item);
  if (!nItem.isLeaf && nItem.noSelect) {
    delete nItem.noSelect;
  }
  if (nItem.items && nItem.items.map) nItem.items = normalizeItems(nItem.items);
  return nItem;
};
var normalizeItems = function normalizeItems(items) {
  return items.map(function (it) {
    return normalizeItem(it);
  });
};
var verifyItems = function verifyItems(items) {
  var leafDict = {};
  var subTreeDict = {};
  var visit = function visit() {};
  items.forEach(visit);
};

/**
 * @extends AElement
 * @constructor
 */
function CheckUnsafeTreeItem() {
  _CheckTreeItem["default"].apply(this, arguments);
  this.$actionCtn = (0, _ACore.$)('.as-check-unsafe-tree-item-action-ctn', this);
  this.$actionBtns = (0, _ACore.$$)('button', this.$actionCtn);
  this.$actionBtns[0].on('click', this.eventHandler.clickAction.bind(this, 'check_all'));
  this.$actionBtns[1].on('click', this.eventHandler.clickAction.bind(this, 'uncheck_all'));
}
CheckUnsafeTreeItem.tag = 'CheckUnsafeTreeItem'.toLowerCase();
CheckUnsafeTreeItem.render = function () {
  return (0, _ACore._)({
    tag: 'button',
    extendEvent: ['select', 'presstoggle'],
    "class": ['as-check-tree-item', 'as-check-unsafe-tree-item', 'absol-exp-node'],
    child: ['.absol-exp-node-level', 'toggler-ico', 'checkboxbutton', 'img.absol-exp-node-ext-icon', 'div.absol-exp-node-ext-icon', 'span.absol-exp-node-name', 'span.absol-exp-node-desc', {
      "class": 'as-check-unsafe-tree-item-action-ctn',
      child: [{
        tag: 'button',
        "class": 'as-transparent-button',
        child: 'span.mdi.mdi-check-all'
      }, {
        tag: 'button',
        "class": 'as-transparent-button',
        child: 'span.mdi.mdi-close'
      }]
    }]
  });
};
CheckUnsafeTreeItem.eventHandler = Object.assign({}, _CheckTreeItem["default"].eventHandler);
CheckUnsafeTreeItem.property = Object.assign({}, _CheckTreeItem["default"].property);
CheckUnsafeTreeItem.eventHandler.click = function (event) {
  var tBound;
  if (this.status === 'open' || this.status === 'close') {
    tBound = this.$toggleIcon.getBoundingClientRect();
    if ((0, _EventEmitter.hitElement)(this.$actionCtn, event)) {} else if (event.clientX <= tBound.right || this.noSelect) {
      this.emit('presstoggle', {
        type: 'presstoggle',
        target: this,
        originalEvent: event
      }, this);
    } else if (!(0, _EventEmitter.hitElement)(this.$checkbox, event) && !this.$checkbox.disabled) {
      this.$checkbox.checked = !this.$checkbox.checked;
      this.eventHandler.checkboxChange(event);
    }
  } else {
    if (!(0, _EventEmitter.hitElement)(this.$checkbox, event) && !this.noSelect && !this.$checkbox.disabled) {
      this.$checkbox.checked = !this.$checkbox.checked;
      this.eventHandler.checkboxChange(event);
    }
  }
};
CheckUnsafeTreeItem.eventHandler.clickAction = function (action, event) {
  console.log(action);
};

/***
 * Only tree has leaf can be selected
 * @extends CheckTreeBox
 * @constructor
 */
function CheckUnsafeTreeLeafOnlyBox() {
  _CheckTreeBox["default"].apply(this, arguments);
}
CheckUnsafeTreeLeafOnlyBox.tag = 'CheckUnsafeTreeLeafOnlyBox'.toLowerCase();
CheckUnsafeTreeLeafOnlyBox.render = function () {
  var mobile = arguments[1] && arguments[1].forceMobile || _BrowserDetector["default"].isMobile;
  var footer = {
    "class": 'as-dropdown-box-footer',
    child: [{
      tag: 'checkbox',
      "class": 'as-select-list-box-check-all',
      props: {
        checked: false,
        text: _LanguageSystem["default"].getText('txt_check_all') || _LanguageSystem["default"].getText('txt_all') || 'Check All'
      }
    }, {
      "class": 'as-dropdown-box-footer-right',
      child: [{
        tag: 'a',
        "class": 'as-select-list-box-cancel-btn',
        attr: {
          "data-ml-key": 'txt_cancel'
        }
      }].concat(mobile ? [] : [{
        tag: 'a',
        "class": 'as-select-list-box-close-btn',
        attr: {
          "data-ml-key": 'txt_close'
        }
      }])
    }]
  };
  var content = {
    "class": ['as-check-tree-box-scroller', 'as-bscroller', 'as-select-list-box-scroller'],
    child: {
      "class": ['as-check-tree-box-content', 'as-select-list-box-content'],
      child: Array(this.prototype.preLoadN).fill('.as-select-list-box-page')
    }
  };
  if (mobile) {
    return (0, _ACore._)({
      props: {
        mobile: true
      },
      extendEvent: ['change', 'close', 'toggleitem', 'cancel'],
      "class": ['am-check-tree-box-modal', 'am-modal', 'am-dropdown-box-modal'],
      child: {
        "class": ['am-check-tree-box', 'am-dropdown-box', 'as-dropdown-box-common-style'],
        child: [{
          "class": 'am-dropdown-box-header',
          child: [{
            tag: _Searcher["default"].tag
          }, {
            tag: 'button',
            "class": 'am-dropdown-box-close-btn',
            child: 'span.mdi.mdi-close'
          }]
        }, content, footer]
      }
    });
  }
  return (0, _ACore._)({
    tag: 'follower',
    extendEvent: ['change', 'toggleitem', 'cancel', 'close'],
    "class": ['as-check-tree-leaf-only-box', 'as-check-tree-box', 'as-select-list-box', 'as-anchor-1'],
    child: [{
      "class": 'as-select-list-box-search-ctn',
      child: 'searchtextinput'
    }, content, footer],
    props: {
      anchor: [1, 6, 2, 5]
    }
  });
};
Object.assign(CheckUnsafeTreeLeafOnlyBox.prototype, _CheckTreeBox["default"].prototype);
CheckUnsafeTreeLeafOnlyBox.property = Object.assign({}, _CheckTreeBox["default"].property);
CheckUnsafeTreeLeafOnlyBox.eventHandler = Object.assign({}, _CheckTreeBox["default"].eventHandler);
CheckUnsafeTreeLeafOnlyBox.prototype._pool = [];
CheckUnsafeTreeLeafOnlyBox.property.items = {
  get: _CheckTreeBox["default"].property.items.get,
  set: function set(items) {
    items = normalizeItems(items || []);
    verifyItems(items);
    _CheckTreeBox["default"].property.items.set.call(this, items);
  }
};
CheckUnsafeTreeLeafOnlyBox.prototype._requestItem = function () {
  var res = this._pool.pop() || (0, _ACore._)({
    tag: _CheckTreeItem["default"].tag,
    "class": 'as-check-tree-leaf-only-item',
    props: {
      menuElt: this
    },
    on: {
      presstoggle: function presstoggle(event) {
        this.menuElt.eventHandler.toggleItem(this, event);
      },
      select: function select(event) {
        this.menuElt.eventHandler.selectItem(this, event);
      }
    }
  });
  res.menuElt = this;
  return res;
};
CheckUnsafeTreeLeafOnlyBox.prototype.HolderClass = TreeLeafOnlyNodeHolder;
_ACore["default"].install(CheckUnsafeTreeLeafOnlyBox);
var _default = CheckUnsafeTreeLeafOnlyBox;
/**
 *
 * @constructor
 */
exports["default"] = _default;
function CSTBItemListController() {
  _CheckTreeBox.CTBItemListController.apply(this, arguments);
  console.log(this._requestItem);
}
(0, _OOP.mixClass)(CSTBItemListController, _CheckTreeBox.CTBItemListController);
CheckUnsafeTreeLeafOnlyBox.prototype.ListControllerClass = CSTBItemListController;
CSTBItemListController.prototype._pool = [];
CSTBItemListController.prototype._requestItem = function () {
  var res = this._pool.pop() || (0, _ACore._)({
    tag: CheckUnsafeTreeItem,
    // tag: CheckTreeItem,
    props: {
      menuElt: this
    },
    on: {
      presstoggle: function presstoggle(event) {
        this.menuElt.eventHandler.toggleItem(this, event);
      },
      select: function select(event) {
        this.menuElt.eventHandler.selectItem(this, event);
      }
    }
  });
  res.menuElt = this.elt;
  console.log(res);
  return res;
};

/***
 * @extends TreeRootHolder
 * @param {CheckUnsafeTreeLeafOnlyBox} boxElt
 * @param items
 * @constructor
 */
function TreeLeafOnlyRootHolder(boxElt, items) {
  _CheckTreeBox.TreeRootHolder.apply(this, arguments);
}
CheckUnsafeTreeLeafOnlyBox.prototype.RootHolderClass = TreeLeafOnlyRootHolder;
_OOP["default"].mixClass(TreeLeafOnlyRootHolder, _CheckTreeBox.TreeRootHolder);

/***
 * @extends TreeNodeHolder
 * @constructor
 */
function TreeLeafOnlyNodeHolder() {
  _CheckTreeBox.TreeNodeHolder.apply(this, arguments);
  /***
   * @memberOf  TreeLeafOnlyNodeHolder#
   * @type {number}
   */
  this.leafCount = 0;
  if (this.item.isLeaf) {
    this.leafCount = 1;
  } else {
    this.leafCount = this.child.reduce(function (ac, c) {
      return ac + c.leafCount;
    }, 0);
  }
  if (this.child.length > 0) {
    this.item.noSelect = this.child.every(function (c) {
      return c.item.noSelect;
    }); //all child is noSelect=> noSelect
  }

  this.canSelect = this.canSelect && this.leafCount > 0;
  this.canSelectAll = this.canSelect && !this.item.noSelect && this.child.every(function (c) {
    return c.canSelectAll || c.leafCount === 0;
  });
  if (this.leafCount === 0) this.selected = 'empty';
}
_OOP["default"].mixClass(TreeLeafOnlyNodeHolder, _CheckTreeBox.TreeNodeHolder);
TreeLeafOnlyRootHolder.prototype.SubHolderClass = TreeLeafOnlyNodeHolder;
TreeLeafOnlyNodeHolder.prototype.setValues = function (values) {
  if (values[(0, _utils.keyStringOf)(this.item.value)]) {
    this.selectAll(true);
  } else {
    this.child.forEach(function (c) {
      return c.setValues(values);
    });
  }
  this.updateFromChild();
};
TreeLeafOnlyNodeHolder.prototype.getValues = function (ac) {
  ac = ac || [];
  if (this.selected === 'all' && this.item.isLeaf) {
    ac.push(this.item.value);
  } else {
    this.child.forEach(function (c) {
      return c.getValues(ac);
    });
  }
  return ac;
};
TreeLeafOnlyNodeHolder.prototype.getViewValues = function (ac) {
  ac = ac || [];
  if (this.selected === 'all') {
    ac.push(this.item.value);
  } else if (this.selected === 'child') {
    this.child.forEach(function (c) {
      return c.getViewValues(ac);
    });
  }
  return ac;
};

/***
 *
 * @param {boolean=} isDownUpdate
 */
TreeLeafOnlyNodeHolder.prototype.selectAll = function (isDownUpdate) {
  if (this.selected === 'empty') return;
  return _CheckTreeBox.TreeNodeHolder.prototype.selectAll.apply(this, arguments);
};
TreeLeafOnlyNodeHolder.prototype.unselectAll = function (isDownUpdate) {
  if (this.selected === 'empty') return;
  return _CheckTreeBox.TreeNodeHolder.prototype.unselectAll.apply(this, arguments);
};
TreeLeafOnlyNodeHolder.prototype.updateFromChild = function () {
  if (this.child.length === 0) return;
  var count = this.child.reduce(function (ac, cr) {
    ac[cr.selected]++;
    return ac;
  }, {
    all: 0,
    child: 0,
    none: 0,
    empty: 0
  });
  // if (this.boxElt.debug)
  // console.log( this.item, count.empty , count.all, this.child.length);//0, 9, 10

  if (count.empty === this.child.length) {
    this.selected = 'empty';
  } else if (count.empty + count.all === this.child.length) {
    this.selected = 'all';
  } else if (count.all + count.child > 0) {
    this.selected = 'child';
  } else if (this.selected !== "empty") {
    this.selected = 'none';
  }
  if (this.itemElt) {
    this.itemElt.selected = this.selected;
  }
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(49409);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _CheckBoxInput = _interopRequireDefault(__webpack_require__(8398));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
_ACore["default"].install('checkboxbutton', _CheckBoxInput["default"]);
var _default = _CheckBoxInput["default"];
exports["default"] = _default;

/***/ }),

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

"use strict";


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;
__webpack_require__(9479);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var datetime = _interopRequireWildcard(__webpack_require__(58286));
var _EventEmitter = _interopRequireWildcard(__webpack_require__(46833));
var _Scroller = __webpack_require__(87780);
var _OOP = _interopRequireWildcard(__webpack_require__(38608));
var _utils = __webpack_require__(84512);
var _DelaySignal = _interopRequireDefault(__webpack_require__(81809));
var _Follower = _interopRequireDefault(__webpack_require__(48414));
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 _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var calendarLangMap = {
  'en': {
    monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
    shortMonthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    dayOfWeekNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
    shortDayOfWeekNames: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
    quarterNames: ['Q1', 'Q2', 'Q3', 'Q4']
  },
  'vi': {
    monthNames: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],
    shortMonthNames: ['Thg 1', 'Thg 2', 'Thg 3', 'Thg 4', 'Thg 5', 'Thg 6', 'Thg 7', 'Thg 8', 'Thg 9', 'Thg 10', 'Thg 11', 'Thg 12'],
    dayOfWeekNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],
    shortDayOfWeekNames: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
    quarterNames: ['Q1', 'Q2', 'Q3', 'Q4']
  }
};
var getCalendarSupportedLanguage = function getCalendarSupportedLanguage() {
  var res = null;
  if (window['LanguageModule']) res = window['LanguageModule'].defaultcode;
  if (!res) res = navigator.language || navigator.userLanguage;
  res = res || 'en';
  res = res.toLowerCase();
  if (res === 'vn') res = 'vi';
  if (!calendarLangMap[res]) res = 'en';
  return res;
};

/**
 * get multi language text
 * @param {string} key
 * @returns {*}
 */
var getCMLText = function getCMLText(key) {
  return calendarLangMap[getCalendarSupportedLanguage()][key];
};
var EV_CONTENT_CHANGE = 'ev_content_change';

/**
 * @extends AElement
 * @constructor
 */
function ChromeCalendar() {
  var _this = this;
  var thisCal = this;
  this.dayInWeekTexts = getCMLText('shortDayOfWeekNames');
  this._startDayOfWeek = (0, datetime.getDefaultFirstDayOfWeek)();
  this._level = "day";
  this.$years = $('.absol-chrome-calendar-years', this);
  this.$title = $('.absol-chrome-calendar-title', this);
  this.$titleTime = $('.title-time', this.$title);
  this.$instance = $('.absol-chrome-calendar-instance', this);
  this.$era = $('.absol-chrome-calendar-era', this);
  this.$month = $('.absol-chrome-calendar-month', this);
  this.$dayOfWeek = $('.absol-chrome-calendar-dayofweek', this);
  this._min = new Date(1890, 0, 1);
  this._max = new Date(2090, 0, 1);
  this._selectedDates = [datetime.beginOfDay(new Date())];
  this._viewDate = new Date();
  this.$prevBtn = $('.absol-chrome-calendar-header-buttons > button.prev-btn', this);
  this.$todayBtn = $('.absol-chrome-calendar-header-buttons > button.today-btn', this);
  this.$nextBtn = $('.absol-chrome-calendar-header-buttons > button.next-btn', this);

  /***
   *
   * @type {VScroller}
   */
  this.$yearScroller = $('vscroller.absol-chrome-calendar-years', this);
  this.$yearItems = [];
  $('.absol-chrome-calendar-year', this.$yearScroller, function (e) {
    thisCal.$yearItems.push(e);
  });
  this.$attachHook = _('attachhook').addTo(this);
  this.domSignal = new _DelaySignal["default"]().on(EV_CONTENT_CHANGE, function () {
    console.log(EV_CONTENT_CHANGE, _this.viewDate, _this.level);
    switch (_this.level) {
      case 'day':
      case 'week':
        _this.startViewer('month');
        _this.viewer.updateContent();
        break;
      case 'month':
      case 'quarter':
        _this.startViewer('year');
        _this.viewer.updateContent();
        break;
      case 'year':
        _this.startViewer('era');
        break;
      default:
        break;
    }
    _this.viewer.updateContent();
    _this.headerCtrl.updateTitle();
    _this.headerCtrl.updateButtons();
  });
  this.sync = new Promise(function (rs) {
    thisCal.$attachHook.on('attached', rs);
  });
  _OOP["default"].drillProperty(this, this, 'minLimitDate', 'min');
  _OOP["default"].drillProperty(this, this, 'minDateLimit', 'min');
  _OOP["default"].drillProperty(this, this, 'maxLimitDate', 'max');
  _OOP["default"].drillProperty(this, this, 'maxDateLimit', 'max');
  this.headerCtrl = new CCHeaderController(this);
  this.viewers = {
    month: new CCMonthViewer(this),
    year: new CCYearViewer(this),
    era: new CCEraViewer(this)
  };
  /**
   *
   * @type {CCViewerAbstract}
   */
  this.viewer = this.viewers['month'];
  this.viewer.start();

  /**
   * @type {number}
   * @name startDayOfWeek
   * @memberOf ChromeCalendar#
   */

  /**
   * @type {Date[]}
   * @name selectedDates
   * @memberOf ChromeCalendar#
   */

  /**
   * @type {'day'|'week'|'month'|'quarter'|'year'}
   * @name level
   * @memberOf ChromeCalendar#
   */

  /**
   * @type {Date}
   * @name viewDate
   * @memberOf ChromeCalendar#
   */
}

ChromeCalendar.tag = 'ChromeCalendar'.toLowerCase();
ChromeCalendar.render = function () {
  return _({
    "class": ['absol-chrome-calendar'],
    attr: {
      'data-level': 'day',
      tabindex: '1'
    },
    extendEvent: 'pick',
    child: [{
      "class": 'absol-chrome-calendar-header',
      child: [{
        "class": 'absol-chrome-calendar-title',
        child: [{
          tag: 'span',
          "class": 'title-time',
          child: {
            text: 'Septemper, 2019'
          }
        }]
      }, {
        "class": 'absol-chrome-calendar-header-buttons',
        child: [{
          tag: 'button',
          "class": 'prev-btn',
          child: 'span.mdi.mdi-menu-left',
          attr: {
            title: 'Previous Month'
          }
        }, {
          tag: 'button',
          "class": 'today-btn',
          child: 'span.mdi.mdi-circle-medium',
          attr: {
            title: 'Today'
          }
        }, {
          tag: 'button',
          "class": 'next-btn',
          child: 'span.mdi.mdi-menu-right',
          attr: {
            title: 'Next Month'
          }
        }]
      }]
    }, {
      "class": 'absol-chrome-calendar-instance',
      child: [{
        "class": 'absol-chrome-calendar-dayofweek',
        child: getCMLText('shortDayOfWeekNames').map(function (text) {
          return {
            child: {
              text: text
            }
          };
        })
      }, {
        "class": 'absol-chrome-calendar-month'
      }, {
        tag: 'vscroller',
        "class": 'absol-chrome-calendar-years'
      }, {
        "class": "absol-chrome-calendar-era"
      }]
    }]
  });
};

/**
 * @param {Date} date
 * @returns {Boolean}
 */
ChromeCalendar.prototype.isSelectedDate = function (date) {
  for (var i = 0; i < this._selectedDates.length; ++i) {
    if ((0, datetime.compareDate)(date, this._selectedDates[i]) === 0) return true;
  }
  return false;
};
ChromeCalendar.prototype.isSelectedWeek = function (date) {
  var _this2 = this;
  return this._selectedDates.some(function (it) {
    if (date.getFullYear() !== it.getFullYear()) return false;
    var weekIdx = (0, datetime.weekIndexOf)(date, false, _this2.startDayOfWeek);
    var itWeekIdx = (0, datetime.weekIndexOf)(it, false, _this2.startDayOfWeek);
    return weekIdx === itWeekIdx;
  });
};

/**
 * @param {Date} date
 * @returns {Boolean}
 */
ChromeCalendar.prototype.isSelectedMonth = function (date) {
  for (var i = 0; i < this._selectedDates.length; ++i) {
    if ((0, datetime.compareMonth)(date, this._selectedDates[i]) === 0) return true;
  }
  return false;
};

/**
 * @param {Date} date
 * @returns {Boolean}
 */
ChromeCalendar.prototype.isSelectedQuarter = function (date) {
  for (var i = 0; i < this._selectedDates.length; ++i) {
    if ((0, datetime.compareMonth)((0, datetime.beginOfQuarter)(date), (0, datetime.beginOfQuarter)(this._selectedDates[i])) === 0) return true;
  }
  return false;
};

/**
 * @param {Date} date
 * @returns {Boolean}
 */
ChromeCalendar.prototype.isSelectedYear = function (date) {
  for (var i = 0; i < this._selectedDates.length; ++i) {
    if (date.getFullYear() === this._selectedDates[i].getFullYear()) return true;
  }
  return false;
};
ChromeCalendar.prototype.dayCmpLimit = function (date) {
  if ((0, datetime.compareDate)(date, this._min) < 0) return -1;
  if ((0, datetime.compareDate)(date, this._max) > 0) return 1;
  return 0;
};
ChromeCalendar.prototype.monthCmpLimit = function (date) {
  var startOfMonth = (0, datetime.beginOfMonth)(date);
  var endOfMonth = (0, datetime.nextMonth)(date);
  var minMil = Math.max(startOfMonth.getTime(), this._min.getTime());
  var maxMil = Math.min(endOfMonth.getTime(), (0, datetime.nextDate)(this._max).getTime());
  if (minMil < maxMil) return 0;
  return this.dayCmpLimit(date);
};
ChromeCalendar.prototype.yearCmpLimit = function (date) {
  var startOfYear = (0, datetime.beginOfYear)(date);
  var endOfYear = new Date(date.getFullYear() + 1, 0, 1);
  var minMil = Math.max(startOfYear.getTime(), this._min.getTime());
  var maxMil = Math.min(endOfYear.getTime(), (0, datetime.nextDate)(this._max).getTime());
  if (minMil < maxMil) return 0;
  return this.dayCmpLimit(date);
};
ChromeCalendar.prototype.quarterCmpLimit = function (date) {
  var startOfQuarter = (0, datetime.beginOfQuarter)(date);
  var endOfQuarter = new Date(date.getFullYear(), date.getMonth() + 3, 1);
  var minMil = Math.max(startOfQuarter.getTime(), this._min.getTime());
  var maxMil = Math.min(endOfQuarter.getTime(), (0, datetime.nextDate)(this._max).getTime());
  if (minMil < maxMil) return 0;
  return this.dayCmpLimit(date);
};

/**
 *
 * @param {"month"|"year"|"era"} key
 */
ChromeCalendar.prototype.startViewer = function (key) {
  if (!this.viewers[key]) return;
  if (this.viewers[key] === this.viewer) {
    this.viewer.start();
    this.headerCtrl.updateTitle();
  } else {
    this.viewer.stop();
    this.viewer = this.viewers[key];
    this.viewer.start();
    this.headerCtrl.updateTitle();
  }
};
ChromeCalendar.property = {};
ChromeCalendar.property.selectedDates = {
  set: function set(value) {
    value = value || [];
    if (!(value instanceof Array)) value = [value];
    value = value.map(function (d) {
      return (0, datetime.implicitDate)(d);
    }).filter(function (d) {
      return !!d;
    });
    this._selectedDates = value;
    this._viewDate = this._selectedDates[0] || new Date();
    this.domSignal.emit(EV_CONTENT_CHANGE);
  },
  get: function get() {
    var _this3 = this;
    var level = this._level;
    var res = this._selectedDates.map(function (d) {
      var res = d;
      switch (level) {
        case 'day':
          res = (0, datetime.beginOfDay)(d);
          break;
        case 'week':
          res = (0, datetime.beginOfWeek)(d, _this3.startDayOfWeek);
          if (res.getFullYear() < d.getFullYear()) res = (0, datetime.beginOfYear)(d);
          break;
        case 'month':
          res = (0, datetime.beginOfMonth)(d);
          break;
        case 'quarter':
          res = (0, datetime.beginOfQuarter)(d);
          break;
        case 'year':
          res = (0, datetime.beginOfYear)(d);
          break;
      }
      return res;
    });
    res = res.reduce(function (ac, d) {
      var key = (0, _utils.keyStringOf)(d);
      if (ac.has[key]) return ac;
      ac.has[key] = d;
      ac.arr.push(d);
      return ac;
    }, {
      has: {},
      arr: []
    }).arr;
    res.sort(function (a, b) {
      return a.getTime() - b.getTime();
    });
    return res;
  }
};
ChromeCalendar.property.min = {
  set: function set(value) {
    if (!value) value = new Date(1890, 0, 1);
    if (typeof value == 'number') value = new Date(value);
    value = (0, datetime.beginOfDay)(value);
    value = new Date(Math.max(new Date(1890, 0, 1).getTime(), value.getTime()));
    this._min = value;
    this.domSignal.emit(EV_CONTENT_CHANGE);
  },
  get: function get() {
    return this._min;
  }
};

//include maxLimitDate
ChromeCalendar.property.max = {
  set: function set(value) {
    if (!value) value = new Date(2090, 0, 1);
    if (typeof value == 'number') value = new Date(value);
    if (value.getTime() > (0, datetime.beginOfDay)(value).getTime()) value = (0, datetime.nextDate)((0, datetime.beginOfDay)(value));
    value = new Date(Math.min(new Date(2090, 0, 1).getTime(), value.getTime()));
    this._max = value;
    this.domSignal.emit(EV_CONTENT_CHANGE);
  },
  get: function get() {
    return this._max;
  }
};
ChromeCalendar.property.multiSelect = {
  set: function set(value) {
    value = false;
    // throw new Error('Not support yet!')
    var lastValue = this.multiSelect;
    value = !!value;
    if (lastValue !== value) {
      if (value) {
        this.addClass('as-multi-select');
      } else {
        this.removeClass('as-multi-select');
      }
    }
    this.domSignal.emit(EV_CONTENT_CHANGE);
  },
  get: function get() {
    return this.hasClass('as-multi-select');
  }
};
ChromeCalendar.property.level = {
  set: function set(value) {
    value = (value || '') + '';
    value = value.toLowerCase();
    if (['day', 'week', 'quarter', 'month', 'year'].indexOf(value) < 0) value = 'day';
    if (this._level === value) return;
    this.attr('data-level', value);
    this._level = value;
    this.domSignal.emit(EV_CONTENT_CHANGE);
  },
  get: function get() {
    return this._level;
  }
};
ChromeCalendar.prototype.dayInWeekTexts = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
ChromeCalendar.property.startDayOfWeek = {
  set: function set(value) {
    value = Math.max(0, Math.min(Math.floor(value || 0), 6));
    if (this._startDayOfWeek !== value) {
      this._startDayOfWeek = value;
      Array.prototype.forEach.call(this.$dayOfWeek.childNodes, function (e, i) {
        e.firstChild.data = this.dayInWeekTexts[(i + value) % 7];
      }.bind(this));
    }
    this.viewers.month.updateContent();
  },
  get: function get() {
    return this._startDayOfWeek;
  }
};
ChromeCalendar.property.viewDate = {
  set: function set(date) {
    this._viewDate = date;
    this.domSignal.emit(EV_CONTENT_CHANGE);
  },
  get: function get() {
    return this._viewDate;
  }
};
_ACore["default"].install(ChromeCalendar);

/**
 *
 * @param {ChromeCalendar} elt
 * @constructor
 */
function CCViewerAbstract(elt) {
  this.elt = elt;
  this.$instance = elt.$instance;
  for (var key in this) {
    if (key.startsWith('ev_')) {
      this[key] = this[key].bind(this);
    }
  }
}
CCViewerAbstract.prototype.getTitle = function () {
  return '';
};
CCViewerAbstract.prototype.updateContent = function () {};
CCViewerAbstract.prototype.prev = function () {};
CCViewerAbstract.prototype.next = function () {};
CCViewerAbstract.prototype.canPrev = function () {};
CCViewerAbstract.prototype.canNext = function () {};
CCViewerAbstract.prototype.viewToday = function () {};
CCViewerAbstract.prototype.canViewToday = function () {};
CCViewerAbstract.prototype.start = function () {};
CCViewerAbstract.prototype.stop = function () {};
CCViewerAbstract.prototype.onSelectedDatesChange = function () {};

/**
 * @extends CCViewerAbstract
 * @param elt
 * @constructor
 */
function CCMonthViewer(elt) {
  CCViewerAbstract.call(this, elt);
  this.$month = elt.$month;
  this.$dayOfWeek = elt.$dayOfWeek;
  this.$instance = elt.$instance;
  this.$month.on('click', this.ev_click).on('mouseenter', this.ev_mouseEnter);
  // this.startingDate = null;

  this.animationSync = Promise.resolve();
  this.isListening = false;
  this.$hoverRow = null;
}
(0, _OOP.mixClass)(CCMonthViewer, CCViewerAbstract);
CCMonthViewer.prototype.updateContent = function () {
  var viewDate = (0, datetime.beginOfMonth)(this.elt._viewDate);
  var viewMonth = viewDate.getMonth();
  var viewYear = viewDate.getFullYear();
  var bg = (0, datetime.beginOfMonth)(viewDate);
  var startDayOfWeek = this.elt.startDayOfWeek;
  bg = (0, datetime.beginOfWeek)(bg, false, startDayOfWeek);
  var weekIdx;
  var shortDayOfWeekNames = getCMLText('shortDayOfWeekNames');
  Array.prototype.forEach.call(this.$dayOfWeek.childNodes, function (elt, i) {
    elt.firstChild.data = shortDayOfWeekNames[(i + startDayOfWeek) % 7];
  });
  var now = new Date();
  var rowElt, cellElt;
  while (this.$month.childNodes.length < 6) {
    rowElt = _({
      "class": 'absol-chrome-calendar-week-in-month',
      child: Array(7).fill('div')
    });
    this.$month.addChild(rowElt);
  }
  var i, j;
  var isSelectedRow;
  for (i = 0; i < 6; ++i) {
    rowElt = this.$month.childNodes[i];
    isSelectedRow = false;
    weekIdx = bg.getFullYear() < viewDate.getFullYear() ? 0 : (0, datetime.weekIndexOf)(bg, false, startDayOfWeek);
    rowElt.attr('data-week-idx-text', (0, _utils.zeroPadding)(weekIdx + 1, 2) + '');
    // if (this.elt.isSel)
    for (j = 0; j < rowElt.childNodes.length; ++j) {
      cellElt = rowElt.childNodes[j];
      cellElt.attr('data-date', bg.getDate());
      cellElt.attr('data-time', bg.getTime());
      if (bg.getFullYear() !== viewYear) {
        cellElt.addClass('as-not-in-year');
      } else {
        cellElt.removeClass('as-not-in-year');
      }
      if (bg.getMonth() === viewMonth) {
        cellElt.removeClass('absol-chrome-calendar-not-in-month');
      } else {
        cellElt.addClass('absol-chrome-calendar-not-in-month');
      }
      if (this.elt.level === 'day' && this.elt.isSelectedDate(bg)) {
        cellElt.addClass('absol-chrome-calendar-selected');
      } else if (this.elt.level === 'week' && this.elt.isSelectedWeek(bg)) {
        cellElt.addClass('absol-chrome-calendar-selected');
        if (!isSelectedRow && bg.getFullYear() === this.elt._viewDate.getFullYear()) {
          isSelectedRow = true;
        }
      } else {
        cellElt.removeClass('absol-chrome-calendar-selected');
      }
      if ((0, datetime.compareDate)(bg, now) === 0) {
        cellElt.addClass('absol-chrome-calendar-today');
      } else {
        cellElt.removeClass('absol-chrome-calendar-today');
      }
      if (this.elt.dayCmpLimit(bg) === 0) {
        cellElt.removeClass('as-disabled');
      } else {
        cellElt.addClass('as-disabled');
      }
      bg = (0, datetime.nextDate)(bg);
    }
    if (isSelectedRow) {
      rowElt.addClass('as-selected');
    } else {
      rowElt.removeClass('as-selected');
    }
  }
};
CCMonthViewer.prototype.animation = function (delta) {
  var _this4 = this;
  var oldViewDate = (0, datetime.beginOfMonth)(this.elt._viewDate);
  var newViewDate = delta < 0 ? (0, datetime.prevMonth)(oldViewDate) : (0, datetime.nextMonth)(oldViewDate);
  var startDayOfWeek = this.elt.startDayOfWeek;
  var oldBg = (0, datetime.beginOfWeek)(oldViewDate, false, startDayOfWeek);
  var newBg = (0, datetime.beginOfWeek)(newViewDate, false, startDayOfWeek);
  var curDate;
  var additionalRow = Math.round((0, datetime.compareDate)(oldBg, newBg) / 7);
  if (delta > 0) {
    additionalRow = -additionalRow;
  }
  var now = new Date();
  var aniMonth = _({
    "class": ['absol-chrome-calendar-month', 'as-animation']
  });
  if (delta < 0) {
    aniMonth.addStyle('top', -1.2 * (additionalRow - 1) + 'em');
  } else {
    aniMonth.addStyle('top', '1.2em');
  }
  var updateCellClassByViewDate = function updateCellClassByViewDate(viewDate) {
    curDate = delta < 0 ? newBg : oldBg;
    var isSelectedRow;
    for (i = 0; i < aniMonth.childNodes.length; ++i) {
      rowElt = aniMonth.childNodes[i];
      isSelectedRow = false;
      for (j = 0; j < rowElt.childNodes.length; ++j) {
        cellElt = rowElt.childNodes[j];
        if (curDate.getMonth() !== viewDate.getMonth()) {
          cellElt.addClass('absol-chrome-calendar-not-in-month');
        } else {
          cellElt.removeClass('absol-chrome-calendar-not-in-month');
        }
        if (!isSelectedRow && _this4.elt.level === 'week' && curDate.getFullYear() === viewDate.getFullYear() && _this4.elt.isSelectedWeek(curDate)) {
          isSelectedRow = true;
        }
        curDate = (0, datetime.nextDate)(curDate);
      }
      if (isSelectedRow) {
        rowElt.addClass('as-selected');
      } else {
        rowElt.removeClass('as-selected');
      }
    }
  };
  var rowElt, cellElt;
  var i, j;
  curDate = delta < 0 ? newBg : oldBg;
  var weekIdx;
  for (i = 0; i < 6 + additionalRow; ++i) {
    rowElt = _({
      "class": 'absol-chrome-calendar-week-in-month',
      child: Array(7).fill('div')
    });
    aniMonth.addChild(rowElt);
    for (j = 0; j < rowElt.childNodes.length; ++j) {
      cellElt = rowElt.childNodes[j];
      weekIdx = curDate.getFullYear() < newViewDate.getFullYear() ? 0 : (0, datetime.weekIndexOf)(curDate, false, startDayOfWeek);
      rowElt.attr('data-week-idx-text', (0, _utils.zeroPadding)(weekIdx + 1, 2) + '');
      cellElt.attr('data-date', curDate.getDate());
      cellElt.attr('data-time', curDate.getTime());
      if ((0, datetime.compareDate)(curDate, now) === 0) {
        cellElt.addClass('absol-chrome-calendar-today');
      }
      if (this.elt.level === 'day' && this.elt.isSelectedDate(curDate)) {
        cellElt.addClass('absol-chrome-calendar-selected');
      } else if (this.elt.level === 'week' && this.elt.isSelectedWeek(curDate)) {
        cellElt.addClass('absol-chrome-calendar-selected');
      }
      if (this.elt.dayCmpLimit(curDate) === 0) {
        cellElt.removeClass('as-disabled');
      } else {
        cellElt.addClass('as-disabled');
      }
      curDate = (0, datetime.nextDate)(curDate);
    }
  }
  updateCellClassByViewDate(oldViewDate);
  this.$instance.addChild(aniMonth);
  requestAnimationFrame(function () {
    if (delta < 0) {
      aniMonth.addStyle('top', '1.2em');
    } else {
      aniMonth.addStyle('top', -1.2 * (additionalRow - 1) + 'em');
    }
    updateCellClassByViewDate(newViewDate);
    setTimeout(function () {
      aniMonth.remove();
    }, 200);
  });
};
CCMonthViewer.prototype.canPrev = function () {
  return (0, datetime.compareMonth)(this.elt._viewDate, this.elt._min) > 0;
};
CCMonthViewer.prototype.canNext = function () {
  return (0, datetime.compareMonth)(this.elt._viewDate, this.elt._max) < 0;
};
CCMonthViewer.prototype.canViewToday = function () {
  var now = new Date();
  return (0, datetime.compareDate)(now, this.elt._min) >= 0 && (0, datetime.compareDate)(now, this.elt._max) <= 0;
};
CCMonthViewer.prototype.prev = function () {
  this.animation(-1);
  this.elt._viewDate = (0, datetime.prevMonth)(this.elt._viewDate);
  this.updateContent();
  this.elt.headerCtrl.updateTitle();
  this.elt.headerCtrl.updateButtons();
};
CCMonthViewer.prototype.next = function () {
  this.animation(1);
  this.elt._viewDate = (0, datetime.nextMonth)(this.elt._viewDate);
  this.updateContent();
  this.elt.headerCtrl.updateTitle();
  this.elt.headerCtrl.updateButtons();
};
CCMonthViewer.prototype.viewToday = function () {
  this.elt._viewDate = new Date();
  this.updateContent();
  this.elt.headerCtrl.updateTitle();
  this.elt.headerCtrl.updateButtons();
};
CCMonthViewer.prototype.start = function () {
  this.elt.attr('data-view', 'month');
  this.updateContent();
};
CCMonthViewer.prototype.stop = function () {};
CCMonthViewer.prototype.getTitle = function () {
  var viewDate = this.elt._viewDate;
  var res = '' + getCMLText('monthNames')[viewDate.getMonth()];
  res += ', ' + viewDate.getFullYear();
  return res;
};
CCMonthViewer.prototype.ev_click = function (event) {
  var dateBtn = event.target;
  var date;
  while (dateBtn && dateBtn !== this.$month) {
    if (dateBtn.attr && dateBtn.attr('data-time')) {
      date = new Date(parseInt(dateBtn.attr('data-time')));
      date = (0, datetime.beginOfDay)(date);
      this.elt._selectedDates = [date];
      this.onSelectedDatesChange();
      this.elt.emit('pick', {
        type: 'pick',
        value: date,
        isTrusted: event && event.isTrusted,
        originEvent: event,
        selectedDates: this.elt.selectedDates
      }, this.elt);
      if (dateBtn.hasClass('absol-chrome-calendar-not-in-month')) {
        if (parseInt(dateBtn.attr('data-date')) < 15) {
          this.next();
        } else {
          this.prev();
        }
      }
      break;
    }
    dateBtn = dateBtn.parentElement;
  }
};
CCMonthViewer.prototype.ev_mouseEnter = function (event) {
  if (this.isListening) return;
  if (this.elt.level !== 'week') return;
  this.isListening = true;
  if (this.$hoverRow) {
    this.$hoverRow.removeClass('as-hover-in-year').removeClass('as-hover-not-in-year');
    this.$hoverRow = null;
  }
  document.addEventListener('mousemove', this.ev_mouseMove);
};
CCMonthViewer.prototype.ev_mouseMove = function (event) {
  if (!(0, _EventEmitter.hitElement)(this.$month, event)) {
    this.isListening = false;
    document.removeEventListener('mousemove', this.ev_mouseMove);
  }
  var viewDate = this.elt._viewDate;
  var target = event.target;
  var date = null;
  var rowElt;
  if (target.attr) {
    if (target.attr('data-time')) {
      date = new Date(parseInt(target.attr('data-time')));
      date = (0, datetime.beginOfDay)(date);
      rowElt = target.parentElement;
    } else if (target.attr('data-week-idx-text')) {
      rowElt = target;
      date = new Date(parseInt(rowElt.childNodes[0].attr('data-time')));
      if (date.getFullYear() !== viewDate.getFullYear()) {
        date = new Date(viewDate.getFullYear(), 0, 1, 0, 0, 0);
      }
    }
  }
  if (this.$hoverRow && this.$hoverRow !== rowElt) {
    this.$hoverRow.removeClass('as-hover-in-year').removeClass('as-hover-not-in-year');
    this.$hoverRow = null;
  }
  if (!date) return;
  this.$hoverRow = rowElt;
  if (viewDate.getFullYear() !== date.getFullYear()) {
    rowElt.removeClass('as-hover-in-year').addClass('as-hover-not-in-year');
  } else {
    rowElt.removeClass('as-hover-not-in-year').addClass('as-hover-in-year');
  }
};
CCMonthViewer.prototype.onSelectedDatesChange = function () {
  var rowElt, cellElt;
  var i, j;
  var bg;
  var isSelectedRow;
  for (i = 0; i < this.$month.childNodes.length; ++i) {
    rowElt = this.$month.childNodes[i];
    isSelectedRow = false;
    for (j = 0; j < rowElt.childNodes.length; ++j) {
      cellElt = rowElt.childNodes[j];
      bg = new Date(parseInt(cellElt.attr('data-time')));
      if (this.elt.level === 'day' && this.elt.isSelectedDate(bg)) {
        cellElt.addClass('absol-chrome-calendar-selected');
      } else if (this.elt.level === 'week' && this.elt.isSelectedWeek(bg)) {
        cellElt.addClass('absol-chrome-calendar-selected');
        if (!isSelectedRow && bg.getFullYear() === this.elt._viewDate.getFullYear()) {
          isSelectedRow = true;
        }
      } else {
        cellElt.removeClass('absol-chrome-calendar-selected');
      }
    }
    if (isSelectedRow) {
      rowElt.addClass('as-selected');
    } else {
      rowElt.removeClass('as-selected');
    }
  }
};

/**
 * @extends CCViewerAbstract
 * @param {ChromeCalendar}elt
 * @constructor
 */
function CCYearViewer(elt) {
  CCViewerAbstract.call(this, elt);
  this.$years = elt.$years;
  this.$yearScroller = elt.$yearScroller;
  this.$lastOpenYearItem = null;
  this.mouseListening = false;
}
(0, _OOP.mixClass)(CCYearViewer, CCViewerAbstract);
CCYearViewer.prototype.start = function () {
  this.elt.attr('data-view', 'year');
  this.updateContent();
};
CCYearViewer.prototype.updateOpenYear = function () {
  if (this.$lastOpenYearItem) {
    this.$lastOpenYearItem.$months.updateActiveMonth();
  }
};
CCYearViewer.prototype.updateContent = function () {
  var _this5 = this;
  if (!this.$yearsContent) {
    this.$yearsContent = _({
      "class": 'absol-chrome-calendar-years-content',
      child: Array(200).fill(0).map(function (u, i) {
        return {
          "class": 'absol-chrome-calendar-year',
          attr: {
            'data-year': i + 1890
          },
          child: [{
            "class": 'absol-chrome-calendar-year-head',
            child: {
              text: i + 1890 + ''
            }
          }],
          props: {
            __year__: i + 1890
          },
          on: {
            click: function click() {
              _this5.viewYear(i + 1890);
              // thisCal.expandYear(this.__year__);
            },

            mouseenter: _this5.ev_mouseEnter
          }
        };
      })
    });
    this.$years.addChild(this.$yearsContent);
    this.$yearItems = Array.prototype.slice.call(this.$yearsContent.childNodes);
  }
  this.viewYear(this.elt._viewDate.getFullYear());
};
CCYearViewer.prototype.createMonths = function (year) {
  var _this6 = this;
  var now = new Date();
  var shortMonthNames = getCMLText('shortMonthNames');
  var res = _({
    "class": 'absol-chrome-calendar-year-months',
    child: Array(3).fill('').map(function (u, i) {
      return {
        "class": 'absol-chrome-calendar-year-row-months',
        child: Array(4).fill(0).map(function (v, j) {
          var date = new Date(year, i * 4 + j, 1, 0, 0, 0, 0);
          var quarter = Math.floor((i * 4 + j) / 3);
          return {
            "class": ['absol-chrome-calendar-year-month'].concat(year === now.getFullYear() && now.getMonth() === i * 4 + j ? ['absol-chrome-calendar-today'] : []).concat(_this6.elt.isSelectedMonth(date) ? ['absol-chrome-calendar-selected'] : []),
            attr: {
              'data-quarter': quarter + '',
              'data-date': date.getTime() + '',
              'data-month': i * 4 + j + ''
            },
            child: {
              text: shortMonthNames[i * 4 + j]
            },
            on: {
              click: function click() {}
            },
            props: {
              __date__: date,
              __quarter__: quarter
            }
          };
        })
      };
    }),
    on: {
      click: this.ev_clickMonth
    }
  });
  res.$monthList = (0, _ACore.$$)('.absol-chrome-calendar-year-month', res);
  res.updateActiveMonth = function () {
    res.$monthList.forEach(function (e) {
      now = new Date();
      if (datetime.compareMonth(e.__date__, now) === 0) {
        e.addClass('absol-chrome-calendar-today');
      } else {
        e.removeClass('absol-chrome-calendar-today');
      }
      if (_this6.elt.isSelectedMonth(e.__date__)) {
        e.addClass('absol-chrome-calendar-selected');
      } else {
        e.removeClass('absol-chrome-calendar-selected');
      }
      if (_this6.elt.isSelectedQuarter(e.__date__)) {
        e.addClass('as-quarter-selected');
      } else {
        e.removeClass('as-quarter-selected');
      }
      var beginOfMonth = datetime.beginOfMonth(e.__date__);
      var endOfMonth = datetime.prevDate(datetime.nextMonth(e.__date__));
      if (datetime.compareDate(_this6.elt._min, endOfMonth) > 0 || datetime.compareDate(beginOfMonth, _this6.elt._max) > 0) {
        e.addClass('absol-chrome-calendar-date-disabled');
      } else {
        e.removeClass('absol-chrome-calendar-date-disabled');
      }
    });
  };
  return res;
};
CCYearViewer.prototype.viewYear = function (year) {
  var viewDate = this.elt._viewDate;
  if (viewDate.getFullYear() !== year) {
    viewDate = new Date(year, 0, 1, 0, 0, 0, 0);
    this.elt._viewDate = viewDate;
  }

  //todo: update button, title
  var fontSize = this.elt.getFontSize() || 14;
  var lastItemElt = this.$lastOpenYearItem;
  var itemElt = this.$yearItems[year - 1890];
  var lastYear = 100000000;
  if (lastItemElt && lastItemElt.__year__ !== year) {
    lastYear = lastItemElt.__year__;
    lastItemElt.addClass('start-closing');
    setTimeout(function () {
      lastItemElt.removeClass('start-closing').addClass('closing');
    }, 0);
    setTimeout(function () {
      lastItemElt.removeClass('closing');
      lastItemElt.$months.remove();
      lastItemElt.$months = undefined;
    }, 100);
  }
  if (lastItemElt !== itemElt) {
    if (!itemElt.$months) {
      itemElt.$months = this.createMonths(year).addTo(itemElt);
      itemElt.addClass('start-opening');
      setTimeout(function () {
        itemElt.removeClass('start-opening').addClass('opening');
      }, 1);
      setTimeout(function () {
        itemElt.removeClass('opening');
      }, 100);
    }
  }
  var dy = itemElt.getBoundingClientRect().top - this.$yearScroller.getBoundingClientRect().top - fontSize * 0.45;
  if (itemElt.__year__ > lastYear) {
    dy -= 6 * fontSize + 1;
  }
  this.$yearScroller.scrollBy(dy, 100);
  this.$lastOpenYearItem = itemElt;
  itemElt.$months.updateActiveMonth();
  this.elt.headerCtrl.updateTitle();
  this.elt.headerCtrl.updateButtons();
};
CCYearViewer.prototype.stop = function () {};
CCYearViewer.prototype.canNext = function () {
  return this.elt._viewDate.getFullYear() < this.elt._max.getFullYear();
};
CCYearViewer.prototype.canPrev = function () {
  return this.elt._viewDate.getFullYear() > this.elt._min.getFullYear();
};
CCYearViewer.prototype.canViewToday = function () {
  var viewDate = new Date();
  var year = viewDate.getFullYear();
  return year >= this.elt._min.getFullYear() && year <= this.elt._max.getFullYear();
};
CCYearViewer.prototype.prev = function () {
  this.elt._viewDate = new Date(this.elt._viewDate.getFullYear() - 1, 0, 1);
  this.viewYear(this.elt._viewDate.getFullYear());
};
CCYearViewer.prototype.next = function () {
  this.elt._viewDate = new Date(this.elt._viewDate.getFullYear() + 1, 0, 1);
  this.viewYear(this.elt._viewDate.getFullYear());
};
CCYearViewer.prototype.viewToday = function () {
  this.elt._viewDate = new Date();
  this.viewYear(new Date().getFullYear());
};
CCYearViewer.prototype.getTitle = function () {
  var viewDate = this.elt._viewDate;
  return '' + viewDate.getFullYear();
};
CCYearViewer.prototype.onSelectedDatesChange = function () {
  console.log(this.elt.selectedDates);
};
CCYearViewer.prototype.ev_clickMonth = function (event) {
  var monthElt = event.target;
  var date;
  if (monthElt && monthElt.attr) date = monthElt.attr('data-date');
  if (!date) return;
  date = new Date(parseInt(date));
  var level = this.elt.level;
  switch (level) {
    case 'month':
    case 'quarter':
      this.elt._selectedDates = [date];
      this.updateOpenYear();
      this.elt.emit('pick', {
        type: 'pick',
        value: date,
        isTrusted: event && event.isTrusted,
        originEvent: event
      }, this.elt);
      break;
    case 'year':
      break;
    case 'day':
    case 'week':
      this.elt._viewDate = date;
      this.elt.startViewer('month');
      break;
  }
};
CCYearViewer.prototype.ev_mouseEnter = function (event) {
  if (this.mouseListening) return;
  this.mouseListening = true;
  document.addEventListener('mousemove', this.ev_mouseMove);
};
CCYearViewer.prototype.ev_mouseMove = function (event) {
  if (!(0, _EventEmitter.hitElement)(this.$yearsContent, event)) {
    this.mouseListening = false;
    document.removeEventListener('mousemove', this.ev_mouseMove);
    this.$yearsContent.attr('data-hover-quarter', undefined);
    return;
  }
  if (typeof event.target.__quarter__ === "number") {
    if (this.$yearsContent.attr('data-hover-quarter') !== event.target.__quarter__ + '') this.$yearsContent.attr('data-hover-quarter', event.target.__quarter__ + '');
  } else {
    this.$yearsContent.attr('data-hover-quarter', undefined);
  }
};
function CCEraViewer(elt) {
  CCViewerAbstract.call(this, elt);
  this.$era = elt.$era;
  this.$yearScroller = elt.$yearScroller;
  this.$instance = elt.$instance;
  this._lastStartDecade = -1;
  this._decadeScrollTimeout = -1;
  this.scrollIntoDecadeResolve = null;
  this.title = '1980-2089';
  this.$era.on('scroll', this.ev_scroll).on('click', this.ev_click);
}
(0, _OOP.mixClass)(CCEraViewer, CCViewerAbstract);
CCEraViewer.prototype.start = function () {
  this.elt.attr('data-view', 'era');
  this.updateContent();
  this.viewEra(false);
  this.updatePickedYear();
};
CCEraViewer.prototype.canNext = function () {
  var viewDate = this.elt._viewDate;
  var year = viewDate.getFullYear();
  var eraIdx = Math.floor(year / 10);
  var maxEraIdx = Math.floor(this.elt._max.getFullYear() / 10);
  return eraIdx < maxEraIdx;
};
CCEraViewer.prototype.canPrev = function () {
  var viewDate = this.elt._viewDate;
  var year = viewDate.getFullYear();
  var eraIdx = Math.floor(year / 10);
  var minEraIdx = Math.floor(this.elt._min.getFullYear() / 10);
  return eraIdx > minEraIdx;
};
CCEraViewer.prototype.canViewToday = function () {
  var viewDate = this.elt._viewDate;
  var year = viewDate.getFullYear();
  var eraIdx = Math.floor(year / 10);
  var minEraIdx = Math.floor(this.elt._min.getFullYear() / 10);
  var maxEraIdx = Math.floor(this.elt._max.getFullYear() / 10);
  return eraIdx >= minEraIdx && eraIdx <= maxEraIdx;
};
CCEraViewer.prototype.prev = function () {
  this.elt._viewDate = new Date(this.elt._viewDate.getFullYear() - 10, 0, 1);
  this.scrollIntoDecade(Math.floor(this.elt._viewDate.getFullYear() / 10) * 10, true);
};
CCEraViewer.prototype.next = function () {
  this.elt._viewDate = new Date(this.elt._viewDate.getFullYear() + 10, 0, 1);
  this.scrollIntoDecade(Math.floor(this.elt._viewDate.getFullYear() / 10) * 10, true);
};
CCEraViewer.prototype.viewToday = function () {
  this.elt._viewDate = new Date();
  this.scrollIntoDecade(Math.floor(this.elt._viewDate.getFullYear() / 10) * 10, true);
};
CCEraViewer.prototype.updateContent = function () {
  if (this.$era.childNodes.length === 0) {
    var now = new Date();
    var cYear = now.getFullYear();
    var rows = Array(50).fill(0).map(function (u, i) {
      return _({
        "class": 'absol-chrome-calendar-era-row',
        child: Array(4).fill(0).map(function (u1, j) {
          var classList = ['absol-chrome-calendar-era-year'];
          var year = 1890 + i * 4 + j;
          if (cYear === year) {
            classList.push('absol-chrome-calendar-today');
          }
          return {
            "class": classList,
            child: {
              text: year + ''
            },
            props: {
              __year__: year
            }
          };
        })
      });
    });
    this.$era.addChild(rows);
  }
  this.updateDisabledYearInEra();
};
CCEraViewer.prototype.viewEra = function (animation) {
  this.elt.removeClass('view-month').removeClass('view-year').addClass('view-era');
  this.scrollIntoDecade(Math.floor(this.elt._viewDate.getFullYear() / 10) * 10, animation);
};
CCEraViewer.prototype.getTitle = function () {
  return this.title;
};
CCEraViewer.prototype.updatePickedYear = function () {
  var _this7 = this;
  var yearElt;
  while (this.$lastPickYears && this.$lastPickYears.length > 0) {
    yearElt = this.$lastPickYears.pop();
    yearElt.removeClass('absol-chrome-calendar-selected');
  }
  this.$lastPickYears = this.elt._selectedDates.map(function (date) {
    var yearElt = _this7.yearInEra(date.getFullYear());
    yearElt.addClass('absol-chrome-calendar-selected');
    return yearElt;
  });
};
CCEraViewer.prototype.updateDisabledYearInEra = function () {
  var i, j;
  var rowElt, cellElt, date;
  for (i = 0; i < this.$era.childNodes.length; ++i) {
    rowElt = this.$era.childNodes[i];
    for (j = 0; j < rowElt.childNodes.length; ++j) {
      cellElt = rowElt.childNodes[j];
      date = new Date(cellElt.__year__, 0, 1);
      if (this.elt.yearCmpLimit(date) === 0) {
        cellElt.removeClass('absol-chrome-calendar-date-disabled');
      } else {
        cellElt.addClass('absol-chrome-calendar-date-disabled');
      }
    }
  }
};
CCEraViewer.prototype.scrollIntoDecade = function (startYear, animation) {
  var _this8 = this;
  if (!this.elt.isDescendantOf(document.body)) {
    return this;
  }
  return new Promise(function (resolve) {
    var eraBound = _this8.$era.getBoundingClientRect();
    var rowIdx = Math.floor((startYear - 1890) / 4);
    if (_this8._decadeScrollTimeout > 0) {
      clearTimeout(_this8._decadeScrollTimeout);
      _this8._decadeScrollTimeout = -1;
    }
    if (_this8.scrollIntoDecadeResolve) {
      _this8.scrollIntoDecadeResolve();
      _this8.scrollIntoDecadeResolve = null;
    }
    _this8.scrollIntoDecadeResolve = resolve;
    var t0 = new Date().getTime();
    var t1 = t0 + 250;
    var y0 = _this8.$era.scrollTop;
    var y1 = rowIdx * eraBound.height / 4;
    var _tick;
    if (animation) {
      _tick = function tick() {
        var tc = new Date().getTime();
        var yc = Math.min(1, Math.pow((tc - t0) / (t1 - t0), 2)) * (y1 - y0) + y0;
        _this8.$era.scrollTop = yc;
        if (tc < t1) {
          _this8._decadeScrollTimeout = setTimeout(_tick, 1000 / 30);
        } else {
          _this8._decadeScrollTimeout = -1;
          _this8.scrollIntoDecadeResolve = null;
          resolve();
        }
      };
      _this8._decadeScrollTimeout = setTimeout(_tick, 100);
    } else {
      _this8.$era.scrollTop = y1;
    }
  });
};
CCEraViewer.prototype.updateYearInEra = function () {
  var eraBound = this.$era.getBoundingClientRect();
  var startYear = 1890 + 4 * Math.ceil((this.$era.scrollTop - eraBound.height / 16) * 4 / eraBound.height);
  var startDecade = Math.floor(startYear / 10) * 10;
  if (startDecade + 10 - startYear < 8) startDecade += 10;
  if (this._lastStartDecade !== startDecade) {
    if (this._lastStartDecade > 0) {
      this.clearYearInEra(this._lastStartDecade);
    }
    this._lastStartDecade = startDecade;
    this.activeYearInEra(startDecade);
    this.title = startDecade + '-' + (startDecade + 10);
    if (this.elt._level === 'year') {
      //todo
      if (!this._decadeScrollTimeout || this._decadeScrollTimeout < 0) {
        if (this.elt.yearCmpLimit(new Date(startDecade, 0, 1)) === 0) this.elt._viewDate = new Date(startDecade, 0, 1);
      }
    }
    this.elt.headerCtrl.updateTitle();
    this.elt.headerCtrl.updateButtons();
  }
};
CCEraViewer.prototype.clearYearInEra = function (startYear) {
  var cellElt;
  for (var i = 0; i < 10; ++i) {
    cellElt = this.yearInEra(startYear + i);
    if (cellElt) cellElt.removeClass('absol-chrome-calendar-in-decade');
  }
};
CCEraViewer.prototype.yearInEra = function (year) {
  var d = year - 1890;
  var rowIdx = Math.floor(d / 4);
  var colIdx = d % 4;
  return this.$era.childNodes[rowIdx] && this.$era.childNodes[rowIdx].childNodes[colIdx];
};
CCEraViewer.prototype.activeYearInEra = function (startYear) {
  var cellElt;
  for (var i = 0; i < 10; ++i) {
    cellElt = this.yearInEra(startYear + i);
    if (cellElt) cellElt.addClass('absol-chrome-calendar-in-decade');
  }
};
CCEraViewer.prototype.ev_scroll = function (event) {
  this.updateYearInEra();
};
CCEraViewer.prototype.ev_click = function (event) {
  var yearElt = event.target;
  var year = yearElt.__year__;
  if (typeof year !== "number") return;
  var date = new Date(year, 0, 1, 0, 0, 0, 0);
  if (this.elt.level === 'year') {
    this.elt._selectedDates = [date];
    this.updatePickedYear();
    this.scrollIntoDecade(Math.floor(year / 10) * 10, true);
    this.elt.emit('pick', {
      type: 'pick',
      value: date,
      isTrusted: event && event.isTrusted,
      originEvent: event
    });
  } else {
    this.elt._viewDate = date;
    this.elt.startViewer('year');
  }
};

/**
 *
 * @param {ChromeCalendar} elt
 * @constructor
 */
function CCHeaderController(elt) {
  this.elt = elt;
  this.$prevBtn = elt.$prevBtn;
  this.$nextBtn = elt.$nextBtn;
  this.$todayBtn = elt.$todayBtn;
  this.$titleTime = elt.$titleTime;
  this.$title = elt.$title;
  for (var key in this) {
    if (key.startsWith('ev_')) {
      this[key] = this[key].bind(this);
    }
  }
  this.$prevBtn.on('click', this.ev_clickPrev);
  this.$nextBtn.on('click', this.ev_clickNext);
  this.$todayBtn.on('click', this.ev_clickToday);
  this.$title.on('click', this.ev_clickTitle);
}
CCHeaderController.prototype.updateTitle = function () {
  this.$titleTime.innerHTML = this.elt.viewer.getTitle();
};
CCHeaderController.prototype.updateButtons = function () {
  this.$prevBtn.disabled = !this.elt.viewer.canPrev();
  this.$nextBtn.disabled = !this.elt.viewer.canNext();
  this.$todayBtn.disabled = !this.elt.viewer.canViewToday();
};
CCHeaderController.prototype.ev_clickPrev = function () {
  this.elt.viewer.prev();
};
CCHeaderController.prototype.ev_clickNext = function () {
  this.elt.viewer.next();
};
CCHeaderController.prototype.ev_clickToday = function () {
  this.elt.viewer.viewToday();
};
CCHeaderController.prototype.ev_clickTitle = function () {
  var curViewer = this.elt.viewer;
  curViewer.stop();
  if (curViewer === this.elt.viewers.month) {
    this.elt.startViewer('year');
  } else if (curViewer === this.elt.viewers.year) {
    this.elt.startViewer('era');
  }
};

/**
 *
 * @param {AElement|HTMLElement} element
 * @param calendarProps
 * @param anchor
 * @param {function} calendarPickListener
 * @param {boolean=} darkTheme
 * @returns {CCShareDropDownInstance}
 */
ChromeCalendar.showWhenClick = function (element, calendarProps, anchor, calendarPickListener, darkTheme) {
  var opt = {
    props: calendarProps,
    anchor: anchor,
    onPick: calendarPickListener,
    darkTheme: darkTheme
  };
  return new CCShareDropDownInstance(element, opt);
};
ChromeCalendar.show = function (element, calendarProps, anchor, calendarPickListener, darkTheme) {
  var opt = {
    props: calendarProps,
    anchor: anchor,
    onPick: calendarPickListener,
    darkTheme: darkTheme
  };
  var instance = new CCShareDropDownInstance(element, opt);
  return instance.id;
};
ChromeCalendar.close = function (session) {
  var share = CCShareDropDownInstance.prototype.share;
  var instance = share.instances[session];
  if (instance) {
    instance.close();
    if (!instance.opt.triggerElt) instance.remove();
  }
};
var _default = ChromeCalendar;
/**
 *
 * @param {AElement} elt
 * @param {{props?:object, anchor?: number[], onPick?: function, darkTheme?: boolean, triggerElt?:AElement }} opt
 * @constructor
 */
exports["default"] = _default;
function CCShareDropDownInstance(elt, opt) {
  this.id = Math.random() * 10000000000 >> 0;
  this.elt = elt;
  this.opt = Object.assign({}, opt);
  this.ev_clickOut = this.ev_clickOut.bind(this);
  this.ev_click = this.ev_click.bind(this);
  if (this.opt.triggerElt) {
    this.opt.triggerElt.on('click', this.ev_click);
  }
  this.share.instances[this.id] = this;
}
CCShareDropDownInstance.prototype.share = {
  $follower: null,
  $picker: null,
  session: null,
  onPick: null,
  holder: null,
  instances: {}
};
CCShareDropDownInstance.prototype.prepare = function () {
  var _this9 = this;
  var share = this.share;
  if (share.$follower) return;
  /**
   *
   * @type {Follower|AElement}
   */
  share.$follower = _({
    tag: _Follower["default"]
  });
  share.$follower.cancelWaiting();
  share.$picker = _({
    tag: ChromeCalendar,
    on: {
      pick: function pick(event) {
        if (typeof share.onPick === "function") share.onPick(event.value, event, _this9);
      }
    }
  }).addTo(share.$follower);
  share.session = Math.random() * 10000000000 >> 0;
  share.onPick = null;
};

/**
 *

 */
CCShareDropDownInstance.prototype.show = function () {
  var _this10 = this;
  this.prepare();
  var share = this.share;
  if (share.holder) share.holder.close();
  share.holder = this;
  var props = this.opt.props;
  if (props instanceof Date) props = {
    selectedDates: [props]
  };
  if (props instanceof Array) props = {
    selectedDates: props
  };
  props.maxDateLimit = props.maxDateLimit || null;
  props.minDateLimit = props.minDateLimit || null;
  share.$follower.addTo(document.body);
  Object.assign(share.$picker, props);
  share.$follower.addStyle('visibility', 'hidden');
  if (this.opt.darkTheme) {
    share.$picker.addClass('dark');
  } else {
    share.$picker.removeClass('dark');
  }
  if (this.opt.triggerElt) {
    setTimeout(function () {
      document.addEventListener('click', _this10.ev_clickOut, false);
    }, 30);
  }
  share.$follower.sponsorElement = this.opt.triggerElt || this.elt;
  share.$follower.anchor = this.opt.anchor;
  share.$follower.followTarget = this.elt;
  share.$follower.updatePosition();
  setTimeout(function () {
    if (share.holder === _this10) {
      share.$follower.removeStyle('visibility', 'hidden');
    }
  }, 10);
};
CCShareDropDownInstance.prototype.close = function (session) {
  var share = this.share;
  if (!share.$follower) return;
  if (share.holder !== this) return;
  share.holder = null;
  if (this.opt.triggerElt) {
    document.removeEventListener('click', this.ev_clickOut, false);
  }
  share.onPick = null;
};

/**
 *
 * @param {Date} value
 */
CCShareDropDownInstance.prototype.setDateValue = function (value) {
  var share = this.share;
  if (share.holder === this) {
    share.$picker.selectedDates = [value];
  }
};
CCShareDropDownInstance.prototype.cancel = function () {
  this.close();
};
CCShareDropDownInstance.prototype.remove = function () {
  this.close();
  if (this.opt.triggerElt) {
    this.opt.triggerElt.removeEventListener('click', this.ev_click);
  }
  delete this.share.instances[this.id];
};
CCShareDropDownInstance.prototype.ev_clickOut = function (event) {
  if (!(0, _EventEmitter.hitElement)(this.elt, event)) this.close();
};
CCShareDropDownInstance.prototype.ev_click = function (event) {
  this.show();
};

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(27442);
__webpack_require__(33573);
var _datetime = __webpack_require__(58286);
var _utils = __webpack_require__(84512);
var _int = __webpack_require__(65909);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _EventEmitter = __webpack_require__(46833);
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
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; }
/**
 *
 * @param {number} leftOffset
 */
function calcMinHMTime(leftOffset) {
  var h = Math.floor(leftOffset / _datetime.MILLIS_PER_HOUR);
  var m = Math.floor(leftOffset / _datetime.MILLIS_PER_MINUTE) % 60;
  if (leftOffset % _datetime.MILLIS_PER_MINUTE > 0) {
    if (m === 59) {
      h++;
      m = 0;
    } else {
      m++;
    }
  }
  var offset = h * _datetime.MILLIS_PER_HOUR + m * _datetime.MILLIS_PER_MINUTE;
  return {
    m: m,
    h: h,
    offset: offset
  };
}

/***
 * @extends AElement
 * @constructor
 */
function ChromeTime24Picker() {
  var tText = "24 ".concat(_LanguageSystem["default"].getText('txt_next_day') || 'Next day', ")");
  this.addStyle('--next-day-h24-width', Math.ceil((0, _utils.measureText)(tText, '16px arial').width + 15) + 'px');
  this.$lists = (0, _ACore.$$)('.as-chrome-time-picker-list', this);
  this.$scrollers = (0, _ACore.$$)('.as-chrome-time-picker-scroller', this);
  this.minuteController = new CTPMinuteListController(this);
  this.hourController = new CTPHourListController(this);
  this._dayOffset = 0;
  this._value = 0;

  /**
   * @name dayOffset
   * @type {number}
   * @memberOf ChromeTime24Picker#
   */

  /**
   * @name value
   * @type {number | null}
   * @memberOf ChromeTime24Picker#
   */
}

ChromeTime24Picker.tag = 'ChromeTime24Picker'.toLowerCase();
ChromeTime24Picker.render = function () {
  return (0, _ACore._)({
    extendEvent: 'change',
    "class": ['as-chrome-time-24-picker', 'as-chrome-time-picker'],
    child: [{
      "class": ['as-chrome-time-picker-scroller', 'as-chrome-time-24-picker-hour'],
      child: [{
        tag: 'button',
        "class": 'as-chrome-time-picker-scroller-up',
        child: 'span.mdi.mdi-chevron-up'
      }, {
        tag: 'button',
        "class": 'as-chrome-time-picker-scroller-down',
        child: 'span.mdi.mdi-chevron-down'
      }, {
        "class": ['as-chrome-time-picker-viewport', 'as-chrome-time-picker-h24'],
        child: {
          "class": 'as-chrome-time-picker-list',
          child: Array(25).fill(0).map(function (u, i) {
            return {
              tag: 'button',
              "class": 'as-chrome-time-picker-btn',
              child: [{
                tag: 'span',
                child: {
                  text: i + ''
                }
              }, {
                tag: 'span',
                "class": 'as-chrome-time-24-picker-tomorrow-text',
                child: {
                  text: " (".concat(_LanguageSystem["default"].getText('txt_next_day') || 'Next day', ")")
                }
              }],
              props: {
                __hour__: i
              }
            };
          })
        }
      }]
    }, {
      "class": ['as-chrome-time-picker-scroller', 'as-chrome-time-picker-infinity-scroller'],
      child: [{
        tag: 'button',
        "class": 'as-chrome-time-picker-scroller-up',
        child: 'span.mdi.mdi-chevron-up'
      }, {
        tag: 'button',
        "class": 'as-chrome-time-picker-scroller-down',
        child: 'span.mdi.mdi-chevron-down'
      }, {
        "class": ['as-chrome-time-picker-infinity-viewport', 'as-chrome-time-picker-m60', 'as-chrome-time-picker-list'],
        child: Array(60).fill(0).map(function (u, i) {
          return {
            tag: 'button',
            "class": 'as-chrome-time-picker-btn',
            child: {
              tag: 'span',
              child: {
                text: i + ''
              }
            },
            props: {
              __min__: i
            }
          };
        })
      }]
    }]
  });
};
ChromeTime24Picker.prototype.updateViewByValue = function () {
  var offset = this.dayOffset;
  var offsetMH = calcMinHMTime(offset);
  var value = this.value;
  this.hourController.hourOffset = offsetMH.h;
  var valueMH;
  if ((0, _utils.isRealNumber)(value)) {
    valueMH = calcMinHMTime(offset + value);
    this.hourController.hour = valueMH.h;
    if (valueMH.h === offsetMH.h) {
      this.minuteController.activeItem(offsetMH.m, Infinity);
    } else if (valueMH.h === offsetMH.h + 24) {
      this.minuteController.activeItem(Infinity, offsetMH.m + 1);
    }
    this.minuteController.minute = valueMH.m;
  } else {
    this.hourController.hour = null;
    this.minuteController.minute = null;
  }
};
ChromeTime24Picker.prototype.scrollIntoSelected = function () {
  this.hourController.scrollIntoSelected(true);
  this.minuteController.scrollIntoSelected(true);
};
ChromeTime24Picker.prototype.flushViewToValue = function () {
  var hour = this.hourController.hour;
  var minute = this.minuteController.minute;
  var endMil, newValue;
  if ((0, _utils.isRealNumber)(hour) && (0, _utils.isRealNumber)(minute)) {
    endMil = hour * _datetime.MILLIS_PER_HOUR + minute * _datetime.MILLIS_PER_MINUTE;
    newValue = endMil - this.dayOffset;
    if (newValue !== this._value) {
      this._value = newValue;
      this.notifyChange();
    }
  }
};
ChromeTime24Picker.prototype.notifyChange = function () {
  this.emit('change', {
    type: 'change'
  }, this);
};
ChromeTime24Picker.property = {};
ChromeTime24Picker.property.dayOffset = {
  /***
   * @this ChromeTime24Picker
   * @param {number|Date} value
   */
  set: function set(value) {
    if (value instanceof Date) {
      value = value.getTime() - (0, _datetime.beginOfDay)(value).getTime();
    }
    if ((0, _utils.isRealNumber)(value)) {
      value = Math.round(value);
      value = value % _datetime.MILLIS_PER_DAY;
      if (value < 0) value += _datetime.MILLIS_PER_DAY;
    } else {
      value = 0;
    }
    this._dayOffset = calcMinHMTime(value).offset; //round to minute
    this.updateViewByValue();
  },
  /**
   * @this ChromeTime24Picker
   * @returns {number|*}
   */
  get: function get() {
    return this._dayOffset;
  }
};
ChromeTime24Picker.property.value = {
  /***
   * @this ChromeTime24Picker
   * @param value
   */
  set: function set(value) {
    if ((0, _utils.isRealNumber)(value)) {
      value = Math.min(_datetime.MILLIS_PER_DAY, Math.max(0, Math.round(value)));
      value = calcMinHMTime(value).offset;
    } else {
      value = null;
    }
    this._value = value;
    this.updateViewByValue();
  },
  /**
   * @this ChromeTime24Picker
   * @returns {number|*}
   */
  get: function get() {
    return this._value;
  }
};
ChromeTime24Picker.property.hour = {
  get: function get() {
    return Math.floor((this.dayOffset + this.value) / _datetime.MILLIS_PER_HOUR);
  }
};
ChromeTime24Picker.property.minute = {
  get: function get() {
    return Math.floor((this.dayOffset + this.value) / _datetime.MILLIS_PER_MINUTE) % 60;
  }
};
_ACore["default"].install(ChromeTime24Picker);
var _default = ChromeTime24Picker;
exports["default"] = _default;
function CTPHourListController(elt) {
  for (var key in this) {
    if (key.startsWith('ev_')) {
      this[key] = this[key].bind(this);
    }
  }
  this.elt = elt;
  this.$list = (0, _ACore.$)('.as-chrome-time-picker-h24 >.as-chrome-time-picker-list', elt);
  this.$items = Array.prototype.slice.call(this.$list.childNodes);
  this.$list.on('click', this.ev_clickList);
  this._offset = 0;
  this.selectedValue = null;
  this.$selectedItem = null;
  /**
   * @type {number}
   * @name hour - from 0 to 23, 24... is next day
   * @memberOf CTPHourListController
   */
}

Object.defineProperty(CTPHourListController.prototype, 'hourOffset', {
  set: function set(value) {
    if (!(0, _utils.isRealNumber)(value)) value = 0;
    value = Math.round(value);
    value = value % 24;
    if (value < 0) value += 24;
    this._offset = value;
    for (var i = 0; i < this.$items.length; ++i) {
      this.$items[i].firstChild.firstChild.data = (i + value) % 24;
      this.$items[i].__hour__ = i + value;
      if (value + i >= 24) {
        this.$items[i].addClass('as-in-tomorrow');
      } else {
        this.$items[i].removeClass('as-in-tomorrow');
      }
    }
    this.updateSelected();
  },
  get: function get() {
    return this._offset;
  }
});
CTPHourListController.prototype.updateSelected = function () {
  if (this.$selectedItem) {
    this.$selectedItem.removeClass('as-selected');
  }
  if ((0, _utils.isRealNumber)(this.selectedValue)) {
    this.$selectedItem = this.$items[this.selectedValue - this._offset];
  } else {
    this.$selectedItem = null;
  }
  if (this.$selectedItem) {
    this.$selectedItem.addClass('as-selected');
  }
};
CTPHourListController.prototype.ev_clickList = function (event) {
  this.hour = this.itemValueOf(event.target);
  this.scrollIntoSelected(false);
  var offsetMH = calcMinHMTime(this.elt.dayOffset);
  if (this.hour === offsetMH.h) {
    this.elt.minuteController.activeItem(offsetMH.m, Infinity);
    if (!(0, _utils.isRealNumber)(this.elt.minuteController.minute) || this.elt.minuteController.minute < offsetMH.m) {
      this.elt.minuteController.minute = offsetMH.m;
      this.elt.minuteController.scrollIntoSelected(true);
    }
  } else if (this.hour === offsetMH.h + 24) {
    this.elt.minuteController.activeItem(Infinity, offsetMH.m + 1);
    if (!(0, _utils.isRealNumber)(this.elt.minuteController.minute) || this.elt.minuteController.minute > offsetMH.m) {
      this.elt.minuteController.minute = offsetMH.m;
      this.elt.minuteController.scrollIntoSelected(true);
    }
  } else {
    if (!(0, _utils.isRealNumber)(this.elt.minuteController.minute)) {
      this.elt.minuteController.minute = 0;
      this.elt.minuteController.scrollIntoSelected(true);
    }
    this.elt.minuteController.activeItem(Infinity, Infinity);
  }
  this.elt.flushViewToValue();
};
CTPHourListController.prototype.scrollIntoSelected = function (onTop) {
  if (this.$selectedItem) (0, _utils.vScrollIntoView)(this.$selectedItem);
};
CTPHourListController.prototype.itemValueOf = function (itemElt) {
  while (itemElt) {
    if (itemElt.hasClass && itemElt.hasClass('as-chrome-time-picker-btn')) break;
    itemElt = itemElt.parentElement;
  }
  if (!itemElt) return undefined;
  return itemElt.__hour__;
};
Object.defineProperty(CTPHourListController.prototype, 'hour', {
  set: function set(value) {
    if ((0, _utils.isRealNumber)(value)) {
      value = Math.round(value);
    } else {
      value = null;
    }
    this.selectedValue = value;
    this.updateSelected();
  },
  get: function get() {
    return this.selectedValue;
  }
});
function CTPInfinityVerticalScroller(elt) {
  this.elt = elt;
  for (var key in this) {
    if (key.startsWith('ev_')) {
      this[key] = this[key].bind(this);
    }
  }
  this.$upBtn = (0, _ACore.$)('.as-chrome-time-picker-scroller-up', this.elt).on('pointerdown', this.ev_pressUpBtn);
  this.$downBtn = (0, _ACore.$)('.as-chrome-time-picker-scroller-down', this.elt).on('pointerdown', this.ev_pressDownBtn);
  this.$upBtn.addEventListener('contextmenu', function (event) {
    event.preventDefault();
  }, _BrowserDetector["default"].supportPassiveEvent ? {
    passive: false
  } : true);
  this.$downBtn.addEventListener('contextmenu', function (event) {
    event.preventDefault();
  }, _BrowserDetector["default"].supportPassiveEvent ? {
    passive: false
  } : true);
  this.$viewport = (0, _ACore.$)('.as-chrome-time-picker-infinity-viewport', this.elt);
  this.offset = 0;
  this.buttonHeight = 28; //2em
  this.elt.addEventListener('wheel', this.ev_wheel);
  this.$items = (0, _ACore.$$)('.as-chrome-time-picker-btn', this.$viewport);
  this.updateItemPosition();
  this.$viewport.addEventListener('touchstart', this.ev_touchStart, _BrowserDetector["default"].supportPassiveEvent ? {
    passive: false
  } : true);

  /**
   *
   * @type {null|{startTime: number, endTime: number, startValue: number, endValue: number, type: string}}
   */
  this.animation = null;
  this.touchInfo = {};
}
CTPInfinityVerticalScroller.prototype.ev_touchStart = function (event) {
  var evFlag = _BrowserDetector["default"].supportPassiveEvent ? {
    passive: false
  } : true;
  document.addEventListener('touchmove', this.ev_touchMove, evFlag);
  document.addEventListener('touchend', this.ev_touchEnd, evFlag);
  var touch = event.changedTouches[0];
  var now = Date.now();
  this.touchInfo.prevY = touch.clientY;
  this.touchInfo.prevTime = now;
  this.touchInfo.target = touch.target;
  this.touchInfo.identifier = touch.identifier;
  this.touchInfo.state = 0; //init
  this.touchInfo.checkPoints = [{
    time: now,
    y: touch.clientY
  }];
  event.preventDefault();
};
CTPInfinityVerticalScroller.prototype.ev_touchMove = function (event) {
  var touch = (0, _EventEmitter.findChangedTouchByIdent)(event, this.touchInfo.identifier);
  if (!touch) return;
  var dy = touch.clientY - this.touchInfo.prevY;
  var now = Date.now();
  if (this.touchInfo.state === 0) {
    if (Math.abs(dy) > 2) {
      this.touchInfo.state = 1;
    }
  }
  if (this.touchInfo.state === 1) {
    this.makeAnimation(this.offset - dy / this.buttonHeight, 0);
    this.touchInfo.prevY = touch.clientY;
    this.touchInfo.prevTime = now;
    this.touchInfo.checkPoints.push({
      time: now,
      y: touch.clientY
    });
  }
  event.preventDefault();
};

/**
 *
 * @returns {number} - offset/s
 */
CTPInfinityVerticalScroller.prototype.getTouchSped = function () {
  var checkPoints = this.touchInfo.checkPoints;
  if (checkPoints.length < 2) return 0;
  var minTime = 100;
  var lastTime = checkPoints[checkPoints.length - 1].time;
  var dy;
  var dt;
  for (var i = checkPoints.length - 2; i >= 0; --i) {
    dy = checkPoints[i].y - checkPoints[checkPoints.length - 1].y;
    dt = checkPoints[i].time - checkPoints[checkPoints.length - 1].time;
    if (lastTime - checkPoints[i].time > minTime) break;
  }
  if (dy === 0) return 0;
  return dy / this.buttonHeight / (dt / 1000);
};
CTPInfinityVerticalScroller.prototype.ev_touchEnd = function (event) {
  var touch = (0, _EventEmitter.findChangedTouchByIdent)(event, this.touchInfo.identifier);
  if (!touch) return;
  var evFlag = _BrowserDetector["default"].supportPassiveEvent ? {
    passive: false
  } : true;
  document.removeEventListener('touchmove', this.ev_touchMove, evFlag);
  document.removeEventListener('touchend', this.ev_touchEnd, evFlag);
  var speed = 0,
    acc = 10;
  var target;
  if (this.touchInfo.state === 1) {
    speed = this.getTouchSped();
    this.makeAnimation(this.offset - speed * Math.abs(speed) / acc / 2, Math.abs(speed) / acc * 1000, 'pow2');
  } else {
    target = this.touchInfo.target;
    var now = Date.now();
    while (target && target !== this.elt) {
      if (target.isSupportedEvent && target.isSupportedEvent('press')) {
        if (!target.lastPressTime || now - target.lastPressTime > 300) {
          target.emit('press', {
            target: this.touchInfo.target
          });
          target.lastPressTime = now;
        }
      }
      target = target.parentElement;
    }
  }
};
CTPInfinityVerticalScroller.prototype.ev_pressUpBtn = function (event) {
  this.makeAnimation(this.offset - 250, 25e3, 'linear');
  document.addEventListener('pointerup', this.ev_ReleaseUpDownBtn);
  event.preventDefault();
};
CTPInfinityVerticalScroller.prototype.ev_pressDownBtn = function (event) {
  this.makeAnimation(this.offset + 250, 25 * 1000, 'linear');
  document.addEventListener('pointerup', this.ev_ReleaseUpDownBtn);
  event.preventDefault();
};
CTPInfinityVerticalScroller.prototype.ev_ReleaseUpDownBtn = function (event) {
  this.makeAnimation(this.offset, 0);
  event.preventDefault();
};
CTPInfinityVerticalScroller.prototype.updateItemPosition = function () {
  var _this = this;
  while (this.offset < 0) {
    this.offset += this.$items.length;
  }
  while (this.offset >= this.$items.length) {
    this.offset -= this.$items.length;
  }
  var offset = this.offset;
  this.$items.forEach(function (itemElt, i) {
    var k = i - offset;
    if (k < -_this.$items.length / 2) k += _this.$items.length;
    itemElt.addStyle('top', k * 2 + 'em');
  });
};
CTPInfinityVerticalScroller.prototype.ev_wheel = function (event) {
  event.preventDefault();
  var delta = event.deltaY;
  this.makeAnimation(this.offset + delta / this.buttonHeight, 200);
};
CTPInfinityVerticalScroller.prototype.makeAnimation = function (value, inTime, type) {
  if (inTime <= 0) {
    this.offset = value;
    this.updateItemPosition();
    this.animation = null;
    return;
  }
  var isNewAnimation = !this.animation;
  this.animation = {
    startTime: Date.now(),
    endTime: Date.now() + inTime,
    startValue: this.offset,
    endValue: value,
    type: type || 'linear'
  };
  if (isNewAnimation) {
    requestAnimationFrame(this.ev_animationFrame);
  }
};
CTPInfinityVerticalScroller.prototype.ev_animationFrame = function () {
  if (!this.animation) return;
  function easeInOutCubic(t) {
    return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;
  }
  var now = Date.now();
  var t = (0, _int.map)(Math.min(this.animation.endTime, now), this.animation.startTime, this.animation.endTime, 0, 1);
  if (this.animation.type === 'easeIn') {
    t = easeInOutCubic(t / 2);
  } else if (this.animation.type === 'easeOut') {
    t = easeInOutCubic(0.5 + t / 2);
  } else if (this.animation.type === 'pow2') {
    t = Math.sqrt(t);
  }
  this.offset = (0, _int.map)(t, 0, 1, this.animation.startValue, this.animation.endValue);
  this.updateItemPosition();
  if (now >= this.animation.endTime) {
    this.animation = null;
  } else {
    requestAnimationFrame(this.ev_animationFrame);
  }
};

/**
 * @param {ChromeTime24Picker} elt
 * @param elt
 * @constructor
 */
function CTPMinuteListController(elt) {
  for (var key in this) {
    if (key.startsWith('ev_')) {
      this[key] = this[key].bind(this);
    }
  }
  this.elt = elt;
  this.minuteScroller = new CTPInfinityVerticalScroller(this.elt.$scrollers[1]);
  this.$list = (0, _ACore.$)('.as-chrome-time-picker-m60', this.elt);
  this.$list.defineEvent('press');
  this.$list.addEventListener('click', function (event) {
    var now = Date.now();
    if (!this.lastPressTime || now - this.lastPressTime > 50) {
      this.emit('press', {
        target: event.target
      });
      this.lastPressTime = now;
    }
  }, true);
  this.$list.on('press', this.ev_clickList);
  this.$items = Array.prototype.slice.call(this.$list.childNodes);
  this.selectedValue = null;
  this.itemLength = this.$items.length;
}

/**
 *
 * @param start
 * @param end - end not include
 */
CTPMinuteListController.prototype.activeItem = function (start, end) {
  if (!(0, _utils.isNaturalNumber)(start)) start = 0;
  if (!(0, _utils.isNaturalNumber)(end)) end = this.$list.children.length;
  for (var i = 0; i < this.$list.children.length; ++i) {
    this.$list.children[i].disabled = i < start || i >= end;
  }
};
CTPMinuteListController.prototype.ev_clickList = function (event) {
  var value = this.itemValueOf(event.target);
  if ((0, _utils.isNaturalNumber)(value)) {
    this.minute = value;
    this.scrollIntoSelected(false);
    this.elt.flushViewToValue();
  }
};
CTPMinuteListController.prototype.itemValueOf = function (itemElt) {
  while (itemElt) {
    if (itemElt.hasClass && itemElt.hasClass('as-chrome-time-picker-btn')) break;
    itemElt = itemElt.parentElement;
  }
  if (!itemElt) return undefined;
  return itemElt.__min__;
};
CTPMinuteListController.prototype.scrollIntoSelected = function (onTop) {
  if (this.selectedValue == null) return;
  var curOffset = this.minuteScroller.offset;
  var targetOffset = this.selectedValue;
  var k,
    minCost = Infinity;
  var cost;
  var t;
  for (k = -2; k <= 2; ++k) {
    t = this.selectedValue + k * this.itemLength;
    if (t >= curOffset && t <= curOffset + 3 && !onTop) {
      minCost = 0;
      targetOffset = curOffset;
    } else {
      cost = Math.abs(t - curOffset);
      if (cost < minCost) {
        minCost = cost;
        targetOffset = t;
      }
      cost = Math.abs(t - curOffset - 3);
      if (cost < minCost && !onTop) {
        minCost = cost;
        targetOffset = t - 3;
      }
    }
  }
  this.minuteScroller.makeAnimation(targetOffset, 200);
};
Object.defineProperty(CTPMinuteListController.prototype, 'minute', {
  set: function set(value) {
    if ((0, _utils.isRealNumber)(value)) {
      value = Math.max(0, Math.min(59, Math.round(value)));
    } else {
      value = null;
    }
    if (value !== this.selectedValue) {
      if (this.$items[this.selectedValue]) {
        this.$items[this.selectedValue].removeClass('as-selected');
      }
    }
    this.selectedValue = value;
    if (this.$items[value]) {
      this.$items[value].addClass('as-selected');
    }
  },
  get: function get() {
    return this.selectedValue;
  }
});

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(27442);
var _DomSignal = _interopRequireDefault(__webpack_require__(47341));
var _datetime = __webpack_require__(58286);
var _utils = __webpack_require__(84512);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
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; }
/***
 * @extends AElement
 * @constructor
 */
function ChromeTimePicker() {
  this._hour = null;
  this._minute = null;
  _OOP["default"].drillProperty(this, this, 'dayOffset', 'value');
  this.$lists = (0, _ACore.$$)('.as-chrome-time-picker-list', this);
  this.$hourList = this.$lists[0];
  this.$hourList.on('scroll', this.eventHandler.hourScroll).on('click', this.eventHandler.clickHourList);
  this.$hour24List = this.$lists[1];
  this.$hour24List.on('scroll', this.eventHandler.hour24Scroll).on('click', this.eventHandler.clickHour24List);
  this.$minList = this.$lists[2];
  this.$minList.on('scroll', this.eventHandler.minScroll).on('click', this.eventHandler.clickMinList);
  this.$attachhook = (0, _ACore._)('attachhook').addTo(this);
  this.domSignal = new _DomSignal["default"](this.$attachhook).on('request_scroll_into_selected', this._scrollIntoSelected.bind(this));
  this.$amBtn = (0, _ACore.$)('.as-chrome-time-picker-btn[data-value="AM"]', this).on('click', this.eventHandler.clickAM);
  this.$pmBtn = (0, _ACore.$)('.as-chrome-time-picker-btn[data-value="PM"]', this).on('click', this.eventHandler.clickPM);
  this.scrollIntoSelected();
  this.hour = null;
  this.minute = null;
  this.s24 = false;
  (0, _ACore.$$)('.as-chrome-time-picker-scroller', this).forEach(this._makeScroller.bind(this));

  /***
   * @memberOf ChromeTimePicker#
   * @type {number}
   * @name min
   */
}

ChromeTimePicker.tag = 'ChromeTimePicker'.toLowerCase();
ChromeTimePicker.render = function () {
  return (0, _ACore._)({
    "class": 'as-chrome-time-picker',
    extendEvent: ['change'],
    child: [{
      "class": ['as-chrome-time-picker-scroller', 'as-chrome-time-picker-scroller-h12'],
      child: [{
        tag: 'button',
        "class": 'as-chrome-time-picker-scroller-up',
        child: 'span.mdi.mdi-chevron-up'
      }, {
        tag: 'button',
        "class": 'as-chrome-time-picker-scroller-down',
        child: 'span.mdi.mdi-chevron-down'
      }, {
        "class": ['as-chrome-time-picker-viewport', 'as-chrome-time-picker-h12'],
        child: {
          "class": 'as-chrome-time-picker-list',
          child: Array(36).fill(0).map(function (u, i) {
            return {
              tag: 'button',
              "class": 'as-chrome-time-picker-btn',
              child: {
                tag: 'span',
                child: {
                  text: i % 12 + 1 + ''
                }
              },
              props: {
                __hour__: i % 12 + 1
              }
            };
          })
        }
      }]
    }, {
      "class": ['as-chrome-time-picker-scroller', 'as-chrome-time-picker-scroller-h24'],
      child: [{
        tag: 'button',
        "class": 'as-chrome-time-picker-scroller-up',
        child: 'span.mdi.mdi-chevron-up'
      }, {
        tag: 'button',
        "class": 'as-chrome-time-picker-scroller-down',
        child: 'span.mdi.mdi-chevron-down'
      }, {
        "class": ['as-chrome-time-picker-viewport', 'as-chrome-time-picker-h24'],
        child: {
          "class": 'as-chrome-time-picker-list',
          child: Array(24 * 3).fill(0).map(function (u, i) {
            return {
              tag: 'button',
              "class": 'as-chrome-time-picker-btn',
              child: {
                tag: 'span',
                child: {
                  text: i % 24 + ''
                }
              },
              props: {
                __hour__: i % 24
              }
            };
          })
        }
      }]
    }, {
      "class": 'as-chrome-time-picker-scroller',
      child: [{
        tag: 'button',
        "class": 'as-chrome-time-picker-scroller-up',
        child: 'span.mdi.mdi-chevron-up'
      }, {
        tag: 'button',
        "class": 'as-chrome-time-picker-scroller-down',
        child: 'span.mdi.mdi-chevron-down'
      }, {
        "class": 'as-chrome-time-picker-viewport',
        child: {
          "class": 'as-chrome-time-picker-list',
          child: Array(180).fill(0).map(function (u, i) {
            return {
              tag: 'button',
              "class": 'as-chrome-time-picker-btn',
              child: {
                tag: 'span',
                child: {
                  text: i % 60 + ''
                }
              },
              props: {
                __min__: i % 60
              }
            };
          })
        }
      }]
    }, {
      "class": ['as-chrome-time-picker-viewport', 'as-chrome-time-picker-period'],
      child: ['AM', 'PM'].map(function (u) {
        return {
          tag: 'button',
          "class": 'as-chrome-time-picker-btn',
          attr: {
            'data-value': u
          },
          child: {
            tag: 'span',
            child: {
              text: u
            }
          },
          props: {
            __APM__: u
          }
        };
      })
    }]
  });
};
ChromeTimePicker.prototype._makeScroller = function (rootElt) {
  var upBtn = (0, _ACore.$)('.as-chrome-time-picker-scroller-up', rootElt);
  var downBtn = (0, _ACore.$)('.as-chrome-time-picker-scroller-down', rootElt);
  var listElt = (0, _ACore.$)('.as-chrome-time-picker-list', rootElt);
  var delta = 0;
  function tick() {
    if (delta === 0) return;
    listElt.scrollTop -= delta;
    requestAnimationFrame(tick);
  }
  function cancel() {
    delta = 0;
    document.body.removeEventListener('mouseup', cancel);
    document.body.removeEventListener('mouseleave', cancel);
  }
  upBtn.on('mousedown', function () {
    delta = 5;
    document.body.addEventListener('mouseup', cancel);
    document.body.addEventListener('mouseleave', cancel);
    tick();
  });
  downBtn.on('mousedown', function () {
    delta = -5;
    document.body.addEventListener('mouseup', cancel);
    document.body.addEventListener('mouseleave', cancel);
    tick();
  });
};
ChromeTimePicker.prototype.scrollIntoSelected = function () {
  this.domSignal.emit('request_scroll_into_selected');
};
ChromeTimePicker.prototype._scrollIntoSelected = function () {
  var hour = this._hour;
  this.$hour24List.scrollTop = (hour + 24) * 28;
  hour = this._hour % 12;
  if (hour === 0) hour = 12;
  this.$hourList.scrollTop = (hour + 11) * 28;
  this.$minList.scrollTop = (this._minute + 60) * 28;
};
ChromeTimePicker.prototype.notifyChange = function (event) {
  this.emit('change', {
    type: 'change',
    originEvent: event,
    dayOffset: this.dayOffset,
    hour: this.hour,
    minute: this.minute,
    target: this
  }, this);
};
ChromeTimePicker.property = {};
ChromeTimePicker.property.hour = {
  set: function set(value) {
    if ((0, _utils.isRealNumber)(value)) {
      value = Math.min(23, Math.max(0, Math.floor(value) % 24));
    } else {
      value = null;
    }
    var prevVal = this._hour;
    if (prevVal !== null) {
      this.$hour24List.childNodes[prevVal].removeClass('as-selected');
      this.$hour24List.childNodes[prevVal + 24].removeClass('as-selected');
      this.$hour24List.childNodes[prevVal + 48].removeClass('as-selected');
      prevVal = this._hour % 12;
      if (prevVal === 0) prevVal = 12;
      this.$hourList.childNodes[prevVal - 1].removeClass('as-selected');
      this.$hourList.childNodes[prevVal - 1 + 12].removeClass('as-selected');
      this.$hourList.childNodes[prevVal - 1 + 24].removeClass('as-selected');
    }
    this._hour = value;
    prevVal = this._hour;
    if (prevVal !== null) {
      this.$hour24List.childNodes[prevVal].addClass('as-selected');
      this.$hour24List.childNodes[prevVal + 24].addClass('as-selected');
      this.$hour24List.childNodes[prevVal + 48].addClass('as-selected');
      prevVal = this._hour % 12;
      if (prevVal === 0) prevVal = 12;
      this.$hourList.childNodes[prevVal - 1].addClass('as-selected');
      this.$hourList.childNodes[prevVal - 1 + 12].addClass('as-selected');
      this.$hourList.childNodes[prevVal - 1 + 24].addClass('as-selected');
      if (this._hour >= 12) {
        this.$pmBtn.addClass('as-selected');
        this.$amBtn.removeClass('as-selected');
      } else {
        this.$amBtn.addClass('as-selected');
        this.$pmBtn.removeClass('as-selected');
      }
    } else {
      this.$pmBtn.removeClass('as-selected');
      this.$amBtn.removeClass('as-selected');
    }
  },
  get: function get() {
    return this._hour;
  }
};
ChromeTimePicker.property.minute = {
  set: function set(value) {
    if ((0, _utils.isRealNumber)(value)) {
      value = Math.min(59, Math.max(0, Math.floor(value) % 60));
    } else {
      value = null;
    }
    var prevVal = this._minute;
    if (prevVal !== null) {
      this.$minList.childNodes[prevVal].removeClass('as-selected');
      this.$minList.childNodes[prevVal + 60].removeClass('as-selected');
      this.$minList.childNodes[prevVal + 120].removeClass('as-selected');
    }
    this._minute = value;
    prevVal = this._minute;
    if (prevVal !== null) {
      this.$minList.childNodes[prevVal].addClass('as-selected');
      this.$minList.childNodes[prevVal + 60].addClass('as-selected');
      this.$minList.childNodes[prevVal + 120].addClass('as-selected');
    }
  },
  get: function get() {
    return this._minute;
  }
};
ChromeTimePicker.property.value = {
  set: function set(value) {
    if (!(0, _utils.isRealNumber)(value) && !(value instanceof Date)) {
      value = null;
    }
    if (value && value.getTime) {
      value = value.getTime() - (0, _datetime.beginOfDay)(value).getTime();
      if (!(0, _utils.isRealNumber)(value)) value = null;
    } else if ((0, _utils.isRealNumber)(value)) {
      value = Math.min(_datetime.MILLIS_PER_DAY - 1, Math.max(0, value % _datetime.MILLIS_PER_DAY));
    }
    if ((0, _utils.isRealNumber)(value)) {
      this.hour = Math.floor(value / _datetime.MILLIS_PER_HOUR);
      this.minute = Math.floor(value % _datetime.MILLIS_PER_HOUR / _datetime.MILLIS_PER_MINUTE);
    } else {
      this.hour = null;
      this.minute = null;
    }
    this.domSignal.emit('request_scroll_into_selected');
  },
  get: function get() {
    var res = this._hour * _datetime.MILLIS_PER_HOUR + this._minute * _datetime.MILLIS_PER_MINUTE;
    return (0, _utils.isRealNumber)(res) ? res : null;
  }
};
ChromeTimePicker.property.min = {
  set: function set(value) {},
  get: function get() {}
};
ChromeTimePicker.property.s24 = {
  set: function set(value) {
    if (value) {
      this.addClass('as-24h-clock');
    } else {
      this.removeClass('as-24h-clock');
    }
  },
  get: function get() {
    return this.hasClass('as-24h-clock');
  }
};
ChromeTimePicker.eventHandler = {};
ChromeTimePicker.eventHandler.hourScroll = function () {
  var y = this.$hourList.scrollTop;
  var dy = 0;
  if (y < 28 * 12) dy = 28 * 12;else if (y > 28 * 24) {
    dy = -28 * 12;
  }
  if (dy !== 0) {
    this.$hourList.scrollTop += dy;
  }
};
ChromeTimePicker.eventHandler.hour24Scroll = function () {
  var y = this.$hour24List.scrollTop;
  var dy = 0;
  if (y < 28 * 24) dy = 28 * 24;else if (y > 28 * 48) {
    dy = -28 * 24;
  }
  if (dy !== 0) {
    this.$hour24List.scrollTop += dy;
  }
};
ChromeTimePicker.eventHandler.minScroll = function () {
  var y = this.$minList.scrollTop;
  var dy = 0;
  if (y < 28 * 60) dy = 28 * 60;else if (y > 28 * 120) {
    dy = -28 * 60;
  }
  if (dy !== 0) {
    this.$minList.scrollTop += dy;
  }
};
ChromeTimePicker.eventHandler.clickHourList = function (event) {
  var hour;
  if ('__hour__' in event.target) hour = event.target.__hour__;
  if ('__hour__' in event.target.parentElement) hour = event.target.parentElement.__hour__;
  if (hour !== undefined) {
    if (this.hour >= 12) {
      this.hour = hour === 12 ? hour : hour + 12;
    } else {
      this.hour = hour === 12 ? 0 : hour;
    }
    if ((hour - 1 + 12) * 28 < this.$hourList.scrollTop) {
      this.$hourList.scrollTop = (hour - 1 + 12) * 28;
    } else if ((hour - 1 + 13) * 28 > this.$hourList.scrollTop + this.$hourList.clientHeight) {
      this.$hourList.scrollTop = (hour - 1 + 13) * 28 - this.$hourList.clientHeight;
    }
    this.notifyChange(event);
  }
};
ChromeTimePicker.eventHandler.clickHour24List = function (event) {
  var hour;
  if ('__hour__' in event.target) hour = event.target.__hour__;
  if ('__hour__' in event.target.parentElement) hour = event.target.parentElement.__hour__;
  if (hour !== undefined) {
    this.hour = hour;
    if ((hour + 24) * 28 < this.$hourList.scrollTop) {
      this.$hourList.scrollTop = (hour + 24) * 28;
    } else if ((hour + 24) * 28 > this.$hourList.scrollTop + this.$hourList.clientHeight) {
      this.$hourList.scrollTop = (hour + 24) * 28 - this.$hourList.clientHeight;
    }
    this.notifyChange(event);
  }
};
ChromeTimePicker.eventHandler.clickMinList = function (event) {
  var min;
  if ('__min__' in event.target) min = event.target.__min__;
  if ('__min__' in event.target.parentElement) min = event.target.parentElement.__min__;
  if (min !== undefined) {
    this.minute = min;
    if ((min + 60) * 28 < this.$minList.scrollTop) {
      this.$minList.scrollTop = (min + 60) * 28;
    } else if ((min + 61) * 28 > this.$minList.scrollTop + this.$minList.clientHeight) {
      this.$minList.scrollTop = (min + 61) * 28 - this.$minList.clientHeight;
    }
    this.notifyChange(event);
  }
};
ChromeTimePicker.eventHandler.clickPM = function (event) {
  if ((0, _utils.isRealNumber)(this.hour)) {
    if (this.hour < 12) this.hour += 12;
  } else {
    this.hour = 12;
  }
  this.notifyChange(event);
};
ChromeTimePicker.eventHandler.clickAM = function (event) {
  if ((0, _utils.isRealNumber)(this.hour)) {
    if (this.hour >= 12) this.hour -= 12;
  } else {
    this.hour = 0;
  }
  this.notifyChange(event);
};
_ACore["default"].install(ChromeTimePicker);
var _default = ChromeTimePicker;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(86995);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Svg = _interopRequireDefault(__webpack_require__(98315));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var _g = _Svg["default"].ShareInstance._;
var $g = _Svg["default"].ShareInstance.$;
var Design = {
  circleHeight: 218 - 36,
  borderWidth: 36,
  textBoxHeight: 146,
  textHeight: 48,
  indexHeight: 54,
  textBoxPaddingLeft: 80,
  indexArrowRadius: (172 - 18) / 2,
  indexArrowStrokeWidth: 18,
  indexArrowStartAngle: -Math.PI / 6,
  indexArrowEndAngle: -7 * Math.PI / 12
};
var StyleSheet = {
  '.as-circle-section-label-text': {
    height: Design.textBoxHeight / Design.textHeight + 'em',
    'padding-left': Design.textBoxPaddingLeft / Design.textHeight + 'em',
    'line-height': Design.textBoxHeight / Design.textHeight + 'em'
  },
  '.as-circle-section-label-index': {
    'font-size': Design.indexHeight / Design.textHeight + 'em',
    height: (Design.circleHeight + Design.borderWidth) / Design.indexHeight + 'em',
    'line-height': (Design.circleHeight + Design.borderWidth) / Design.indexHeight + 'em',
    width: (Design.circleHeight + Design.borderWidth) / Design.indexHeight + 'em'
  }
};
_({
  tag: 'style',
  id: 'circle-section-label-style',
  props: {
    innerHTML: Object.keys(StyleSheet).map(function (key) {
      var style = StyleSheet[key];
      return key + ' {\n' + Object.keys(style).map(function (propName) {
        return propName + ': ' + style[propName] + ';';
      }).join('\n') + '}';
    }).join('\n')
  }
}).addTo(document.head);

/**
 * @extends AElement
 * @constructor
 */
function CircleSectionLabel() {
  this._ident = (Math.random() + '').replace(/[^0-9]/g, '_');
  this.$background = $('.as-circle-section-label-background', this);
  this.$index = $('.as-circle-section-label-index', this);
  this.$text = $('.as-circle-section-label-text', this);
  this.$attachhook = _('attachhook').addTo(this).on('error', function () {
    _Dom["default"].addToResizeSystem(this);
    this.requestUpdateSize();
  });
  this.$attachhook.requestUpdateSize = this.redrawBackground.bind(this);
  this.$svg = _g({
    tag: 'svg',
    attr: {
      width: '0',
      height: '0'
    },
    child: [{
      tag: 'defs',
      child: [{
        tag: 'marker',
        id: 'marker_' + this._ident,
        attr: {
          markerWidth: "4",
          markerHeight: "4",
          refX: "0",
          refY: "1",
          orient: "auto",
          markerUnits: "strokeWidth",
          viewBox: "0 0 4 4"
        },
        child: {
          tag: 'path',
          "class": 'as-circle-section-label-arrow-marker-path',
          attr: {
            d: 'M0,0 L0,2 L2,1 z'
          }
        }
      }]
    }, 'rect.as-circle-section-label-text-box', 'circle.as-circle-section-label-index-box', 'path.as-circle-section-label-arrow']
  }).addTo(this.$background);
  this.$indexBox = $g('circle.as-circle-section-label-index-box', this.$svg);
  this.$textBox = $g('rect.as-circle-section-label-text-box', this.$svg);
  // this.$marker = $g('defs marker', this.$svg);
  // this.$markerPath = $g(' path', this.$marker);
  this.$arrow = $g('path.as-circle-section-label-arrow', this.$svg).attr({
    'marker-end': "url(" + '#marker_' + this._ident + ")"
  });
}
;
CircleSectionLabel.prototype.redrawBackground = function () {
  var indexBound = this.$index.getBoundingClientRect();
  var textBound = this.$text.getBoundingClientRect();
  var cHeight = indexBound.height;
  var cWidth = textBound.right - indexBound.left;
  this.$svg.attr({
    height: cHeight + '',
    width: cWidth + '',
    viewBox: [0, 0, cWidth, cHeight].join(' ')
  });
  var borderWidth = cHeight * Design.borderWidth / (Design.circleHeight + Design.borderWidth);
  var radius = cHeight * Design.circleHeight / (Design.circleHeight + Design.borderWidth) / 2;
  var x0 = indexBound.width / 2;
  var y0 = cHeight / 2;
  this.$indexBox.attr({
    r: radius + '',
    cx: x0,
    cy: y0
  }).addStyle({
    strokeWidth: borderWidth + ''
  });
  var textBoxHeight = textBound.height;
  this.$textBox.attr({
    x: x0 / 2,
    y: (cHeight - textBoxHeight) / 2,
    width: cWidth - x0 - 1,
    height: textBoxHeight,
    rx: textBoxHeight / 2,
    ry: textBoxHeight / 2
  });
  var arrowRadius = cHeight * Design.indexArrowRadius / (Design.circleHeight + Design.borderWidth);
  this.$arrow.attr({
    d: ['M', x0 + arrowRadius * Math.cos(Design.indexArrowStartAngle), y0 + arrowRadius * Math.sin(Design.indexArrowStartAngle), 'A', arrowRadius, arrowRadius, 0, 1, 1, x0 + arrowRadius * Math.cos(Design.indexArrowEndAngle), y0 + arrowRadius * Math.sin(Design.indexArrowEndAngle)].join(' ')
  }).addStyle('stroke-width', cHeight * Design.indexArrowStrokeWidth / (Design.circleHeight + Design.borderWidth));
};
CircleSectionLabel.tag = 'CircleSectionLabel'.toLowerCase();
CircleSectionLabel.render = function () {
  return _({
    "class": 'as-circle-section-label',
    child: [{
      "class": 'as-circle-section-label-background'
    }, '.as-circle-section-label-index', '.as-circle-section-label-text']
  });
};
CircleSectionLabel.property = {};
CircleSectionLabel.property.index = {
  set: function set(value) {
    this._index = value;
    this.$index.clearChild().addChild(_({
      text: value + ''
    }));
  },
  get: function get() {
    return this._index;
  }
};
CircleSectionLabel.property.text = {
  set: function set(value) {
    this._text = value;
    this.$text.clearChild().addChild(_({
      text: value + ''
    }));
  },
  get: function get() {
    return this._text;
  }
};
_ACore["default"].install(CircleSectionLabel);
var _default = CircleSectionLabel;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(27346);
var _OOP = _interopRequireWildcard(__webpack_require__(38608));
var _FontColorButton = _interopRequireDefault(__webpack_require__(14560));
var _utils = __webpack_require__(84512);
var _Dom = __webpack_require__(64821);
var _Vec = _interopRequireDefault(__webpack_require__(73316));
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _EventEmitter = _interopRequireWildcard(__webpack_require__(46833));
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _table_header_add = _interopRequireDefault(__webpack_require__(15608));
var _RibbonButton = _interopRequireDefault(__webpack_require__(93856));
var _PreInput = _interopRequireDefault(__webpack_require__(76606));
var _Snackbar = _interopRequireDefault(__webpack_require__(96206));
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 _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var EV_SELECTED_CELL_CHANGE = 'SELECTED_CELL_CHANGE'.toLowerCase();
var EV_CELL_DATA_CHANGE = 'change';
var EV_UNDO_APPLY = 'EV_UNDO_APPLY'.toLowerCase();

/**
 * loc: [row, col, rowHeight, colHeight]
 * @param {AElement} cell
 * @returns {number[]}
 */
var locOfCell = function locOfCell(cell) {
  return (cell.getAttribute('data-loc') || 'Nan,NaN').split(',').concat([cell.getAttribute('rowspan') || '1', cell.getAttribute('colspan') || '1']).map(function (it) {
    return parseInt(it, 10);
  });
};
var locOfCells = function locOfCells(cells) {
  return cells.reduce(function (ac, cell) {
    var cellLoc = locOfCell(cell);
    if (!ac) return cellLoc;
    return mergeLoc(ac, cellLoc);
  }, null);
};
function mergeLoc(loc1, loc2) {
  var rowLow = Math.min(loc1[0], loc2[0]);
  var colLow = Math.min(loc1[1], loc2[1]);
  var rowHigh = Math.max(loc1[0] + loc1[2] - 1, loc2[0] + loc2[2] - 1);
  var colHigh = Math.max(loc1[1] + loc1[3] - 1, loc2[1] + loc2[3] - 1);
  var res = [rowLow, colLow, rowHigh - rowLow + 1, colHigh - colLow + 1];
  if (arguments[2]) res = mergeLoc(res, arguments[2]);
  return res;
}
;
var locInLoc = function locInLoc(loc, ctn) {
  var mlc = mergeLoc(loc, ctn);
  return locEqual(mlc, ctn);
};
var locEqual = function locEqual(loc1, loc2) {
  return loc1[0] === loc2[0] && loc1[1] === loc2[1] && loc1[2] === loc2[2] && loc1[3] === loc2[3];
};
var locCollapse = function locCollapse(loc1, loc2) {
  if (loc1[0] + loc1[2] <= loc2[0]) return false;
  if (loc2[0] + loc2[2] <= loc1[0]) return false;
  if (loc1[1] + loc1[3] <= loc2[1]) return false;
  if (loc2[1] + loc2[3] <= loc1[1]) return false;
  return true;
};
var varNameOf = function varNameOf(o) {
  var res;
  if (!o) res = undefined;else if (typeof o === "string") res = o;else if (o.attr) res = o.attr('data-name');else if (typeof o.name === "string") res = o.name;
  return res || undefined;
};
var varTitleOf = function varTitleOf(o) {
  var res = undefined;
  if (!o) res = undefined;else if (o.attr) {
    res = o.attr('data-title');
    if (typeof res !== "string") res = undefined;
  } else if (typeof o.title === "string") res = o.title;
  return res;
};
var normalizeVariableData = function normalizeVariableData(data) {
  if (typeof data === "string") {
    data = data.trim();
    if (data.length === 0) return null;
    return {
      name: data,
      title: data
    };
  } else if (_typeof(data) === "object" && data) {
    data = Object.assign({}, data);
    if (typeof data.name !== "string" || data.name.trim().length === 0) return null;
    data.name = data.name.trim();
    if (typeof data.title !== "string" || data.title.trim().length === 0) data.title = data.name;
    return data;
  }
  return null;
};
var normalizeUsedVariable = function normalizeUsedVariable(data) {
  if (typeof data === "string") {
    data = data.trim();
    if (data.length === 0) return null;
    return {
      name: data
    };
  } else if (_typeof(data) === "object" && data) {
    data = Object.assign({}, data);
    if (typeof data.name !== "string" || data.name.trim().length === 0) return null;
    data.name = data.name.trim();
    if ('title' in data && typeof data.title !== "string") delete data.title;
    return data;
  }
  return null;
};
var variableDataOfElt = function variableDataOfElt(elt) {
  if (!elt.attr) return null;
  if (!elt.attr('data-default-title')) return null;
  var res = {};
  res.name = elt.attr('data-name');
  if (typeof res.name !== "string" || !res.name) return null;
  var title = elt.attr && elt.attr('data-title');
  if (typeof title === "string") res.title = title;
  return res;
};
var varEltOfCell = function varEltOfCell(cell) {
  return Array.prototype.filter.call(cell.childNodes, function (c) {
    return !!c.attr('data-default-title');
  });
};
var isChangeParent = function isChangeParent(parentElt, elt, bf) {
  if (parentElt !== elt.parentElement) return true;
  var children = varEltOfCell(parentElt);
  var idx;
  if (bf === 'end') {
    return children[children.length - 1] !== bf;
  } else {
    if (bf === elt) return false;
    idx = children.indexOf(bf);
    return children[idx - 1] !== elt;
  }
};
var hoverXOf = function hoverXOf(cell, bf) {
  var children = varEltOfCell(cell);
  var bound, cBound;
  if (children.length > 0) {
    bound = cell.getBoundingClientRect();
    if (bf === 'end') {
      cBound = children[children.length - 1].getBoundingClientRect();
      return cBound.right + 10 - bound.left;
    } else {
      cBound = bf.getBoundingClientRect();
      return cBound.left - bound.left;
    }
  } else {
    return 20;
  }
};
var defaultTextAlignOfElt = function defaultTextAlignOfElt(elt) {
  if (elt.tagName === 'TD') return 'left';
  return 'center';
};
var textAlignOfElt = function textAlignOfElt(elt) {
  return elt.style.textAlign || defaultTextAlignOfElt(elt);
};
var defaultFontWeightOfElt = function defaultFontWeightOfElt(elt) {
  if (elt.tagName === 'TD') return 'normal';
  return 'bold';
};
var fontWeightOfElt = function fontWeightOfElt(elt) {
  return elt.style.fontWeight || defaultFontWeightOfElt(elt);
};
var fontStyleOfElt = function fontStyleOfElt(elt) {
  return elt.style.fontStyle || 'normal';
};

/**
 * @extends AElement
 * @constructor
 */
function CompactDataGridEditor() {
  var _this = this;
  /**
   *
   * @type {CDContext}
   */
  var context = {
    editor: this,
    table: null,
    formatTool: null,
    varMng: null,
    selectCtrl: null,
    lcEmitter: new _EventEmitter["default"]()
  };
  context.table = new CDTable(context);
  this.$body = (0, _ACore.$)('.as-compact-data-grid-editor-body', this);
  this.$body.addChild(context.table.$table);
  context.undoMng = new CDUndoManager(context);
  context.selectCtrl = new CDSelectController(context);
  context.formatTool = new CDGFormatTool(context);
  context.varMng = new CDGVariableManager(context);

  // OOP.drillProperty(this, context.table, 'header', 'data');
  // OOP.drillProperty(this, context.table, 'data', 'data');
  _OOP["default"].drillProperty(this, context.varMng, 'variables');
  var dataTO = -1;
  Object.defineProperties(this, {
    header: {
      set: function set(value) {
        if (value) {
          context.table.header.data = value;
          context.table.header.hidden = false;
        } else {
          context.table.header.hidden = true;
        }
        clearTimeout(dataTO);
        dataTO = setTimeout(function () {
          context.table.autoFixRowsWidth();
          context.formatTool.updateAvailableCommands();
          context.undoMng.reset().commit();
        });
      },
      get: function get() {
        clearTimeout(dataTO);
        context.table.autoFixRowsWidth();
        if (context.table.header.hidden) return null;
        return context.table.header.data;
      },
      configurable: true
    },
    data: {
      set: function set(value) {
        context.varMng.rejectAllVariables();
        context.table.body.data = value;
        clearTimeout(dataTO);
        dataTO = setTimeout(function () {
          context.table.autoFixRowsWidth();
          context.formatTool.updateAvailableCommands();
          context.undoMng.reset().commit();
        });
      },
      get: function get() {
        clearTimeout(dataTO);
        context.table.autoFixRowsWidth();
        return context.table.body.data;
      },
      configurable: true
    }
  });
  var count = 0;
  context.lcEmitter.on(EV_CELL_DATA_CHANGE, function () {
    context.undoMng.commit();
    context.formatTool.updateAvailableCommands();
    if (window.ABSOL_DEBUG) _Snackbar["default"].show('change ' + ++count);
    _this.emit('change', {
      type: 'change',
      target: _this
    }, _this);
  });
  context.lcEmitter.on(EV_UNDO_APPLY, function () {
    context.formatTool.updateAvailableCommands();
    if (window.ABSOL_DEBUG) _Snackbar["default"].show('change ' + ++count);
    _this.emit('change', {
      type: 'change',
      target: _this
    }, _this);
  });

  /**
   * @name data
   * @memberof CompactDataGridEditor#
   */

  /**
   * @name header
   * @memberof CompactDataGridEditor#
   */
}

/**
 * @typedef CDContext
 * @property {CompactDataGridEditor} editor
 * @property {CDTable} table
 * @property {CDGVariableManager} varMng
 * @property {CDUndoManager} undoMng
 * @property {CDGFormatTool} formatTool
 * @property {CDSelectController} selectCtrl
 * @property {EventEmitter} lcEmitter
 *
 */

CompactDataGridEditor.tag = 'CompactDataGridEditor'.toLowerCase();
CompactDataGridEditor.render = function () {
  return (0, _ACore._)({
    attr: {
      tabindex: 1
    },
    extendEvent: ['change'],
    "class": 'as-compact-data-grid-editor',
    child: ['.as-compact-data-grid-editor-body']
  });
};
CompactDataGridEditor.prototype.revokeResource = function () {
  var data = this.data;
  var header = this.header;
  Object.defineProperties(this, {
    data: {
      value: data,
      configurable: true,
      writable: true
    },
    header: {
      value: header,
      configurable: true,
      writable: true
    }
  });
  (0, _utils.revokeResource)(this.grid);
  (0, _utils.revokeResource)(this.varMng);
  this.grid = undefined;
  this.varMng = undefined;
  while (this.firstChild) {
    (0, _utils.revokeResource)(this.firstChild);
    this.firstChild.remove();
  }
};
CompactDataGridEditor.prototype.init = function (props) {
  props = Object.assign({}, props);
  this.variables = props.variables;
  this.header = props.header;
  this.data = props.data;
  delete props.variables;
  delete props.header;
  delete props.data;
  Object.assign(this, props);
};
_ACore["default"].install(CompactDataGridEditor);
var _default = CompactDataGridEditor;
/**
 *
 * @param  {CDContext} context
 * @constructor
 */
exports["default"] = _default;
function CDGrid(context) {
  this.context = context;
  this.$grid = (0, _ACore._)(this.gridCt);

  // /**
  //  * @type {CompactDataGridEditor}
  //  */
  // this.elt = this.context.elt;
  // this.$body = $('tbody', this.elt);
}

CDGrid.prototype.gridCt = 'tbody';
CDGrid.prototype.rowCt = 'tr';
CDGrid.prototype.cellCt = 'td';
CDGrid.prototype.makeCell = function (data) {
  var attr = {};
  if ((0, _utils.isNaturalNumber)(data.rowSpan) && data.rowSpan > 1) {
    attr.rowspan = data.rowSpan;
  } else if ((0, _utils.isNaturalNumber)(data.rowspan) && data.rowspan > 1) {
    attr.rowspan = data.rowspan;
  }
  if ((0, _utils.isNaturalNumber)(data.colSpan) && data.colSpan > 1) {
    attr.colspan = data.colSpan;
  } else if ((0, _utils.isNaturalNumber)(data.colspan) && data.colspan > 1) {
    attr.colspan = data.colspan;
  }
  return (0, _ACore._)({
    tag: this.cellCt,
    attr: attr,
    "class": 'as-ca-cell',
    style: data.style || {}
    // child:
  });
};

CDGrid.prototype.hasCell = function (cell) {
  return cell.isDescendantOf(this.$grid);
};
CDGrid.prototype.styleOfCell = function (cellElt) {
  var res = {};
  ['textAlign', 'color', 'backgroundColor', 'fontWeight', 'whiteSpace'].forEach(function (key) {
    if (cellElt.style[key]) res[key] = cellElt.style[key];
  });
  if (res.textAlign === defaultTextAlignOfElt(cellElt)) delete res.textAlign;
  if (res.fontWeight === defaultFontWeightOfElt(cellElt)) delete res.fontWeight;
  if (res.whiteSpace !== 'nowrap') delete res.whiteSpace;
  for (var k in res) {
    return res;
  }
  return null;
};
CDGrid.prototype.dataOfCell = function (cellElt) {
  var cellData = {};
  var loc = locOfCell(cellElt);
  if (loc[2] > 1) cellData.rowSpan = loc[2];
  if (loc[3] > 1) cellData.colSpan = loc[3];
  var style = this.styleOfCell(cellElt);
  if (style) cellData.style = style;
  return cellData;
};
CDGrid.prototype.makeRow = function (data) {
  var _this2 = this;
  var cells = data.cells || [];
  return (0, _ACore._)({
    tag: this.rowCt,
    "class": 'as-ca-row',
    child: cells.map(function (it) {
      return _this2.makeCell(it);
    })
  });
};
CDGrid.prototype.updateCellLoc = function () {
  var row, cell;
  var gridElt = this.$grid;
  var height = Array(100).fill(0);
  var jj, loc;
  for (var i = 0; i < gridElt.childNodes.length; ++i) {
    row = gridElt.childNodes[i];
    jj = 0;
    for (var j = 0; j < row.childNodes.length; ++j) {
      cell = row.childNodes[j];
      loc = locOfCell(cell);
      while (height[jj] > i) {
        jj++;
      }
      cell.attr('data-loc', i + ',' + jj);
      for (var k = 0; k < loc[3]; ++k) {
        height[jj + k] = i + loc[2];
      }
      jj += loc[3];
    }
  }
  var nCol = height.indexOf(0);
  gridElt.attr('data-width', nCol);
  return nCol;
};
CDGrid.prototype.calcWidth = function () {
  var row, cell;
  var gridElt = this.$grid;
  var height = Array(100).fill(0);
  var jj, loc;
  for (var i = 0; i < gridElt.childNodes.length; ++i) {
    row = gridElt.childNodes[i];
    jj = 0;
    for (var j = 0; j < row.childNodes.length; ++j) {
      cell = row.childNodes[j];
      loc = locOfCell(cell);
      while (height[jj] > i) {
        jj++;
      }
      for (var k = 0; k < loc[3]; ++k) {
        height[jj + k] = i + loc[2];
      }
      jj += loc[3];
    }
  }
  var nCol = height.indexOf(0);
  gridElt.attr('data-width', nCol);
  return nCol;
};
CDGrid.prototype.getSize = function () {
  return {
    width: parseInt(this.$grid.attr('data-width'), 10),
    height: this.$grid.childNodes.length
  };
};
CDGrid.prototype.fixRowLength = function (rowLength) {
  rowLength = rowLength || 1;
  var row, cell;
  var gridElt = this.$grid;
  var height = Array(100).fill(0);
  var jj, colspan, rowspan;
  for (var i = 0; i < gridElt.childNodes.length; ++i) {
    row = gridElt.childNodes[i];
    jj = 0;
    for (var j = 0; j < row.childNodes.length; ++j) {
      cell = row.childNodes[j];
      colspan = parseInt(cell.attr('colspan'), 10) || 1;
      rowspan = parseInt(cell.attr('rowspan'), 10) || 1;
      while (height[jj] > i) {
        jj++;
      }
      for (var k = 0; k < colspan; ++k) {
        height[jj + k] = i + rowspan;
      }
      jj += colspan;
    }
    for (j = jj; j < rowLength; ++j) {
      row.addChild(this.makeCell({}).attr('data-loc', i + ',' + j));
      height[j] = i + 1;
    }
  }
};
CDGrid.prototype.getCellsFromLoc = function (loc) {
  var row, cell, cellLoc;
  var res = [];
  var gridElt = this.$grid;
  for (var i = 0; i < gridElt.childNodes.length; ++i) {
    row = gridElt.childNodes[i];
    for (var j = 0; j < row.childNodes.length; ++j) {
      cell = row.childNodes[j];
      cellLoc = locOfCell(cell);
      if (locCollapse(cellLoc, loc)) res.push(cell);
    }
  }
  var newLoc = locOfCells(res);
  if (!locEqual(newLoc, loc)) res = this.getCellsFromLoc(newLoc);
  return res;
};
CDGrid.prototype.addRowAt = function (newRowIdx) {
  var height = Array(50).fill(0);
  var row, cell, jj;
  var gridElt = this.$grid;
  var loc;
  if (gridElt.firstChild && gridElt.firstChild.lastChild) loc = locOfCell(gridElt.firstChild.lastChild);else loc = [0, 0, 1, 1];
  var rowLength = loc[1] + loc[3];
  for (var i = 0; i < gridElt.childNodes.length; ++i) {
    if (i === newRowIdx) {
      row = this.makeRow({
        cell: []
      });
      gridElt.addChildBefore(row, gridElt.childNodes[i]);
      jj = 0;
      while (jj < rowLength) {
        while (height[jj] > newRowIdx) {
          jj++;
        }
        row.addChild(this.makeCell({}));
        height[jj] = i + 1;
        jj++;
      }
      ++i;
    }
    row = gridElt.childNodes[i];
    jj = 0;
    for (var j = 0; j < row.childNodes.length; ++j) {
      while (height[jj] > i + 1) {
        jj++;
      }
      cell = row.childNodes[j];
      loc = locOfCell(cell);
      if (i <= newRowIdx && i + loc[2] > newRowIdx) {
        loc[2]++;
        cell.attr('rowspan', loc[2]);
      }
      for (var k = 0; k < loc[3]; ++k) {
        height[jj + k] = i + loc[2];
      }
      jj += loc[3];
    }
  }
  if (newRowIdx === gridElt.childNodes.length) {
    row = this.makeRow({
      cell: []
    });
    gridElt.addChild(row);
    jj = 0;
    while (jj < rowLength) {
      while (height[jj] > newRowIdx) {
        jj++;
      }
      row.addChild(this.makeCell({}));
      jj++;
    }
  }
  this.updateCellLoc();
};
CDGrid.prototype.addColAt = function (newColIdx) {
  var height = Array(50).fill(0);
  var row, cell, jj;
  var gridElt = this.$grid;
  var colspan, rowspan;
  for (var i = 0; i < gridElt.childNodes.length; ++i) {
    row = gridElt.childNodes[i];
    jj = 0;
    for (var j = 0; j < row.childNodes.length; ++j) {
      while (height[jj] > i) {
        jj++;
      }
      cell = row.childNodes[j];
      colspan = parseInt(cell.getAttribute('colspan'), 10) || 1;
      rowspan = parseInt(cell.getAttribute('rowspan'), 10) || 1;
      if (jj === newColIdx) {
        row.addChildBefore(this.makeCell({}), cell);
        height[jj] = i + 1;
        j++;
        jj++;
      } else if (jj <= newColIdx && jj + colspan > newColIdx) {
        colspan++;
        cell.attr('colspan', colspan);
      }
      height[jj] = i + rowspan;
      jj += colspan;
    }
    if (jj === newColIdx) {
      row.addChild(this.makeCell({}));
      height[jj] = i + 1;
    }
  }
  this.updateCellLoc();
};

/**
 *
 * @param rowIdx
 * @param {number=} rowHeight
 */
CDGrid.prototype.removeRowAt = function (rowIdx, rowHeight) {
  if (!(0, _utils.isNaturalNumber)(rowHeight)) rowHeight = 1;
  rowHeight = rowHeight || 1;
  var body = this.$grid;
  var row, cell;
  var loc;
  var rmLoc = [rowIdx, 0, rowHeight, 100];
  var needSplitLocs = [];
  var needSplitCells = [];
  var childSplitCells = [];
  var i, j;
  for (i = 0; i < body.childNodes.length; ++i) {
    row = body.childNodes[i];
    for (j = 0; j < row.childNodes.length; ++j) {
      cell = row.childNodes[j];
      loc = locOfCell(cell);
      if ((loc[2] > 1 || loc[3] > 1) && locCollapse(rmLoc, loc) && !locInLoc(loc, rmLoc)) {
        needSplitLocs.push(loc);
        needSplitCells.push(cell);
        childSplitCells.push(Array.prototype.slice.call(cell.childNodes));
      }
    }
  }
  for (i = 0; i < needSplitCells.length; ++i) {
    this.splitCell(needSplitCells[i]);
    loc = needSplitLocs[i];
    if (loc[0] < rowIdx) {
      if (loc[0] + loc[2] <= rowIdx + rowHeight) {
        loc[2] = rowIdx - loc[0];
      } else {
        loc[2] -= rowHeight;
      }
    } else {
      loc[2] -= rowIdx + rowHeight - loc[0];
    }
  }
  for (i = rowIdx + rowHeight - 1; i >= rowIdx; --i) {
    body.childNodes[i].remove();
  }
  this.updateCellLoc();
  var cells;
  for (i = 0; i < needSplitLocs.length; ++i) {
    loc = needSplitLocs[i];
    cells = this.getCellsFromLoc(loc);
    cells[0].addChild(childSplitCells[i]);
    this.mergeCells(cells);
  }
  this.updateCellLoc();
};

/**
 *
 * @param colIdx
 * @param {number=} colWidth
 */
CDGrid.prototype.removeColAt = function (colIdx, colWidth) {
  if (!(0, _utils.isNaturalNumber)(colWidth)) colWidth = 1;
  colWidth = colWidth || 1;
  var gridElt = this.$grid;
  var row, cell;
  var loc;
  var rmLoc = [0, colIdx, 100, colWidth];
  var needSplitLocs = [];
  var needSplitCells = [];
  var childSplitCells = [];
  var i, j;
  for (i = 0; i < gridElt.childNodes.length; ++i) {
    row = gridElt.childNodes[i];
    for (j = 0; j < row.childNodes.length; ++j) {
      cell = row.childNodes[j];
      loc = locOfCell(cell);
      if ((loc[2] > 1 || loc[3] > 1) && locCollapse(rmLoc, loc) && !locInLoc(loc, rmLoc)) {
        needSplitLocs.push(loc);
        needSplitCells.push(cell);
        childSplitCells.push(Array.prototype.slice.call(cell.childNodes));
      }
    }
  }
  for (i = 0; i < needSplitCells.length; ++i) {
    this.splitCell(needSplitCells[i]);
    loc = needSplitLocs[i];
    if (loc[1] < colIdx) {
      if (loc[1] + loc[3] <= colIdx + colWidth) {
        loc[3] = colIdx - loc[1];
      } else {
        loc[3] -= colWidth;
      }
    } else {
      loc[3] -= colIdx + colWidth - loc[1];
    }
  }
  var cells = this.getCellsFromLoc(rmLoc);
  cells.forEach(function (cell) {
    return cell.remove();
  });
  this.updateCellLoc();
  for (i = 0; i < needSplitLocs.length; ++i) {
    loc = needSplitLocs[i];
    cells = this.getCellsFromLoc(loc);
    cells[0].addChild(childSplitCells[i]);
    this.mergeCells(cells);
  }
  this.updateCellLoc();
};
CDGrid.prototype.mergeCells = function (cells) {
  var loc = locOfCells(cells);
  var cell0 = cells[0];
  cell0.attr({
    rowspan: loc[2],
    colspan: loc[3]
  });
  for (var i = 1; i < cells.length; ++i) {
    cell0.addChild((0, _ACore.$$)('.as-cag-var', cells[i]));
    cells[i].remove();
  }
  this.updateCellLoc();
};
CDGrid.prototype.splitCell = function (originalCell) {
  // var originalLoc = locOfCell(originalCell);
  var height = Array(100).fill(0);
  var loc;
  var gridElt = this.$grid;
  var size = this.getSize();
  loc = [0, 0, size.height, size.width];
  var rowLength = loc[1] + loc[3];
  originalCell.attr('rowspan', undefined);
  originalCell.attr('colspan', undefined);
  var row, cell;
  var jj;
  for (var i = 0; i < gridElt.childNodes.length; ++i) {
    row = gridElt.childNodes[i];
    jj = 0;
    while (height[jj] > i) {
      ++jj;
    }
    for (var j = 0; j < row.childNodes.length; ++j) {
      cell = row.childNodes[j];
      loc = locOfCell(cell);
      while (jj < loc[1]) {
        if (height[jj] <= i) {
          row.addChildBefore(this.makeCell({}), cell);
          height[jj] = i + 1;
          ++j;
        }
        ++jj;
      }
      for (var k = 0; k < loc[3]; ++k) {
        height[jj + k] = i + loc[2];
      }
      jj += loc[3];
      while (height[jj] > i) {
        ++jj;
      }
    }
    while (jj < rowLength) {
      row.addChild(this.makeCell({}));
      height[jj] = i + 1;
      ++jj;
      ++j;
    }
  }
  this.updateCellLoc();
};

/**
 * @typedef CDGData
 * @property {CDGDataRow[]}
 */

/**
 * @typedef CDGDataRow
 * @property {CDGDataCell[]}
 */

/**
 * @typedef CDGDataCell
 * @property {{}} style
 * @property {string} text
 */

Object.defineProperty(CDGrid.prototype, 'data', {
  set: function set(value) {
    var _this3 = this;
    this.$grid.clearChild();
    var rows = value && value.rows || [];
    if (rows.length === 0) rows.push({
      cells: [{}]
    });
    this.$grid.addChild(rows.map(function (it) {
      return _this3.makeRow(it);
    }));
    var nCol = this.updateCellLoc();
    this.fixRowLength(nCol);
  },
  get: function get() {
    var _this4 = this;
    var res = {};
    res.rows = Array.prototype.map.call(this.$grid.childNodes, function (rowElt) {
      var rowData = {};
      rowData.cells = Array.prototype.map.call(rowElt.childNodes, function (cellElt) {
        return _this4.dataOfCell(cellElt);
      });
      return rowData;
    });
    return res;
  },
  configurable: true
});

/**
 * @extends CDGrid
 * @param {CDContext} context
 * @param {CDTable} table
 * @constructor
 */
function CDTableBody(context, table) {
  CDGrid.call(this, context);
  this.table = table;
}
(0, _OOP.mixClass)(CDTableBody, CDGrid);
CDTableBody.prototype.gridCt = 'tbody';
CDTableBody.prototype.makeCell = function (data) {
  var _this5 = this;
  var variables = data.variables || [];
  var attr = {};
  if ((0, _utils.isNaturalNumber)(data.rowSpan) && data.rowSpan > 1) {
    attr.rowspan = data.rowSpan;
  } else if ((0, _utils.isNaturalNumber)(data.rowspan) && data.rowspan > 1) {
    attr.rowspan = data.rowspan;
  }
  if ((0, _utils.isNaturalNumber)(data.colSpan) && data.colSpan > 1) {
    attr.colspan = data.colSpan;
  } else if ((0, _utils.isNaturalNumber)(data.colspan) && data.colspan > 1) {
    attr.colspan = data.colspan;
  }
  return (0, _ACore._)({
    tag: 'td',
    attr: attr,
    "class": 'as-ca-cell',
    style: data.style || {},
    child: variables.map(function (it) {
      it = normalizeUsedVariable(it);
      var name = it.name;
      return _this5.context.varMng.pickVariable(name);
    })
  });
};
CDTableBody.prototype.dataOfCell = function (cellElt) {
  var cellData = CDGrid.prototype.dataOfCell.call(this, cellElt);
  var variables = (0, _ACore.$$)('.as-cag-var', cellElt).map(function (varElt) {
    return variableDataOfElt(varElt);
  }).filter(function (x) {
    return !!x;
  });
  if (variables.length > 0) cellData.variables = variables;
  return cellData;
};

/**
 *
 * @param {CDContext} context
 * @constructor
 */
function CDTable(context) {
  /**
   *
   * @type {CDContext}
   */
  this.context = context;
  this.header = new CDTableHeader(context, this);
  this.body = new CDTableBody(context, this);
  this.$table = (0, _ACore._)({
    tag: 'table',
    "class": 'as-cdg-table',
    child: [this.header.$grid, this.body.$grid]
  });
  this.header.hidden = true; //default
  this.header.data = {
    rows: [{
      cells: [{}]
    }]
  };
}
CDTable.prototype.autoFixRowsWidth = function () {
  var hL = this.header.calcWidth();
  var bL = Math.max(1, this.body.calcWidth());
  if (hL < bL) {
    this.header.fixRowLength(bL);
  } else if (hL > bL) {
    this.body.fixRowLength(bL);
  }
};

/**
 * @extends CDGrid
 *  @param {CDContext} context
 * @param {CDTable} table
 * @constructor
 */
function CDTableHeader(context, table) {
  CDGrid.call(this, context);
  this.table = table;
}
(0, _OOP.mixClass)(CDTableHeader, CDGrid);
CDTableHeader.prototype.gridCt = 'thead';
CDTableHeader.prototype.cellCt = 'th';
CDTableHeader.prototype.makeCell = function (data) {
  var _this6 = this;
  var res = CDGrid.prototype.makeCell.call(this, data);
  var beforeValue;
  var input = (0, _ACore._)({
    tag: _PreInput["default"],
    attr: {
      contenteditable: 'true',
      spellcheck: 'false'
    },
    props: {
      value: (data.text || ' ') + ''
    },
    on: {
      focus: function focus() {
        beforeValue = input.value;
      },
      blur: function blur() {
        if (input.value !== beforeValue) {
          _this6.context.lcEmitter.emit(EV_CELL_DATA_CHANGE);
        }
        beforeValue = undefined;
      }
    }
  });
  res.addChild(input);
  return res;
};
CDTableHeader.prototype.dataOfCell = function (cellElt) {
  var cellData = CDGrid.prototype.dataOfCell.call(this, cellElt);
  cellData.text = cellElt.firstChild.value;
  return cellData;
};
Object.defineProperty(CDTableHeader.prototype, 'hidden', {
  set: function set(value) {
    if (value) {
      this.$grid.addClass('as-hidden');
    } else {
      this.$grid.removeClass('as-hidden');
    }
  },
  get: function get() {
    return this.$grid.hasClass('as-hidden');
  },
  configurable: true
});

/**
 *
 * @param {CDContext} context
 * @constructor
 */
function CDSelectController(context) {
  var _this7 = this;
  this.context = context;
  this.editor = context.editor;
  this.lcEmitter = context.lcEmitter;
  Object.keys(this.constructor.prototype).filter(function (k) {
    return k.startsWith('ev_');
  }).forEach(function (key) {
    return _this7[key] = _this7[key].bind(_this7);
  });
  this.selectedGrid = null;
  this.selectedCells = [];
  (0, _ACore._)({
    tag: 'hanger',
    elt: this.context.table.$table,
    on: {
      draginit: this.ev_dragInit,
      drag: this.ev_drag,
      dragdeinit: this.ev_dragDeinit
    }
  });
}
CDSelectController.prototype.cellOf = function (o) {
  while (o) {
    if (o.hasClass && o.hasClass('as-ca-cell')) return o;
    o = o.parentElement;
  }
  return null;
};

/**
 *
 * @param {Vec2} pos
 */
CDSelectController.prototype.cellOfScreenPos = function (pos) {
  var row, cell, bound;
  var body = this.startingGrid.$grid;
  for (var i = 0; i < body.childNodes.length; ++i) {
    row = body.childNodes[i];
    for (var j = 0; j < row.childNodes.length; ++j) {
      cell = row.childNodes[j];
      bound = _Rectangle["default"].fromClientRect(cell.getBoundingClientRect());
      if (bound.containsPoint(pos)) return cell;
    }
  }
  return null;
};
CDSelectController.prototype.ev_dragInit = function (event) {
  var cell = null;
  if (event.target.hasClass && event.target.hasClass('as-ca-cell')) {
    cell = event.target;
  }
  this.startingCell = cell;
  this.mouseDownCell = this.cellOf(event.target);
  if (this.mouseDownCell) {
    this.startingGrid = this.mouseDownCell.isDescendantOf(this.context.table.header.$grid) ? this.context.table.header : this.context.table.body;
  }
  this.hoveringCells = [];
};
CDSelectController.prototype.ev_drag = function (event) {
  if (!this.startingCell) return;
  var curCell = this.cellOfScreenPos(event.currentPoint);
  if (!curCell) return;
  var startingLoc = locOfCell(this.startingCell);
  var endingLoc = locOfCell(curCell);
  var selectedLoc = mergeLoc(startingLoc, endingLoc);
  this.hoveringCells.forEach(function (cell) {
    cell.removeClass('as-hovering');
  });
  this.hoveringCells = this.startingGrid.getCellsFromLoc(selectedLoc);
  this.hoveringCells.forEach(function (cell) {
    cell.addClass('as-hovering');
  });
};
CDSelectController.prototype.ev_dragDeinit = function (event) {
  this.hoveringCells.forEach(function (cell) {
    cell.removeClass('as-hovering');
  });
  if (this.hoveringCells.length > 0) {
    this.selectCells(this.hoveringCells);
  } else if (this.cellOf(event.target) === this.mouseDownCell) {
    this.selectCells([this.mouseDownCell]);
  }
  this.hoveringCells = null;
  this.hoveringCells = [];
};
CDSelectController.prototype.selectCells = function (cells) {
  this.selectedCells.forEach(function (cell) {
    return cell.removeClass('as-selected');
  });
  this.selectedCells = cells.slice();
  this.selectedCells.forEach(function (cell) {
    return cell.addClass('as-selected');
  });
  var focsVar = (0, _ACore.$)('td.as-selected .as-cag-var.as-focus', this.editor);
  if (!focsVar) {
    focsVar = (0, _ACore.$)('td.as-selected .as-cag-var', this.editor);
    this.context.varMng.focus(focsVar || null);
  }
  var sel, range;
  if (!focsVar) {
    focsVar = (0, _ACore.$)('th.as-selected preinput', this.editor);
    if (focsVar) {
      sel = document.getSelection();
      if (sel.rangeCount) {
        range = sel.getRangeAt(0);
        if (range.startContainer.nodeType !== Node.TEXT_NODE || range.startContainer.parentElement !== focsVar) {
          focsVar.focus();
          focsVar.select(focsVar.value.length);
        }
      } else {
        focsVar.focus();
        focsVar.select(focsVar.value.length);
      }
    }
  }
  this.lcEmitter.emit(EV_SELECTED_CELL_CHANGE);
};

/**
 *
 * @param  context
 * @constructor
 */
function CDGVariableManager(context) {
  var _this8 = this;
  this.context = context;
  this.editor = context.editor;
  this.lcEmitter = context.lcEmitter;
  /**
   *
   * @type {CDGrid}
   */
  this.body = context.table.body;
  this.createView();
  this._variables = [];
  this.variableDict = {};
  this.pickedVariables = {};
  this.availableVariables = {};
  Object.keys(this.constructor.prototype).filter(function (k) {
    return k.startsWith('ev_');
  }).forEach(function (key) {
    return _this8[key] = _this8[key].bind(_this8);
  });
  this.focusVariable = null;
}
CDGVariableManager.prototype.focus = function (varElt) {
  if (this.focusVariable) {
    this.focusVariable.removeClass('as-focus');
  }
  this.focusVariable = varElt;
  if (this.focusVariable) {
    this.focusVariable.addClass('as-focus');
  }
};
CDGVariableManager.revokeResource = function () {
  this.editor = undefined;
  this.grid = undefined;
};
CDGVariableManager.prototype.createView = function () {
  this.$varMng = (0, _ACore._)({
    "class": 'as-cag-var-mng',
    child: []
  });
  this.editor.addChildAfter(this.$varMng, this.context.formatTool.$tool);
};

/**
 *
 * @param {string} name
 * @returns {*}
 */
CDGVariableManager.prototype.makeVariable = function (name) {
  var _this9 = this;
  var info = this.variableDict[name] || {};
  var elt = (0, _ACore._)({
    tag: 'hanger',
    "class": 'as-cag-var',
    attr: {
      'data-name': name
    },
    child: [
      // { tag: 'span', child: { text: name } }
    ],
    props: {
      hangOn: 3
    },
    on: {
      dragstart: this.ev_dragStart,
      dragend: this.ev_dragEnd,
      drag: this.ev_drag,
      click: function click() {
        _this9.focus(elt);
      }
    }
  });
  if (typeof info.title === "string") {
    elt.attr('data-title', info.title);
  }
  if (info) {
    elt.attr('data-default-title', info.title);
  }
  return elt;
};
CDGVariableManager.prototype.pickVariable = function (name) {
  if (this.availableVariables[name]) {
    this.pickedVariables[name] = this.availableVariables[name];
    delete this.availableVariables[name];
  } else if (!this.pickedVariables[name]) {
    this.pickedVariables[name] = this.makeVariable(name);
  }
  return this.pickedVariables[name];
};
CDGVariableManager.prototype.rejectVariable = function (name) {
  if (this.pickedVariables[name]) {
    this.availableVariables[name] = this.pickedVariables[name];
    delete this.pickedVariables[name];
  }
  this.$varMng.addChild(this.availableVariables[name]);
  return this.availableVariables[name];
};
CDGVariableManager.prototype.rejectAllVariables = function () {
  var _this10 = this;
  Object.keys(this.pickedVariables).forEach(function (name) {
    return _this10.rejectVariable(name);
  });
};
CDGVariableManager.prototype.variableElementOf = function (o) {
  var name = varNameOf(o);
  if (name === "string") return this.availableVariables[o] || this.pickedVariables[o];
  if ((0, _Dom.isDomNode)(o)) {
    while (o) {
      if (o.hasClass && o.hasClass('as-cag-var')) {
        return o;
      }
      o = o.parentElement;
    }
  }
  return null;
};
CDGVariableManager.prototype.findVariableLocation = function (rect) {
  var cells = (0, _ACore.$$)('.as-ca-cell', this.body.$grid);
  var best = 0;
  var cellRect;
  var bestCell;
  var square;
  var i;
  for (i = 0; i < cells.length; ++i) {
    cellRect = _Rectangle["default"].fromClientRect(cells[i].getBoundingClientRect());
    square = rect.collapsedSquare(cellRect);
    if (square > best) {
      bestCell = cells[i];
    }
  }
  var res = {
    "in": null
  };
  if (bestCell) {
    res["in"] = bestCell;
  } else {
    res["in"] = null;
  }
  var varEltList, varElt, varBound;
  if (res["in"]) {
    varEltList = (0, _ACore.$$)('.as-cag-var', res["in"]);
    res.bf = 'end';
    for (i = varEltList.length - 1; i >= 0; --i) {
      varElt = varEltList[i];
      if (!varElt.attr('data-default-title')) continue;
      varBound = _Rectangle["default"].fromClientRect(varElt.getBoundingClientRect());
      if (varBound.centerPoint().x > rect.centerPoint().x) {
        res.bf = varElt;
      } else break;
    }
    return res;
  } else {
    return null;
  }
};

/**
 *
 * @param {AElement=} elt
 */
CDGVariableManager.prototype.openEditVariableDialog = function (elt) {
  var _this11 = this;
  elt = elt || this.focusVariable;
  if (!elt) return;
  var flushData = function flushData() {
    var newTile = checkbox.checked ? undefined : titleInput.value;
    var oldTile = elt.attr('data-title');
    if (typeof oldTile !== "string") oldTile = undefined;
    if (newTile !== oldTile) {
      elt.attr('data-title', newTile);
      _this11.lcEmitter.emit(EV_CELL_DATA_CHANGE);
    }
  };
  var finish = function finish() {
    flushData();
    _cancel();
  };
  var _cancel = function cancel() {
    document.removeEventListener('click', clickOut);
    elt = null;
    follower.followTarget = null;
    follower.clearChild();
    follower.remove();
    _ResizeSystem["default"].removeTrash();
    finish = undefined;
    _cancel = undefined;
    clickOut = undefined;
  };
  var clickOut = function clickOut(event) {
    if ((0, _EventEmitter.hitElement)(follower, event)) return;
    _cancel();
  };
  setTimeout(function () {
    document.addEventListener('click', clickOut);
  }, 100);
  var checkboxUpdate = function checkboxUpdate() {
    if (checkbox.checked) {
      titleInput.disabled = true;
      titleInput.savedData = titleInput.value;
      titleInput.value = '';
    } else {
      titleInput.disabled = false;
      titleInput.value = titleInput.value || titleInput.savedData || '';
    }
  };
  var follower = (0, _ACore._)({
    tag: _Follower["default"],
    "class": ['as-dropdown-box-common-style', 'as-cdg-variable-edit-dialog'],
    style: {
      zIndex: (0, _utils.findMaxZIndex)(elt) + 10
    },
    child: [{
      style: {
        fontWeight: 'bold',
        padding: '10px 5px'
      },
      child: {
        text: 'Tiêu đề'
      }
    }, {
      "class": 'as-table-grid',
      child: [{
        "class": 'as-table-grid-row',
        child: [{
          "class": 'as-table-grid-cell',
          child: {
            tag: 'span',
            child: {
              text: 'Mặc định'
            }
          }
        }, {
          "class": 'as-table-grid-cell',
          child: {
            tag: 'checkboxinput',
            props: {
              checked: typeof elt.attr('data-title') !== "string"
            },
            on: {
              change: checkboxUpdate
            }
          }
        }]
      }, {
        "class": 'as-table-grid-row',
        child: [{
          "class": 'as-table-grid-cell',
          child: {
            tag: 'span',
            child: {
              text: 'Giá trị'
            }
          }
        }, {
          "class": 'as-table-grid-cell',
          child: {
            tag: 'input',
            attr: {
              type: 'text'
            },
            props: {
              value: elt.attr('data-title') || ''
            },
            "class": 'as-text-input'
          }
        }]
      }]
    }, {
      style: {
        textAlign: 'center',
        padding: '10px'
      },
      child: [{
        tag: 'flexiconbutton',
        props: {
          text: 'Xác nhận'
        },
        style: {
          marginRight: '20px'
        },
        on: {
          click: finish
        }
      }, {
        tag: 'flexiconbutton',
        props: {
          text: 'Hủy'
        },
        on: {
          click: _cancel
        }
      }]
    }],
    props: {
      followTarget: elt
    }
  }).addTo(document.body);
  var checkbox = (0, _ACore.$)('checkboxinput', follower);
  var titleInput = (0, _ACore.$)('input[type="text"]', follower);
  checkboxUpdate();
};
CDGVariableManager.prototype.ev_dragStart = function (event) {
  var varElt = this.variableElementOf(event.target);
  var eltBound = varElt.getBoundingClientRect();
  var offset = event.currentPoint.sub(new _Vec["default"](eltBound.left, eltBound.top));
  this.draggingElt = varElt;
  this.dragOffset = offset;
  this.clonedElt = (0, _ACore.$)(varElt.cloneNode(true)).addClass('as-clone-var').addStyle({
    position: 'fixed',
    zIndex: (0, _utils.findMaxZIndex)(varElt) + 2,
    left: eltBound.left + 'px',
    top: eltBound.top + 'px'
  }).addTo(document.body);
  varElt.addStyle('opacity', 0.8);
  this.hoverCell = null;
};
CDGVariableManager.prototype.ev_drag = function (event) {
  var newPos = event.currentPoint.sub(this.dragOffset);
  this.clonedElt.addStyle({
    left: newPos.x + 'px',
    top: newPos.y + 'px'
  });
  var pointerRect = new _Rectangle["default"](event.currentPoint.x - 10, event.currentPoint.y - 10, 20, 20);
  this.newLocation = this.findVariableLocation(pointerRect);
  var newLocation = this.newLocation;
  if (newLocation) {
    if (newLocation["in"] !== this.hoverCell) {
      if (this.hoverCell) this.hoverCell.removeClass('as-drag-over');
      this.hoverCell = newLocation["in"];
      this.hoverCell.addClass('as-drag-over');
    }
    if (isChangeParent(newLocation["in"], this.draggingElt, newLocation.bf)) {
      this.hoverCell.addClass('as-bf');
      this.hoverCell.addStyle('--hover-x', hoverXOf(newLocation["in"], newLocation.bf) + 'px');
    } else {
      this.hoverCell.removeClass('as-bf').removeStyle('--hover-x');
    }
  } else {
    if (this.hoverCell) this.hoverCell.removeClass('as-drag-over').removeClass('as-bf').removeStyle('--hover-x');
  }
};
CDGVariableManager.prototype.ev_dragEnd = function () {
  this.draggingElt.removeStyle('opacity');
  this.clonedElt.remove();
  if (this.hoverCell) this.hoverCell.removeClass('as-drag-over');
  var name = this.draggingElt.attr('data-name');
  var newLocation = this.newLocation;
  if (newLocation) {
    if (isChangeParent(newLocation["in"], this.draggingElt, newLocation.bf)) {
      this.draggingElt.selfRemove();
      if (newLocation.bf === 'end') {
        newLocation["in"].addChild(this.draggingElt);
      } else {
        newLocation["in"].addChildBefore(this.draggingElt, newLocation.bf);
      }
      this.pickVariable(name);
      this.context.selectCtrl.selectCells([this.newLocation["in"]]);
      this.context.varMng.focus(this.draggingElt);
      this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
    }
  } else {
    if (this.draggingElt.parentElement !== this.$varMng) {
      this.rejectVariable(name);
      this.$varMng.addChild(this.draggingElt);
      this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
    }
  }
};
CDGVariableManager.prototype.updateVariableInfo = function () {
  var i, elt;
  var varInfo;
  for (i in this.availableVariables) {
    elt = this.availableVariables[i];
    varInfo = this.variableDict[i];
    if (varInfo) elt.attr('data-default-title', varInfo.title);
  }
  for (i in this.pickedVariables) {
    elt = this.pickedVariables[i];
    varInfo = this.variableDict[i];
    if (varInfo) elt.attr('data-default-title', varInfo.title);
  }
  for (i = 0; i < this._variables.length; ++i) {
    varInfo = this._variables[i];
    if (this.pickedVariables[varInfo.name] || this.availableVariables[varInfo.name]) continue;
    this.availableVariables[varInfo.name] = this.makeVariable(varInfo.name);
    this.$varMng.addChild(this.availableVariables[varInfo.name]);
  }
};

/// nếu không c trong danh sách thì tự bỏ ra
Object.defineProperty(CDGVariableManager.prototype, 'variables', {
  set: function set(variables) {
    if (!Array.isArray(variables)) variables = [];
    variables = variables.map(function (v) {
      return normalizeVariableData(v);
    }).filter(function (x) {
      return !!x;
    });
    var t = variables.reduce(function (ac, cr) {
      if (!ac.dict[cr.name]) {
        ac.dict[cr.name] = cr;
        ac.arr.push(cr);
      }
      return ac;
    }, {
      arr: [],
      dict: {}
    });
    this._variables = t.arr;
    this.variableDict = t.dict;
    this.updateVariableInfo();

    //
    // this.availableVariables = {};
    // this.$varMng.clearChild();
  },

  get: function get() {
    return this._variables;
  }
});

/**
 *
 * @param {CDContext} context
 * @constructor
 */
function CDUndoManager(context) {
  this.context = context;
  this.data = [];
  this.idx = -1;
}
CDUndoManager.prototype.revokeResource = function () {
  this.data = [];
  this.idx = -1;
};
CDUndoManager.prototype.reset = function () {
  this.data = [];
  this.idx = -1;
  return this;
};
CDUndoManager.prototype.commit = function () {
  while (this.data.length - 1 > this.idx) {
    this.data.pop();
  }
  var item = {
    header: this.context.table.header.data,
    data: this.context.table.body.data,
    headerHidden: this.context.table.header.hidden
  };
  this.data.push(item);
  this.idx = this.data.length - 1;
  return this;
};
CDUndoManager.prototype._applyTop = function () {
  var item = this.data[this.idx];
  this.context.varMng.rejectAllVariables();
  this.context.table.header.data = item.header;
  this.context.table.header.hidden = item.headerHidden;
  this.context.table.body.data = item.data;
  this.context.lcEmitter.emit(EV_UNDO_APPLY);
};
CDUndoManager.prototype.undo = function () {
  if (!this.canUndo()) return this;
  this.idx--;
  this._applyTop();
  return this;
};
CDUndoManager.prototype.redo = function () {
  if (!this.canRedo()) return this;
  this.idx++;
  this._applyTop();
  return this;
};
CDUndoManager.prototype.canRedo = function () {
  return this.idx + 1 < this.data.length;
};
CDUndoManager.prototype.canUndo = function () {
  return this.idx > 0;
};

/**
 *
 * @param {CDContext} context
 * @constructor
 */
function CDGFormatTool(context) {
  var _this12 = this;
  this.context = context;
  this.table = context.table;
  this.editor = context.editor;
  this.lcEmitter = context.lcEmitter;
  Object.keys(this.constructor.prototype).filter(function (k) {
    return k.startsWith('ev_');
  }).forEach(function (k) {
    return _this12[k] = _this12[k].bind(_this12);
  });
  this.$tool = (0, _ACore._)({
    "class": 'as-table-of-text-input-tool',
    child: [{
      "class": 'as-table-of-text-input-tool-group',
      child: [{
        tag: _RibbonButton["default"],
        attr: {
          "data-command": 'toggle_header'
        },
        props: {
          items: [{
            text: 'Show Header',
            arg: true,
            icon: (0, _ACore._)(_table_header_add["default"]).addClass('as-show-header')
          }, {
            text: 'Hide Header',
            arg: false,
            icon: _table_header_add["default"]
          }],
          icon: (0, _ACore._)(_table_header_add["default"]).addClass('as-show-header')
        }
      }]
    }, {
      "class": 'as-table-of-text-input-tool-group',
      child: [{
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        child: 'span.mdi.mdi-undo',
        attr: {
          'data-command': 'undo',
          title: 'Undo'
        }
      }, {
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        child: 'span.mdi.mdi-redo',
        attr: {
          'data-command': 'redo',
          title: 'Redo'
        }
      }]
    }, {
      "class": 'as-table-of-text-input-tool-group',
      child: [{
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        child: 'span.mdi.mdi-table-column-plus-before',
        attr: {
          'data-command': 'left',
          title: 'Insert 1 column left'
        }
      }, {
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        child: 'span.mdi.mdi-table-column-plus-after',
        attr: {
          'data-command': 'right',
          title: 'Insert 1 column right'
        }
      }, {
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        child: 'span.mdi.mdi-table-row-plus-before',
        attr: {
          'data-command': 'above',
          title: 'Insert 1 row above'
        }
      }, {
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        child: 'span.mdi.mdi-table-row-plus-after',
        attr: {
          'data-command': 'bellow',
          title: 'Insert 1 row bellow'
        }
      }, {
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command', 'as-variant-danger'],
        attr: {
          'data-command': 'removeCol',
          title: 'Delete column'
        },
        child: {
          tag: 'span',
          "class": ['mdi', 'mdi-table-column-remove']
        }
      }, {
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command', 'as-variant-danger'],
        attr: {
          'data-command': 'removeRow',
          title: 'Delete row'
        },
        child: {
          tag: 'span',
          "class": ['mdi', 'mdi-table-row-remove']
        }
      }, {
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        //can checked
        attr: {
          'data-command': 'merge',
          title: 'Merge Cells'
        },
        child: {
          tag: 'span',
          "class": ['mdi', 'mdi-table-merge-cells']
        }
      }]
    }, {
      "class": 'as-table-of-text-input-tool-group',
      child: [{
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        //can checked
        attr: {
          'data-command': 'textAlignLeft',
          title: 'Format text align left'
        },
        child: {
          tag: 'span',
          "class": ['mdi', 'mdi-format-align-left']
        }
      }, {
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        //can checked
        attr: {
          'data-command': 'textAlignCenter',
          title: 'Format text align center'
        },
        child: {
          tag: 'span',
          "class": ['mdi', 'mdi-format-align-center']
        }
      }, {
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        //can checked
        attr: {
          'data-command': 'textAlignRight',
          title: 'Format text align right'
        },
        child: {
          tag: 'span',
          "class": ['mdi', 'mdi-format-align-right']
        }
      }, {
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        //can checked
        attr: {
          'data-command': 'textFormatBold',
          title: 'Bold'
        },
        child: {
          tag: 'span',
          "class": ['mdi', 'mdi-format-bold']
        }
      }, {
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        //can checked
        attr: {
          'data-command': 'textFormatItalic',
          title: 'Italic'
        },
        child: {
          tag: 'span',
          "class": ['mdi', 'mdi-format-italic']
        }
      }, {
        tag: 'button',
        "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
        //can checked
        attr: {
          'data-command': 'wrap',
          title: 'Allow text wrap'
        },
        child: {
          tag: 'span',
          "class": ['mdi', 'mdi-wrap']
        }
      }]
    }, {
      tag: 'button',
      "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
      attr: {
        'data-command': 'edit_variable'
      },
      child: {
        tag: 'span',
        "class": ['mdi', 'mdi-tag-edit-outline']
      }
    }]
  });
  this.editor.addChildAfter(this.$tool, null);
  this.$commandBtns = (0, _ACore.$$)('.as-table-of-text-input-tool >button', this.$tool).concat((0, _ACore.$$)('.as-table-of-text-input-tool-group >button', this.$tool)).reduce(function (ac, btn) {
    var value = btn.attr('data-command');
    if (!value) return ac;
    if (btn.isSupportedEvent('select')) {
      btn.on('select', function (event) {
        _this12.commands[value].exec.call(_this12, event.item.arg);
      });
    } else btn.on('click', function (ev) {
      if (_this12.commands[value].checked) {
        _this12.commands[value].exec.call(_this12, !btn.hasClass('as-checked'));
      } else {
        _this12.commands[value].exec.call(_this12);
      }
    });
    ac[value] = btn;
    return ac;
  }, {});
  this.updateAvailableCommands();
  this.lcEmitter.on(EV_SELECTED_CELL_CHANGE, this.updateAvailableCommands.bind(this));
}
CDGFormatTool.prototype.updateAvailableCommands = function () {
  var _this13 = this;
  Object.values(this.$commandBtns).forEach(function (btn) {
    var name = btn.attr('data-command');
    if (_this13.commands[name] && _this13.commands[name].available) {
      btn.disabled = !_this13.commands[name].available.call(_this13);
    }
    if (_this13.commands[name] && _this13.commands[name].checked) {
      if (_this13.commands[name].checked.call(_this13)) {
        btn.addClass('as-checked');
      } else {
        btn.removeClass('as-checked');
      }
    } else if (_this13.commands[name] && _this13.commands[name].getIcon) {
      btn.icon = _this13.commands[name].getIcon.call(_this13);
    }
  });
};
CDGFormatTool.prototype.addColAt = function (newColIdx) {
  this.table.header.addColAt(newColIdx);
  this.table.body.addColAt(newColIdx);
  this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
};
CDGFormatTool.prototype.addRowAt = function (grid, newRowIdx) {
  //todo: wrong
  grid.addRowAt(newRowIdx);
  this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
};
CDGFormatTool.prototype.removeRowAt = function (grid, rowIdx, rowHeight) {
  grid.removeRowAt(rowIdx, rowHeight);
  this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
};
CDGFormatTool.prototype.removeColAt = function (rowIdx, colWidth) {
  this.table.header.removeColAt(rowIdx, colWidth);
  this.table.body.removeColAt(rowIdx, colWidth);
  this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
};
CDGFormatTool.prototype.mergeCells = function (grid, cells) {
  grid.mergeCells(cells);
  this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
};
CDGFormatTool.prototype.splitCell = function (grid, originalCell) {
  grid.splitCell(originalCell);
  this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
};

/**
 * @this CDGFormatTool
 */
function hasSelectedCell() {
  var selectedCells = this.context.selectCtrl.selectedCells;
  return selectedCells.length > 0;
}
var checkTextAlign = function checkTextAlign(alignVal) {
  return function () {
    var selectedCells = this.context.selectCtrl.selectedCells;
    if (!selectedCells.length) return false;
    for (var i = 0; i < selectedCells.length; ++i) {
      if (textAlignOfElt(selectedCells[i]) !== alignVal) return false;
    }
    return true;
  };
};
CDGFormatTool.prototype.commands = {
  undo: {
    /**
     * @this CDGFormatTool
     */
    available: function available() {
      return this.context.undoMng.canUndo();
    },
    exec: function exec() {
      this.context.undoMng.undo();
    }
  },
  redo: {
    available: function available() {
      return this.context.undoMng.canRedo();
    },
    exec: function exec() {
      this.context.undoMng.redo();
    }
  },
  toggle_header: {
    /**
     * @this CDGFormatTool
     */
    getIcon: function getIcon() {
      if (this.context && this.context.table.header.hidden) {
        return (0, _ACore._)(_table_header_add["default"]);
      } else {
        return (0, _ACore._)(_table_header_add["default"]).addClass('as-show-header');
      }
    },
    /**
     * @this CDGFormatTool
     */
    exec: function exec(arg) {
      if (!this.context.table.header.hidden === !!arg) return;
      this.context.table.header.hidden = !arg;
      this.lcEmitter.emit(EV_SELECTED_CELL_CHANGE);
      this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
    }
  },
  left: {
    available: hasSelectedCell,
    /**
     * @this CDGFormatTool
     */
    exec: function exec() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return;
      var loc = locOfCells(selectedCells);
      var newColIdx = loc[1];
      this.addColAt(newColIdx);
    }
  },
  right: {
    available: hasSelectedCell,
    /**
     * @this CDGFormatTool
     */
    exec: function exec() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return;
      var loc = locOfCells(selectedCells);
      var newColIdx = loc[1] + loc[3];
      this.addColAt(newColIdx);
    }
  },
  above: {
    available: hasSelectedCell,
    /**
     * @this CDGFormatTool
     */
    exec: function exec() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return;
      var loc = locOfCells(selectedCells);
      var newRowIdx = loc[0];
      var grid = this.context.table.body;
      if (this.context.table.header.hasCell(selectedCells[0])) grid = this.context.table.header;
      this.addRowAt(grid, newRowIdx);
    }
  },
  bellow: {
    available: hasSelectedCell,
    /**
     * @this CDGFormatTool
     */
    exec: function exec() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return;
      var loc = locOfCells(selectedCells);
      var newRowIdx = loc[0] + loc[2];
      var grid = this.context.table.body;
      if (this.context.table.header.hasCell(selectedCells[0])) grid = this.context.table.header;
      this.addRowAt(grid, newRowIdx);
    }
  },
  removeRow: {
    available: function available() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      var loc = locOfCells(selectedCells);
      var grid = this.context.table.body;
      if (this.context.table.header.hasCell(selectedCells[0])) grid = this.context.table.header;
      var size = grid.getSize();
      return loc[2] < size.height;
    },
    exec: function exec() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return;
      var loc = locOfCells(selectedCells);
      var grid = this.context.table.body;
      if (this.context.table.header.hasCell(selectedCells[0])) grid = this.context.table.header;
      this.removeRowAt(grid, loc[0], loc[2]);
      this.context.selectCtrl.selectCells([]);
    }
  },
  removeCol: {
    available: function available() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      var loc = locOfCells(selectedCells);
      var grid = this.context.table.body;
      if (this.context.table.header.hasCell(selectedCells[0])) grid = this.context.table.header;
      var size = grid.getSize();
      return loc[3] < size.width;
    },
    exec: function exec() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return;
      var loc = locOfCells(selectedCells);
      // var grid = this.context.table.body;
      // if (this.context.table.header.hasCell(selectedCells[0]))
      //     grid = this.context.table.header;
      this.removeColAt(loc[1], loc[3]);
      this.context.selectCtrl.selectCells([]);
    }
  },
  merge: {
    checked: function checked() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (selectedCells.length !== 1) return false;
      var loc = locOfCells(selectedCells);
      return loc[2] > 1 || loc[3] > 1;
    },
    available: function available() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      var loc = locOfCells(selectedCells);
      return loc[2] > 1 || loc[3] > 1;
    },
    exec: function exec() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      var loc = locOfCells(selectedCells);
      var grid = this.context.table.body;
      if (this.context.table.header.hasCell(selectedCells[0])) grid = this.context.table.header;
      var isMerged = selectedCells.length === 1 && (loc[2] > 1 || loc[3] > 1);
      if (isMerged) this.splitCell(grid, selectedCells[0]);else this.mergeCells(grid, selectedCells);
      selectedCells = grid.getCellsFromLoc(loc);
      this.context.selectCtrl.selectCells(selectedCells);
    }
  },
  edit_variable: {
    /**
     * @this CDGFormatTool
     */
    available: function available() {
      var fv = this.context.varMng && this.context.varMng.focusVariable;
      return !!(fv && fv.isDescendantOf(this.context.editor));
    },
    /**
     * @this CDGFormatTool
     */
    exec: function exec() {
      this.context.varMng.openEditVariableDialog();
    }
  },
  textAlignCenter: {
    checked: checkTextAlign('center'),
    available: hasSelectedCell,
    exec: function exec() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      var changed = false;
      var cell;
      for (var i = 0; i < selectedCells.length; ++i) {
        cell = selectedCells[i];
        if ((cell.style.textAlign || defaultTextAlignOfElt(cell)) !== 'center') {
          cell.style.textAlign = 'center';
          changed = true;
        }
      }
      if (changed) this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
    }
  },
  textAlignRight: {
    checked: checkTextAlign('right'),
    available: hasSelectedCell,
    exec: function exec() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      var changed = false;
      var cell;
      for (var i = 0; i < selectedCells.length; ++i) {
        cell = selectedCells[i];
        if ((cell.style.textAlign || defaultTextAlignOfElt(cell)) !== 'right') {
          cell.style.textAlign = 'right';
          changed = true;
        }
      }
      if (changed) this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
    }
  },
  textAlignLeft: {
    checked: checkTextAlign('left'),
    available: hasSelectedCell,
    exec: function exec() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      var changed = false;
      var cell;
      for (var i = 0; i < selectedCells.length; ++i) {
        cell = selectedCells[i];
        if ((cell.style.textAlign || defaultTextAlignOfElt(cell)) !== 'left') {
          cell.style.textAlign = 'left';
          changed = true;
        }
      }
      if (changed) this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
    }
  },
  wrap: {
    checked: function checked() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      for (var i = 0; i < selectedCells.length; ++i) {
        if (selectedCells[i].style.whiteSpace === 'nowrap') return false;
      }
      return true;
    },
    available: hasSelectedCell,
    exec: function exec(flag) {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      var changed = false;
      var cell;
      for (var i = 0; i < selectedCells.length; ++i) {
        cell = selectedCells[i];
        if (cell.style.whiteSpace === 'nowrap') {
          if (flag) {
            cell.style.whiteSpace = null;
            changed = true;
          }
        } else {
          if (!flag) {
            cell.style.whiteSpace = 'nowrap';
            changed = true;
          }
        }
      }
      if (changed) this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
    }
  },
  textFormatBold: {
    checked: function checked() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      for (var i = 0; i < selectedCells.length; ++i) {
        if (fontWeightOfElt(selectedCells[i]) !== 'bold') return false;
      }
      return true;
    },
    available: hasSelectedCell,
    exec: function exec(flag) {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      var changed = false;
      var cell;
      for (var i = 0; i < selectedCells.length; ++i) {
        cell = selectedCells[i];
        if (fontWeightOfElt(cell) === 'bold') {
          if (!flag) {
            cell.style.fontWeight = 'normal';
            changed = true;
          }
        } else {
          if (flag) {
            cell.style.fontWeight = 'bold';
            changed = true;
          }
        }
      }
      if (changed) this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
    }
  },
  textFormatItalic: {
    checked: function checked() {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      for (var i = 0; i < selectedCells.length; ++i) {
        if (fontStyleOfElt(selectedCells[i]) !== 'italic') return false;
      }
      return true;
    },
    available: hasSelectedCell,
    exec: function exec(flag) {
      var selectedCells = this.context.selectCtrl.selectedCells;
      if (!selectedCells.length) return false;
      var changed = false;
      var cell;
      for (var i = 0; i < selectedCells.length; ++i) {
        cell = selectedCells[i];
        if (fontStyleOfElt(cell) === 'italic') {
          if (!flag) {
            cell.style.fontStyle = 'normal';
            changed = true;
          }
        } else {
          if (flag) {
            cell.style.fontStyle = 'italic';
            changed = true;
          }
        }
      }
      if (changed) this.lcEmitter.emit(EV_CELL_DATA_CHANGE);
    }
  }
};

/***/ }),

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

"use strict";


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.ContextCaptor = ContextCaptor;
exports["default"] = void 0;
__webpack_require__(85843);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _Vec = _interopRequireDefault(__webpack_require__(73316));
__webpack_require__(26155);
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _BoardTable = _interopRequireDefault(__webpack_require__(76372));
var _utils = __webpack_require__(84512);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
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 _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var supportContextEvent = false;
var isMobile = _BrowserDetector["default"].isMobile;

/**
 * @extends AElement
 * @constructor
 */
function ContextCaptor() {
  this.attachedElt = null;
  this.$textarea = $('textarea', this).attr('readonly', 'true').on('contextmenu', this.eventHandler.contextmenu, true);
  this._ss = 0;
  this._isTouch = false;
  /**
   this._target = null;
   * @type {Vec2}
   */
  this._posStart = null;
  /**
   * @type {Vec2}
   */
  this._posCurrent = null;
  this._touchId = -100;
  this._longPressTimeout = -1;
  this._removeTimeout = -1;
  this._fireContextMenuTimeout = -1;
  this.$target = null;
  this._pointerSession = 0;
  this._lastContextSession = 0;
  this.mousedownEvent = null;
  this.sync = Promise.resolve();
}
;
ContextCaptor.prototype.attachTo = function (elt) {
  if (this.attachedElt) {
    this.attachedElt.removeEventListener('mousedown', this.eventHandler.mousedown);
    this.attachedElt.removeEventListener('touchstart', this.eventHandler.mousedown);
    this.attachedElt = null;
  }
  this.attachedElt = elt;
  if (this.attachedElt) {
    this.attachedElt.addEventListener('mousedown', this.eventHandler.mousedown);
    this.attachedElt.addEventListener('touchstart', this.eventHandler.mousedown);
  }
  return this;
};
ContextCaptor.tag = 'ContextCaptor'.toLowerCase();
ContextCaptor.render = function () {
  return _({
    "class": ['absol-context-menu-anchor'],
    extendEvent: 'requestcontextmenu',
    child: ['textarea']
  });
};
ContextCaptor.prototype.showContextMenu = function (x, y, props, onSelectItem) {
  var self = this;
  var anchor = _('.as-context-menu-ctn.absol-context-menu-anchor' + (isMobile ? '.as-anchor-modal' : '')).addTo(document.body);
  var finish = function finish(event) {
    document.removeEventListener('click', finish);
    document.removeEventListener('touchcancel', finish);
    document.removeEventListener('touchend', finish);
    document.removeEventListener('contextmenu', finish);
    anchor.off('click', touchModal);
    self.off('requestcontextmenu', finish);
    setTimeout(function () {
      anchor.selfRemove(); //
    }, 10);
  };
  function touchModal(event) {
    if (event.target.classList && event.target.classList.contains('as-anchor-modal')) {
      finish(event);
    }
  }
  var vmenu = _({
    tag: 'vmenu',
    props: props,
    on: {
      press: onSelectItem || function () {}
    }
  }).addTo(anchor);
  setTimeout(function () {
    if (!isMobile) {
      var screenSize = _Dom["default"].getScreenSize();
      var menuBound = vmenu.getBoundingClientRect();
      if (x + menuBound.width > screenSize.width - 17) {
        x -= menuBound.width;
      }
      if (y + menuBound.height > screenSize.height - 17) {
        y -= menuBound.height;
      }
      anchor.addStyle({
        left: x + 'px',
        top: y + 'px'
      });
    }
    anchor.addClass('absol-active');
    (0, _ACore.$$)('VMenuItem'.toLowerCase(), vmenu).forEach(function (e) {
      if (e.autoFixParentSize) e.autoFixParentSize();
    });
  }, 30);
  setTimeout(function () {
    document.addEventListener('click', finish);
    document.addEventListener('contextmenu', finish);
    self.on('requestcontextmenu', finish);
    anchor.on('click', touchModal);
  }, 10);
};
ContextCaptor.prototype._checkNeedHandle = function (target) {
  var current = target;
  var needHandle = false;
  while (current && !needHandle && !current.classList.contains('as-system-context-menu')) {
    if (current.isSupportedEvent && current.isSupportedEvent('contextmenu')) needHandle = true;
    current = current.parentElement;
  }
  return needHandle;
};
ContextCaptor.prototype._fireContextMenuEvent = function () {
  if (this._lastContextSession >= this._pointerSession) return false; // prevent fire multi-times in a pointer session
  var showed = false;
  this._lastContextSession = this._pointerSession;
  var baseEventData = {
    clientX: this._posCurrent.x,
    clientY: this._posCurrent.y,
    target: this.$target
  };
  this.emit('requestcontextmenu', baseEventData, this);
  var self = this;
  var propagation = true;
  var localEvent = Object.assign({
    clientX: this._posCurrent.x,
    clientY: this._posCurrent.y,
    target: this.$target,
    showContextMenu: function showContextMenu(props, onSelectItem) {
      showed = true;
      self.sync = self.sync.then(function () {
        return new Promise(function (rs) {
          setTimeout(function () {
            self.showContextMenu(self._posCurrent.x, self._posCurrent.y, props, onSelectItem);
            rs();
          }, 30);
        });
      });
    },
    stopPropagation: function stopPropagation() {
      propagation = false;
    }
  }, baseEventData);
  Object.defineProperty(localEvent, 'selectedText', {
    get: function get() {
      return (0, _utils.getSelectionText)();
    }
  });
  var current = this.$target;
  while (current && propagation) {
    if (current.isSupportedEvent && current.isSupportedEvent('contextmenu')) {
      current.emit('contextmenu', localEvent, current, this);
    }
    current = current.parentElement;
  }
  return showed;
};

/**
 * @type {ContextCaptor}
 */
ContextCaptor.eventHandler = {};
ContextCaptor.eventHandler.mousedown = function (event) {
  if (this._touchId != -100) return;
  this._pointerSession++;
  var target;
  var isTouch;
  var touchId;
  var posCurrent;
  var pointer;
  if (event.type == 'touchstart') {
    isTouch = true;
    pointer = event.changedTouches[0];
    touchId = pointer.identifier;
  } else {
    isTouch = false;
    touchId = -1;
    pointer = event;
  }
  target = pointer.target;
  posCurrent = new _Vec["default"](pointer.clientX, pointer.clientY);
  if (isTouch) {
    var dragzone = _BoardTable["default"].prototype._findDragZone(target);
    if (dragzone) return;
    var thisCT = this;
    this._longPressTimeout = setTimeout(function () {
      if (!thisCT._checkNeedHandle(target)) return;
      if (thisCT._removeTimeout > 0) {
        clearTimeout(thisCT._removeTimeout);
        thisCT._removeTimeout = -1;
      }
      thisCT._ss++;
      thisCT.moveTo(thisCT._posCurrent);
      thisCT.active(true);
      thisCT._longPressTimeout = -1;
      if (thisCT._fireContextMenuTimeout >= 0) {
        clearTimeout(thisCT._fireContextMenuTimeout);
      }
      // show if device not support contextmenu event (after 700ms)
      thisCT._fireContextMenuTimeout = setTimeout(function () {
        if (!supportContextEvent) {
          thisCT._fireContextMenuEvent();
        }
      }, 300);
    }, 400);
    this.$target = target;
    this._isTouch = isTouch;
    this._touchId = touchId;
    this._posCurrent = posCurrent;
    this._posStart = posCurrent;
    document.addEventListener('touchmove', thisCT.eventHandler.mousemove);
    document.addEventListener('touchend', thisCT.eventHandler.mousefinish);
    document.addEventListener('touchcancel', thisCT.eventHandler.mousefinish);
  } else {
    if (_EventEmitter["default"].isMouseRight(event) && this._checkNeedHandle(target)) {
      if (this._removeTimeout > 0) {
        clearTimeout(this._removeTimeout);
        this._removeTimeout = -1;
      }
      this.$target = target;
      this._isTouch = isTouch;
      this._posCurrent = posCurrent;
      this._posStart = posCurrent;
      this._touchId = touchId;
      this._ss++;
      this.moveTo(this._posCurrent);
      this.active(true);
      document.addEventListener('mousemove', this.eventHandler.mousemove);
      document.addEventListener('mouseup', this.eventHandler.mousefinish);
      document.addEventListener('mouseleave', this.eventHandler.mousefinish);
    }
  }
};

/**
 * @param {Vec2} pos
 */
ContextCaptor.prototype.moveTo = function (pos) {
  this.addStyle({
    left: pos.x - 80 + 'px',
    top: pos.y - 80 + 'px'
  });
};
ContextCaptor.prototype.active = function (flag) {
  if (flag) this.addClass('absol-active');else this.removeClass('absol-active');
};
ContextCaptor.eventHandler.mousemove = function (event) {
  var isTouch = this._isTouch;
  var touchId;
  var pointer;
  var posCurrent;
  if (isTouch) {
    pointer = event.changedTouches[0];
    touchId = pointer.identifier;
  } else {
    isTouch = false;
    touchId = -1;
    pointer = event;
  }
  if (touchId != this._touchId) return;
  posCurrent = new _Vec["default"](pointer.clientX, pointer.clientY);
  this._posCurrent = posCurrent;
  if (isTouch) {
    if (this._posStart.sub(posCurrent).abs() > 10) this.eventHandler.mousefinish(event);
  }
  this.moveTo(posCurrent);
};
ContextCaptor.eventHandler.mousefinish = function (event) {
  var isTouch = this._isTouch;
  var touchId;
  var pointer;
  if (isTouch) {
    pointer = event.changedTouches[0];
    touchId = pointer.identifier;
  } else {
    isTouch = false;
    touchId = -1;
    pointer = event;
  }
  if (touchId != this._touchId) return;
  if (isTouch) {
    document.removeEventListener('touchmove', this.eventHandler.mousemove);
    document.removeEventListener('touchend', this.eventHandler.mousefinish);
    document.removeEventListener('touchcancel', this.eventHandler.mousefinish);
    if (this._longPressTimeout > 0) {
      clearTimeout(this._longPressTimeout);
      this._longPressTimeout = -1;
    }
  } else {
    document.removeEventListener('mousemove', this.eventHandler.mousemove);
    document.removeEventListener('mouseup', this.eventHandler.mousefinish);
    document.removeEventListener('mouseleave', this.eventHandler.mousefinish);
  }
  this._touchId = -100;
  if (this._fireContextMenuTimeout >= 0) {
    clearTimeout(this._fireContextMenuTimeout);
  }
  var thisCT = this;
  this._removeTimeout = setTimeout(function () {
    thisCT.active(false);
    thisCT._removeTimeout = -1;
  }, 1);
};
ContextCaptor.eventHandler.contextmenu = function (event) {
  supportContextEvent = true;
  event.preventDefault();
  this._fireContextMenuEvent();
};
ContextCaptor.auto = function () {
  if (ContextCaptor.$elt) return;
  ContextCaptor.$elt = _('contextcaptor');
  _Dom["default"].documentReady.then(function () {
    ContextCaptor.$elt.addTo(document.body);
    ContextCaptor.$elt.attachTo(document.body);
  });
};
_ACore["default"].install(ContextCaptor);
var _default = ContextCaptor;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _Dom = __webpack_require__(64821);
var _Tooltip = _interopRequireDefault(__webpack_require__(54946));
var _Clipboard = __webpack_require__(89085);
var _Snackbar = _interopRequireDefault(__webpack_require__(96206));
var _MultiLanguageText = _interopRequireDefault(__webpack_require__(8177));
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 _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); }
/***
 * @extends {AElement}
 * @constructor
 */
function CopyableIconTooltip() {
  this._content = '';
  this.$content = null;
  this._value = '';
  this._icon = 'span.mdi.mdi-information-outline';
  this.$icon = (0, _ACore.$)('.as-cit-icon', this);
  this.tooltip = new TooltipController(this);
}
CopyableIconTooltip.tag = 'CopyableIconTooltip'.toLowerCase();
CopyableIconTooltip.render = function () {
  return (0, _ACore._)({
    tag: 'button',
    "class": 'as-copyable-icon-tooltip',
    child: 'span.mdi.mdi-information-outline.as-cit-icon'
  });
};
CopyableIconTooltip.property = {};
CopyableIconTooltip.property.content = {
  set: function set(value) {
    this._content = value || '';
    if (_typeof(this._content) === "object") {
      this.$content = (0, _ACore._)(this._content);
    } else if (typeof this._content === "string") {
      this.$content = (0, _ACore._)({
        tag: 'span',
        style: {
          'white-space': 'pre-wrap'
        },
        props: {
          innerHTML: this._content
        }
      });
      _MultiLanguageText["default"].replaceAll(this.$content);
    }
  },
  get: function get() {
    return this._content;
  }
};
CopyableIconTooltip.property.icon = {
  set: function set(value) {
    value = value || '';
    this._icon = value;
    this.clearChild();
    this.$icon = null;
    if (value) {
      if ((0, _Dom.isDomNode)(value)) {
        if (value.parentElement) value = value.cloneNode(true);
      } else value = (0, _ACore._)(value);
      this.$icon = (0, _ACore.$)(value).addClass('as-cit-icon');
      this.addChild(this.$icon);
    }
  },
  get: function get() {
    return this._icon;
  }
};
CopyableIconTooltip.property.value = {
  set: function set(value) {
    this._value = value;
  },
  get: function get() {
    return this._value;
  }
};

/***
 *
 * @param {CopyableIconTooltip} elt
 * @constructor
 */
function TooltipController(elt) {
  /***
   *
   * @type {CopyableIconTooltip}
   */
  this.elt = elt;
  this.elt.on('mouseenter', this.ev_mouseEnter.bind(this));
  this.elt.on('mouseleave', this.ev_mouseLeave.bind(this));
  this.elt.on('click', this.ev_click.bind(this));
  this.session = -2;
  this.timeout = -1;
}
TooltipController.prototype.ev_mouseEnter = function () {
  clearTimeout(this.timeout);
  if (this.elt.$content) this.session = _Tooltip["default"].show(this.elt, this.elt.$content, 'auto');
};
TooltipController.prototype.ev_mouseLeave = function () {
  var _this = this;
  this.timeout = setTimeout(function () {
    _Tooltip["default"].close(_this.session);
  }, 500);
};
TooltipController.prototype.ev_click = function () {
  var text;
  if (this.elt._value !== null && this.elt._value !== undefined) {
    text = this.elt._value + '';
  } else if (typeof this.elt._content === "string") {
    text = this.elt._content;
  } else {
    text = this.elt.$content.innerText;
  }
  (0, _Clipboard.copyText)(text);
  _Snackbar["default"].show('Copied: ' + text);
};
var _default = CopyableIconTooltip;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Element = _interopRequireDefault(__webpack_require__(55781));
__webpack_require__(40466);
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _int = __webpack_require__(65909);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function CountdownClock() {
  var thisC = this;
  this.$attachhook = _('attachhook').addTo(this).on('attached', function () {
    _ResizeSystem["default"].add(this);
    this.requestUpdateSize();
    if (thisC.autoStart) {
      thisC.start();
    }
  });
  this.$attachhook.requestUpdateSize = this._updateBorder.bind(this);
  this._tick = this._tick.bind(this);
  this.$border = $(".as-countdown-clock-border", this);
  this.$min = $(".as-countdown-clock-min", this);
  this.$sec = $(".as-countdown-clock-sec", this);
  this._prevText = -1;
  this._startTime = new Date().getTime();
  this._totalSecond = 60;
  this._remainSecond = 0;
  this.totalSecond = 60;
  this.remainSecond = 0;
  this._intvId = -1;
}
CountdownClock.tag = 'CountdownClock'.toLowerCase();
CountdownClock.render = function () {
  return _({
    extendEvent: ['finish', 'update'],
    "class": 'as-countdown-clock',
    child: [{
      "class": 'as-countdown-clock-text',
      child: [{
        tag: 'span',
        "class": 'as-countdown-clock-min',
        child: {
          text: 0
        }
      }, {
        text: ':'
      }, {
        tag: 'span',
        "class": 'as-countdown-clock-sec',
        child: {
          text: '60'
        }
      }]
    }, {
      "class": 'as-countdown-clock-border-wrapper',
      child: {
        "class": 'as-countdown-clock-border'
      }
    }]
  });
};
CountdownClock.prototype._makePolygon = function (end) {
  var n = Math.ceil(Math.max(end / 0.2, 2));
  var fan = Array(n).fill(0).map(function (u, i) {
    var angle = -Math.PI / 2 + end * i / n;
    return [(0, _int.numberAutoFixed)(50 + 60 * Math.cos(angle), 5) + '%', (0, _int.numberAutoFixed)(50 + 60 * Math.sin(angle), 5) + '%'].join(' ');
  });
  fan.push('50% 50%');
  return 'polygon(' + fan.join(', ') + ')';
};
CountdownClock.prototype._setBorderValue = function (val) {
  if (val >= 1 || !isFinite(val)) {
    this.$border.removeStyle("clip-path");
    return;
  }
  var bound = this.$border.getBoundingClientRect();
  var angle = val * Math.PI * 2;
  this.$border.addStyle("-webkit-clip-path", this._makePolygon(angle));
  this.$border.addStyle("clip-path", this._makePolygon(angle));
};
CountdownClock.prototype._updateBorder = function () {
  this._setBorderValue(this._remainSecond / Math.max(0.001, this._totalSecond));
};
CountdownClock.prototype._updateText = function () {
  if (this._prevText === this.remainSecond) return;
  var remainSecond = this.remainSecond;
  var min = Math.floor(remainSecond / 60);
  var sec = remainSecond % 60;
  this.$sec.innerHTML = (sec < 10 ? "0" : "") + sec;
  this.$min.innerHTML = min;
};
CountdownClock.prototype._tick = function () {
  var now = new Date().getTime();
  var prevSec = this.remainSecond;
  this.remainSecond = Math.max(0, Math.ceil(this.totalSecond - (now - this._startTime) / 1000));
  if (prevSec !== this.remainSecond) {
    this._updateText();
    this.emit('update', {
      target: this,
      type: 'update'
    }, this);
    if (this.remainSecond === 0) {
      clearInterval(this._intvId);
      this._intvId = -1;
      this.emit('finish', {
        target: this,
        type: 'finish'
      }, this);
    }
  }
};
CountdownClock.prototype.start = function () {
  if (this.remainSecond == 0) this.remainSecond = this.totalSecond;
  this._startTime = new Date().getTime() - (this.totalSecond - this.remainSecond) * 1000;
  this.resume();
};
CountdownClock.prototype.resume = function () {
  if (this._intvId > 0) return;
  this._intvId = setInterval(this._tick, 200);
};
CountdownClock.prototype.pause = function () {
  if (this._intvId > 0) {
    clearInterval(this._intvId);
    this._intvId = -1;
  }
};
CountdownClock.prototype.stop = function () {
  this.pause();
  this.remainSecond = 0;
};
CountdownClock.prototype.reset = function () {
  this.remainSecond = this.totalSecond;
  this._startTime = new Date().getTime();
};
CountdownClock.property = {};
CountdownClock.property.totalSecond = {
  set: function set(value) {
    if (!(value >= 0)) {
      value = 0;
    }
    this._totalSecond = value;
    this._updateBorder();
  },
  get: function get() {
    return this._totalSecond;
  }
};
CountdownClock.property.remainSecond = {
  set: function set(value) {
    if (!(value >= 0)) {
      value = 0;
    }
    this._remainSecond = value;
    this._updateBorder();
    this._updateText();
  },
  get: function get() {
    return this._remainSecond;
  }
};
_ACore["default"].install(CountdownClock);
var _default = CountdownClock;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
exports.remainSecondToText = remainSecondToText;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
__webpack_require__(40466);
__webpack_require__(82261);
var _datetime = __webpack_require__(58286);
var _utils = __webpack_require__(84512);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var tokenCache = {};
function remainSecondToText(remainSecond, format) {
  var tokens = tokenCache[format];
  if (!tokens) {
    tokens = (format.match(new RegExp(_datetime.DATE_TIME_TOKEN_RGX.source, 'g')) || []).reduce(function (ac, cr) {
      ac[cr] = true;
      return ac;
    }, {});
    tokenCache[format] = tokens;
  }
  var newText;
  var sec, min, hour;
  sec = Math[tokens['ms'] || tokens['mss'] ? 'floor' : 'ceil'](remainSecond);
  min = Math.floor(remainSecond / 60);
  hour = Math.floor(remainSecond / 60 / 60);
  newText = format.replace(new RegExp(_datetime.DATE_TIME_TOKEN_RGX.source, 'g'), function (all) {
    switch (all) {
      case 'D':
        return Math.floor(remainSecond / 60 / 60 / 24) + '';
      case 'HH':
      case 'H':
      case 'hh':
        if (tokens['D']) {
          return (0, _utils.zeroPadding)(hour % 24, all.length);
        } else {
          return (0, _utils.zeroPadding)(hour, all.length);
        }
      case 'mm':
      case 'M':
      case 'MM':
        if (tokens['HH'] || tokens['hh']) {
          return (0, _utils.zeroPadding)(min % 60, all.length);
        } else {
          return (0, _utils.zeroPadding)(min, all.length);
        }
      case 'ss':
      case 'S':
      case 'SS':
        if (tokens['m'] || tokens['mm']) {
          return (0, _utils.zeroPadding)(sec % 60, all.length);
        } else {
          return (0, _utils.zeroPadding)(sec, all.length);
        }
      case 'cs':
        return (0, _utils.zeroPadding)(Math.ceil(remainSecond * 100) % 100, 2);
      case 'ms':
        return (0, _utils.zeroPadding)(Math.ceil(remainSecond * 1000) % 1000, 3);
      default:
        return all;
    }
  });
  return newText;
}

/***
 * @extends AElement
 * @constructor
 */
function CountdownText() {
  this.addClass('as-countdown-text');
  this.defineEvent('update');
  this.defineEvent('finish');
  this.text = '';
  this._format = 'HH:mm';
  this.format = 'HH:mm';
  this.fps = 5;
  this._finishTime = null;
  this.finishTime = null;
  this['_tick'] = this._tick.bind(this);
  setTimeout(this.start.bind(this), 0); //auto start
  /***
   * @type {number}
   * @name remainSecond
   * @memberOf CountdownText#
   */
  /***
   * @type {Date}
   * @name finishTime
   * @memberOf CountdownText#
   */

  /***
   * @type {string}
   * @name format
   * @memberOf CountdownText#
   */
}

CountdownText.tag = 'CountdownText'.toLowerCase();
CountdownText.render = function () {
  return _('span');
};
CountdownText.prototype.buildinFormat = {
  'standard': function standard(remainSecond) {
    if (remainSecond >= 24 * 3600) {
      return remainSecondToText(remainSecond, 'D ngày HH:mm:ss');
    } else {
      return remainSecondToText(remainSecond, 'HH:mm:ss');
    }
  }
};
CountdownText.prototype._tick = function () {
  var remainSecond = this.remainSecond;
  var prevText = this.text;
  var newText;
  var format = this._format;
  if (this.buildinFormat[format]) format = this.buildinFormat[format];
  if (typeof format === "function") {
    newText = format.call(this, remainSecond);
  } else if (typeof format === "string") {
    newText = remainSecondToText(remainSecond, format);
  }
  if (prevText !== newText) {
    this.text = newText;
    this.innerHTML = newText;
    this.emit('update', {
      target: this,
      type: 'update'
    }, this);
  }
  if (remainSecond <= 0) {
    this.stop();
    this.emit('finish', {
      target: this,
      type: 'update'
    }, this);
  }
};
CountdownText.prototype.start = function () {
  this.resume();
};
CountdownText.prototype.resume = function () {
  if (this._intvId > 0) return;
  this._intvId = setInterval(this._tick, 1000 / this.fps);
};
CountdownText.prototype.pause = function () {
  if (this._intvId > 0) {
    clearInterval(this._intvId);
    this._intvId = -1;
  }
};
CountdownText.prototype.stop = function () {
  this.pause();
};
CountdownText.property = {};
CountdownText.property.format = {
  set: function set(value) {
    if (typeof value === "string" || typeof value === 'function') {
      this._format = value || 'HH:mm';
    } else {
      this._format = 'HH:mm';
    }
  },
  get: function get() {
    return this._format;
  }
};
CountdownText.property.remainSecond = {
  set: function set(value) {
    if (!(value >= 0)) {
      value = 0;
    }
    this.finishTime = new Date(new Date().getTime() + value);
  },
  get: function get() {
    if (this.finishTime !== null) {
      return Math.max(0, (this.finishTime.getTime() - new Date().getTime()) / 1000);
    } else return null;
  }
};
CountdownText.property.finishTime = {
  set: function set(value) {
    if (typeof value === "number" || typeof value === 'string') {
      value = new Date(value);
    }
    if (!value || !value.getTime) value = null;
    if (value && value.getTime && isNaN(value.getTime())) value = null;
    this._finishTime = value;
  },
  get: function get() {
    return this._finishTime;
  }
};
CountdownText.property.fps = {
  set: function set(value) {
    this._fps = (0, _utils.isRealNumber)(value) ? value : 200;
    if (this._intvId > 0) {
      clearInterval(this._intvId);
      this._intvId = setInterval(this._tick, 1000 / this._fps);
    }
  },
  get: function get() {
    return this._fps;
  }
};
_ACore["default"].install(CountdownText);
var _default = CountdownText;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ExpTree = _interopRequireDefault(__webpack_require__(87326));
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(87612);
var _EventEmitter = __webpack_require__(46833);
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 ExpTree
 * @constructor
 */
function DVExpTree() {
  this.injectInput();
}
DVExpTree.tag = 'DVExpTree'.toLowerCase();
DVExpTree.render = function () {
  return (0, _ACore._)({
    tag: _ExpTree["default"].tag,
    extendEvent: ['radiochange', 'indexclick'],
    "class": 'as-dv-exp-tree'
  }, true);
};
DVExpTree.prototype.injectInput = function () {
  this.$radio = (0, _ACore._)({
    tag: 'radiobutton',
    on: {
      change: this.eventHandler.radioChange
    }
  });
  this.$node.insertBefore(this.$radio, this.$node.$extIcon);
  this.$index = (0, _ACore._)({
    tag: 'span',
    "class": 'as-dv-exp-tree-index',
    on: {
      click: this.eventHandler.indexClick
    }
  });
  this.$node.insertBefore(this.$index, this.$node.$desc);
  this.$node.on('click', this.eventHandler.clickInNode);
};
DVExpTree.property = {};
DVExpTree.property.radioName = {
  enumerable: true,
  set: function set(value) {
    if (!value) {
      this.removeClass('as-has-radio');
      this.$radio.name = undefined;
    } else {
      this.addClass('as-has-radio');
      this.$radio.name = value + '';
    }
  },
  get: function get() {
    return this.$radio.name;
  }
};
DVExpTree.property.radioValue = {
  enumerable: true,
  set: function set(value) {
    this.$radio.value = value;
  },
  get: function get() {
    return this.$radio.value;
  }
};
DVExpTree.property.radioChecked = {
  enumerable: true,
  set: function set(value) {
    this.$radio.checked = value;
  },
  get: function get() {
    return this.$radio.checked;
  }
};
DVExpTree.property.hasIndex = {
  enumerable: true,
  set: function set(value) {
    if (value) this.addClass('as-has-index-input');else this.removeClass('as-has-index-input');
  },
  get: function get() {
    return this.hasClass('as-has-index-input');
  }
};
DVExpTree.property.indexValue = {
  enumerable: true,
  set: function set(value) {
    this.$index.innerHTML = value;
  },
  get: function get() {
    return this.$index.innerHTML;
  }
};
DVExpTree.eventHandler = {};
DVExpTree.eventHandler.radioChange = function (event) {
  this.emit('radiochange', Object.assign({}, event, {
    target: this,
    radioElt: this.$radio
  }), this);
};
DVExpTree.eventHandler.indexClick = function (event) {
  this.emit('indexclick', Object.assign({}, event, {
    target: this,
    indexInput: this.$index
  }), this);
};
DVExpTree.eventHandler.clickInNode = function (event) {
  if ((0, _EventEmitter.hitElement)(this.$index, event) || (0, _EventEmitter.hitElement)(this.$radio, event) || (0, _EventEmitter.hitElement)(this.$node.$toggleIcon, event)) return;
  if ((0, _EventEmitter.hitElement)(this.$node, event) && this.radioName) this.$radio.click();
};
_ACore["default"].install(DVExpTree);
var _default = DVExpTree;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _DateInYearPicker = _interopRequireDefault(__webpack_require__(96604));
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _EventEmitter = __webpack_require__(46833);
var _utils = __webpack_require__(84512);
var _datetime = __webpack_require__(58286);
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; }
/***
 * @extends AElement
 * @constructor
 */
function DateInYearInput() {
  this._format = 'dd/MM';
  this._value = null;
  this.$clearBtn = (0, _ACore.$)('.as-time-input-clear-btn', this).on('click', this.clear.bind(this, true));
  this.$input = (0, _ACore.$)('input', this);
  this.on('click', this.eventHandler.click);
}
DateInYearInput.tag = 'DateInYearInput'.toLowerCase();
DateInYearInput.render = function () {
  return (0, _ACore._)({
    extendEvent: ['change'],
    "class": ['as-date-time-input', 'as-date-in-year-input', 'as-empty'],
    child: [{
      tag: 'input',
      "class": 'as-date-time-input-text',
      attr: {
        ondrop: "return false;",
        readOnly: true
      },
      props: {
        value: 'dd/MM'
      }
    }, {
      tag: 'button',
      "class": 'as-time-input-clear-btn',
      child: 'span.mdi.mdi-close-circle'
    }, {
      tag: 'button',
      "class": 'as-date-time-input-icon-btn',
      child: 'span.mdi.mdi-calendar-today'
    }]
  });
};
DateInYearInput.prototype.share = {
  $follower: null,
  $picker: null,
  $input: null
};
DateInYearInput.prototype._preparePicker = function () {
  if (this.share.$picker) return;
  this.share.$picker = (0, _ACore._)({
    tag: _DateInYearPicker["default"].tag,
    "class": 'as-dropdown-box-common-style'
  });
  this.share.$follower = (0, _ACore._)({
    tag: _Follower["default"].tag,
    "class": 'as-date-in-year-follower',
    child: this.share.$picker
  });
};
DateInYearInput.prototype.clear = function (userAction, event) {
  var pValue = this.value;
  this.value = null;
  if (pValue) {
    this.emit('change', {
      type: 'change',
      action: 'clear',
      target: this,
      originalEvent: event
    }, this);
  }
};
DateInYearInput.prototype._attachPicker = function () {
  this._preparePicker();
  if (this.share.$input === this) return;
  if (this.share.$input) this.share.$input._releasePicker();
  this.share.$input = this;
  this.share.$follower.addTo(document.body);
  this.share.$follower.followTarget = this;
  this.share.$follower.sponsorElement = this;
  this.share.$picker.value = this._value;
  this.share.$picker.on('change', this.eventHandler.pickerChange);
  setTimeout(function () {
    document.addEventListener('click', this.eventHandler.clickOut);
  }.bind(this), 0);
};
DateInYearInput.prototype._releasePicker = function () {
  if (this.share.$input !== this) return;
  var cValue = this._value;
  var value = this.share.$picker.value;
  var nValue = this._normalizeValue(value);
  this.share.$input = null;
  this.share.$picker.followTarget = null;
  this.share.$follower.remove();
  this.share.$picker.off('change', this.eventHandler.pickerChange);
  document.removeEventListener('click', this.eventHandler.clickOut);
  var changed = !cValue !== !nValue;
  if (nValue && !changed) {
    changed = cValue.date === nValue.date && cValue.month === nValue.month;
  }
  if (changed) {
    this._value = value;
    this.emit('change', {
      type: 'change',
      value: nValue,
      target: this
    }, this);
  }
};
DateInYearInput.prototype._normalizeValue = function (value) {
  if (!value) return null;
  var m = Math.min(11, Math.max(0, Math.floor(value.month)));
  if (isNaN(m)) return null;
  var dim = (0, _datetime.compareDate)((0, _datetime.nextMonth)(new Date(2000, m, 1)), new Date(2000, m, 1));
  var d = Math.min(dim, Math.max(1, Math.floor(value.date)));
  if (isNaN(d)) return null;
  return {
    date: d,
    month: m
  };
};
DateInYearInput.prototype._updateValueText = function () {
  var value = this._value;
  if (value) {
    this.$input.value = this._format.replace(new RegExp(_datetime.DATE_TIME_TOKEN_RGX.source, 'g'), function (full) {
      switch (full) {
        case 'dd':
        case 'd':
          if ((0, _utils.isRealNumber)(value.date)) {
            return (0, _utils.zeroPadding)(value.date, full.length);
          }
          return full;
        case 'M':
        case 'MM':
          if ((0, _utils.isRealNumber)(value.month)) {
            return (0, _utils.zeroPadding)(value.month + 1, full.length);
          }
          return full;
        default:
          return full;
      }
    });
  } else {
    this.$input.value = this._format;
  }
  if (this.$input.value === this._format) {
    this.addClass('as-empty');
  } else {
    this.removeClass('as-empty');
  }
};
DateInYearInput.property = {};
DateInYearInput.property.value = {
  set: function set(value) {
    value = this._normalizeValue(value);
    this._value = value;
    this._updateValueText();
  },
  get: function get() {
    return this._normalizeValue(this._value);
  }
};
DateInYearInput.property.notNull = {
  set: function set(value) {
    if (value) {
      this.addClass('as-must-not-null');
    } else {
      this.removeClass('as-must-not-null');
    }
  },
  get: function get() {
    return this.hasClass('as-must-not-null');
  }
};
DateInYearInput.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
      this.$input.disabled = true;
    } else {
      this.removeClass('as-disabled');
      this.$input.disabled = false;
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
DateInYearInput.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
      this.$input.readOnly = true;
    } else {
      this.removeClass('as-read-only');
      this.$input.readOnly = false;
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};

/***
 * @memberOf DateInYearInput#
 * @type {{}}
 */
DateInYearInput.eventHandler = {};

/***
 * @this DateInYearInput
 * @param event
 */
DateInYearInput.eventHandler.click = function (event) {
  if (this.readOnly || (0, _EventEmitter.hitElement)(this.$clearBtn, event)) return;
  this._attachPicker();
};

/***
 * @this DateInYearInput
 * @param event
 */
DateInYearInput.eventHandler.clickOut = function (event) {
  if ((0, _EventEmitter.hitElement)(this.share.$follower, event)) return;
  this._releasePicker();
};
DateInYearInput.eventHandler.pickerChange = function () {
  this._value = this.share.$picker.value;
  this._updateValueText();
};
_ACore["default"].install(DateInYearInput);
var _default = DateInYearInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


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;
__webpack_require__(91439);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _DomSignal = _interopRequireDefault(__webpack_require__(47341));
var _datetime = __webpack_require__(58286);
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; }
/***
 * @extends AElement
 * @constructor
 */
function DateInYearPicker() {
  this._month = null;
  this._date = null;
  this.$domSignal = (0, _ACore._)('attachhook').addTo(this);
  this.domSignal = new _DomSignal["default"](this.$domSignal);
  this._setupMonth();
  this._setupDate();
}
DateInYearPicker.tag = 'DateInYearPicker'.toLowerCase();
DateInYearPicker.render = function () {
  return (0, _ACore._)({
    extendEvent: ['change'],
    "class": 'as-date-in-year-picker',
    child: [{
      "class": 'as-date-in-year-picker-table',
      child: [{
        "class": 'as-date-in-year-picker-row',
        child: [{
          "class": 'as-date-in-year-picker-cell',
          child: {
            tag: 'span',
            child: {
              text: 'Month'
            }
          }
        }, {
          "class": 'as-date-in-year-picker-cell',
          child: {
            tag: 'span',
            child: {
              text: 'Date'
            }
          }
        }]
      }, {
        "class": 'as-date-in-year-picker-row',
        child: [{
          "class": 'as-date-in-year-picker-cell',
          child: {
            "class": 'as-date-in-year-picker-month-col',
            child: [{
              "class": 'as-date-in-year-picker-month-viewport',
              child: [{
                "class": 'as-date-in-year-picker-month-scroller',
                child: Array(36).fill(null).map(function (u, i) {
                  return {
                    tag: 'button',
                    "class": 'as-date-in-year-picker-month',
                    child: {
                      tag: 'span',
                      child: {
                        text: 1 + i % 12 + ''
                      }
                    },
                    props: {
                      monthL: i % 12
                    }
                  };
                })
              }]
            }, {
              tag: 'button',
              "class": ['as-date-in-year-picker-month-btn', 'as-up'],
              child: 'span.mdi.mdi-chevron-up'
            }, {
              tag: 'button',
              "class": ['as-date-in-year-picker-month-btn', 'as-down'],
              child: 'span.mdi.mdi-chevron-down'
            }]
          }
        }, {
          "class": 'as-date-in-year-picker-cell',
          child: {
            "class": 'as-date-in-year-picker-days',
            child: Array(5).fill(null).map(function (u, i) {
              return {
                "class": 'as-date-in-year-picker-week',
                child: Array(7).fill(null).map(function (u1, j) {
                  return {
                    "class": 'as-date-in-year-picker-day',
                    child: {
                      tag: 'span',
                      child: {
                        text: i * 7 + j + 1 + ''
                      }
                    }
                  };
                })
              };
            })
          }
        }]
      }]
    }]
  });
};
DateInYearPicker.prototype._setupMonth = function () {
  this._monthScrollDy = 0;
  this.$monthScroller = (0, _ACore.$)('.as-date-in-year-picker-month-scroller', this).on('scroll', this.eventHandler.monthScroll).once('wheel', this.eventHandler.monthScroll);
  this.$monthUpBtn = (0, _ACore.$)('.as-date-in-year-picker-month-btn.as-up', this).on('pointerdown', this.eventHandler.monthPressDown);
  this.$monthDownBtn = (0, _ACore.$)('.as-date-in-year-picker-month-btn.as-down', this).on('pointerdown', this.eventHandler.monthPressUp);
  this.$months = (0, _ACore.$$)('.as-date-in-year-picker-month', this);
  for (var i = 0; i < 36; ++i) {
    this.$months[i].on('click', this.eventHandler.clickMonth.bind(this, i % 12));
  }
};
DateInYearPicker.prototype._setupDate = function () {
  this.$days = (0, _ACore.$$)('.as-date-in-year-picker-day', this);
  var i;
  for (i = 31; i < 35; ++i) {
    this.$days[i].addStyle('visibility', 'hidden');
  }
  for (i = 0; i < 31; ++i) {
    this.$days[i].on('click', this.eventHandler.clickDate.bind(this, i + 1));
  }
};
DateInYearPicker.prototype.scrollIntoSelected = function () {
  if (!this.isDescendantOf(document.body)) {
    this.domSignal.emit('scrollIntoSelected');
    return;
  }
  var d = Infinity;
  var dy;
  var y;
  var ly, hy;
  var lineHeight = this.getFontSize() * 2;
  if (this._month !== null) {
    for (var k = 0; k < 3; ++k) {
      y = this._month * lineHeight + lineHeight * 12 * k;
      ly = this.$monthScroller.scrollTop;
      hy = ly + lineHeight * 4 - lineHeight;
      if (ly <= y && hy >= y) {
        dy = 0;
        break;
      }
      if (y < ly && ly - y < d) {
        d = ly - y;
        dy = y - ly;
      }
      if (y > hy && y - hy < d) {
        d = y - hy;
        dy = y - hy;
      }
    }
    this.$monthScroller.scrollTop += dy;
  }
};

/***
 * @memberOf DateInYearPicker#
 * @type {{}}
 */
DateInYearPicker.eventHandler = {};

/***
 * @this DateInYearPicker
 */
DateInYearPicker.eventHandler.monthPressDown = function () {
  document.addEventListener('pointerup', this.eventHandler.monthRelease);
  this._monthScrollDy = -8;
  this.eventHandler.monthTick();
};

/**
 * @this DateInYearPicker
 */
DateInYearPicker.eventHandler.monthPressUp = function () {
  document.addEventListener('pointerup', this.eventHandler.monthRelease);
  this._monthScrollDy = 8;
  this.eventHandler.monthTick();
};

/**
 * @this DateInYearPicker
 */
DateInYearPicker.eventHandler.monthTick = function () {
  if (!this._monthScrollDy) return;
  var d = this._monthScrollDy;
  var fontSize = this.getFontSize();
  if (this.$monthScroller.scrollTop + d < 0) d += fontSize * 2 * 12;
  this.$monthScroller.scrollTop += d;
  setTimeout(this.eventHandler.monthTick, 30);
};
DateInYearPicker.eventHandler.monthRelease = function () {
  document.removeEventListener('pointerup', this.eventHandler.monthRelease);
  this._monthScrollDy = 0;
};

/**
 * @this DateInYearPicker
 */
DateInYearPicker.eventHandler.monthScroll = function () {
  var scrollTop = this.$monthScroller.scrollTop;
  var fontSize = this.getFontSize();
  if (scrollTop < fontSize * 2 * 12) {
    this.$monthScroller.scrollTop += fontSize * 2 * 12;
  } else if (scrollTop > fontSize * 2 * 12 * 2) {
    this.$monthScroller.scrollTop -= fontSize * 2 * 12;
  }
};

/**
 * @this DateInYearPicker
 */
DateInYearPicker.eventHandler.clickMonth = function (month, event) {
  var pDate = this.date;
  if (this.month === month) return;
  this.month = month;
  this.emit('change', {
    type: 'change',
    originalEvent: event,
    target: this
  }, this);
};

/**
 * @this DateInYearPicker
 */
DateInYearPicker.eventHandler.clickDate = function (date, event) {
  if (this.date === date) return;
  this.date = date;
  this.emit('change', {
    type: 'change',
    originalEvent: event,
    target: this
  }, this);
};
DateInYearPicker.property = {};
DateInYearPicker.property.date = {
  set: function set(value) {
    if (typeof value !== 'number') value = null;
    var cM, dim;
    if (this._month === null) {
      dim = 31;
    } else {
      cM = new Date(2000, this._month, 1);
      dim = (0, _datetime.compareDate)((0, _datetime.nextMonth)(cM), cM);
    }
    if (typeof value === "number") value = Math.max(1, Math.min(dim, Math.floor(value)));
    if (isNaN(value)) value = null;
    if (this._date === value) return;
    if (this._date !== null) {
      this.$days[this._date - 1].removeClass('as-selected');
    }
    this._date = value;
    if (this._date !== null) {
      this.$days[this._date - 1].addClass('as-selected');
    }
  },
  get: function get() {
    return this._date;
  }
};
DateInYearPicker.property.month = {
  /***
   * @this DateInYearPicker
   * @param value
   */
  set: function set(value) {
    if (typeof value == 'number') {
      value = Math.max(0, Math.min(11, Math.floor(value)));
    } else value = null;
    if (isNaN(value)) value = null;
    if (this._month === value) return;
    if (this._month !== null) {
      this.$months[this._month].removeClass('as-selected');
      this.$months[this._month + 12].removeClass('as-selected');
      this.$months[this._month + 24].removeClass('as-selected');
    }
    this._month = value;
    var cM, dim;
    if (this._month !== null) {
      this.$months[this._month].addClass('as-selected');
      this.$months[this._month + 12].addClass('as-selected');
      this.$months[this._month + 24].addClass('as-selected');
      this.scrollIntoSelected();
      cM = new Date(2000, this._month, 1);
      dim = (0, _datetime.compareDate)((0, _datetime.nextMonth)(cM), cM);
    } else {
      dim = 31;
    }
    for (var i = 29; i < 31; ++i) {
      if (i < dim) {
        this.$days[i].removeStyle('visibility');
      } else {
        this.$days[i].addStyle('visibility', 'hidden');
      }
    }
    this.date = Math.min(this.date, dim);
  },
  get: function get() {
    return this._month;
  }
};
DateInYearPicker.property.value = {
  set: function set(value) {
    value = value || {
      month: null,
      date: null
    };
    this.month = value.month;
    this.date = value.date;
  },
  get: function get() {
    return {
      month: this.month,
      date: this.date
    };
  }
};
_ACore["default"].install(DateInYearPicker);
var _default = DateInYearPicker;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(56163);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _datetime = __webpack_require__(58286);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _DateTimeInput = _interopRequireDefault(__webpack_require__(37800));
var _utils = __webpack_require__(84512);
var _EventEmitter = __webpack_require__(46833);
var _DelaySignal = _interopRequireDefault(__webpack_require__(81809));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var STATE_NEW = 1;
var STATE_EDITED = 2;
var STATE_NONE = 0;

/***
 *
 * @param {Date} date
 * @param level
 * @returns {Date|null}
 */
var dateByLevel = function dateByLevel(date, level) {
  if (!date) return null;
  switch (level) {
    case 'week':
      return (0, _datetime.beginOfWeek)(date);
    case 'month':
      return (0, _datetime.beginOfMonth)(date);
    case 'quarter':
      return (0, _datetime.beginOfQuarter)(date);
    case 'year':
      return (0, _datetime.beginOfYear)(date);
    case 'date':
    default:
      return (0, _datetime.beginOfDay)(date);
  }
};
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/**
 * @extends AElement
 * @constructor
 */
function DateInput2() {
  this._lastValue = null;
  this._value = null;
  this._format = 'dd/MM/yyyy';
  this.$input = $('input', this);
  this._editingData = {};
  this.startDayOfWeek = (0, _datetime.getDefaultFirstDayOfWeek)();
  this.$text = this.$input;
  this.$text.on('mousedown', this.eventHandler.mouseDownInput).on('mouseup', this.eventHandler.mouseUpInput).on('dblclick', this.eventHandler.dblclickInput).on('keydown', this.eventHandler.keydown).on('blur', this.eventHandler.inputBlur).on('contextmenu', function (event) {
    event.preventDefault();
  });
  this.domSignal = new _DelaySignal["default"]();
  this.domSignal.on('request_auto_select', this._autoSelect.bind(this));
  this._min = new Date(1890, 0, 1, 0, 0, 0, 0);
  this._max = new Date(2090, 0, 1, 0, 0, 0, 0);
  this.$calendarBtn = $('.as-date-input-icon-ctn', this).on('click', this.eventHandler.clickCalendarBtn);
  this.$clearBtn = $('button.as-date-input-clear-btn', this).on('click', this.clear.bind(this));
  this.value = this._value;
  this.format = this._format;
  this.notNull = false;
  _OOP["default"].drillProperty(this, this, 'minLimitDate', 'min');
  _OOP["default"].drillProperty(this, this, 'minDateLimit', 'min');
  _OOP["default"].drillProperty(this, this, 'maxLimitDate', 'max');
  _OOP["default"].drillProperty(this, this, 'maxDateLimit', 'max');
  /**
   * @type {Date}
   * @name min
   * @memberOf DateInput#
   */

  /**
   * @type {Date}
   * @name max
   * @memberOf DateInput#
   */

  /**
   * @type {Date}
   * @name value
   * @memberOf DateInput#
   */

  /**
   * @type {string}
   * @name format
   * @memberOf DateInput#
   */

  /**
   * @deprecated
   * @type {Date}
   * @name minLimitDate
   * @memberOf DateInput#
   */
  /**
   * @deprecated
   * @type {Date}
   * @name maxLimitDate
   * @memberOf DateInput#
   */
}

DateInput2.tag = 'dateinput';
DateInput2.render = function () {
  //only support dd/mm/yyyy
  return _({
    "class": 'as-date-input',
    extendEvent: ['change'],
    child: [{
      tag: 'input',
      "class": 'as-date-input-text',
      props: {
        value: '__/__/____'
      }
    }, {
      tag: 'button',
      "class": 'as-date-input-clear-btn',
      child: 'span.mdi.mdi-close-circle'
    }, {
      tag: 'button',
      "class": 'as-date-input-icon-ctn',
      child: 'span.mdi.mdi-calendar'
    }]
  });
};

/**
 * @param {String} text
 */
DateInput2.prototype._verifyFormat = function (text) {
  var regex = new RegExp(_datetime.DATE_TIME_TOKEN_RGX.source, 'g');
  var tokens = text.match(regex);
  var map = {
    d: ['dd', 'd'],
    M: ['M', 'MM'],
    y: ['yy', 'yyyy'],
    Q: ['Q', 'QQ'],
    w: ['w', 'ww']
  };
  var rules = ['dMy', 'My', 'y', 'wy', 'Qy'].map(function (r) {
    r = r.split('');
    r.sort();
    return r.join('');
  });
  var matched = tokens.reduce(function (ac, cr) {
    Object.keys(map).some(function (key) {
      if (map[key].indexOf(cr) >= 0) {
        ac.push(key);
        return true;
      }
      return false;
    });
    return ac;
  }, []);
  matched.sort();
  matched = matched.join('');
  return rules.indexOf(matched) >= 0;
};
DateInput2.prototype._notifyIfChange = function (event) {
  var oldV = this._explicit(this._lastValue);
  var newV = this._explicit(this._value);
  if (!oldV !== !newV || oldV && newV && (0, _datetime.compareDate)(oldV, newV) !== 0) {
    this._lastValue = this._value;
    this.emit('change', {
      type: 'change',
      target: this,
      value: this._value,
      originEvent: event
    }, this);
  }
};
DateInput2.prototype.notifyChange = function () {
  this._lastValue = this._value;
  this.emit('change', {
    type: 'change',
    target: this,
    value: this._value
  }, this);
};
DateInput2.prototype.focus = function () {
  this.$input.focus();
};
DateInput2.prototype.blur = function () {
  this.$input.blur();
};
DateInput2.prototype.clear = function () {
  this._applyValue(null);
  this._notifyIfChange();
};

/***
 *
 * @param {Date|null} value
 */
DateInput2.prototype._applyValue = function (value) {
  this._value = value;
  if (!value) {
    this.$input.value = this.format;
  } else {
    this.$input.value = (0, _datetime.formatDateTime)(this._value, this._format);
  }
  this._updateNullClass();
};
DateInput2.prototype._updateNullClass = function () {
  var value = this._value;
  if (!value) {
    this.addClass('as-value-null');
  } else {
    this.removeClass('as-value-null');
  }
};
DateInput2.prototype.tokenRegex = _DateTimeInput["default"].prototype.tokenRegex;
DateInput2.prototype._autoSelect = _DateTimeInput["default"].prototype._autoSelect;
DateInput2.prototype._tokenAt = _DateTimeInput["default"].prototype._tokenAt;
DateInput2.prototype._editNextToken = _DateTimeInput["default"].prototype._editNextToken;
DateInput2.prototype._editPrevToken = _DateTimeInput["default"].prototype._editPrevToken;
DateInput2.prototype._makeTokenDict = _DateTimeInput["default"].prototype._makeTokenDict;
DateInput2.prototype._correctingInput = function () {
  var tkDict = this._makeTokenDict(this.$text.value);
  var min = this._min;
  var max = this._max;
  var equalMin;
  var equalMax;
  if (tkDict.y && !isNaN(tkDict.y.value)) {
    tkDict.y.value = Math.max(min.getFullYear(), Math.min(max.getFullYear(), tkDict.y.value));
    equalMin = tkDict.y.value === min.getFullYear();
    equalMax = tkDict.y.value === max.getFullYear();
  } else {
    equalMin = false;
    equalMax = false;
  }
  if (tkDict.M && !isNaN(tkDict.M.value)) {
    tkDict.M.value = Math.max(1, Math.min(12, tkDict.M.value));
    if (equalMin) {
      tkDict.M.value = Math.max(min.getMonth() + 1, tkDict.M.value);
      equalMin = tkDict.M.value === min.getMonth() + 1;
    }
    if (equalMax) {
      tkDict.M.value = Math.min(max.getMonth() + 1, tkDict.M.value);
      equalMax = max.getMonth() + 1;
    }
  } else {
    equalMin = false;
    equalMax = false;
  }
  if (tkDict.d && !isNaN(tkDict.d.value)) {
    tkDict.d.value = Math.max(1, Math.min(31, tkDict.d.value));
    if (tkDict.M && !isNaN(tkDict.M.value)) {
      tkDict.d.value = Math.min(tkDict.d.value, (0, _datetime.daysInMonth)(isNaN(tkDict.y.value) ? 2020 : tkDict.y.value, tkDict.M.value - 1));
    }
    if (equalMin) {
      tkDict.d.value = Math.max(min.getDate(), tkDict.d.value);
    }
    if (equalMax) {
      tkDict.d.value = Math.min(max.getDate(), tkDict.d.value);
    }
  }
  if (tkDict.w && !isNaN(tkDict.w.value)) {
    if (tkDict.y && !isNaN(tkDict.y.value)) {
      tkDict.w.value = Math.max(1, Math.min(tkDict.w.value, 1 + (0, _datetime.weekIndexOf)((0, _datetime.prevDate)(new Date(tkDict.y.value + 1, 0, 1)), false, this._startDayOfWeek)));
    }
  }
  this.$text.value = this._applyTokenDict(this._format, tkDict);
};
DateInput2.prototype._correctingCurrentToken = function () {
  var token = this._tokenAt(this.$text.selectionStart);
  if (!token) return;
  var value;
  value = parseInt(token.text);
  var rqMin = {
    d: 1,
    dd: 1,
    M: 1,
    MM: 1,
    y: 1890,
    yyyy: 1890,
    w: 1,
    ww: 1,
    Q: 1,
    QQ: 1
  }[token.ident];
  var rqMax = {
    d: 31,
    dd: 31,
    M: 12,
    MM: 12,
    y: 2089,
    yyyy: 2089,
    w: 54,
    ww: 54,
    Q: 4,
    QQ: 4
  }[token.ident];
  if (rqMin !== undefined) {
    if (!isNaN(value)) {
      if (value < rqMin || value > rqMin) {
        value = Math.max(rqMin, Math.min(rqMax, value));
        token.replace((0, _utils.zeroPadding)(value, token.ident.length), false);
      }
    } else if (this.notNull) {
      if (token.ident.startsWith('y')) {
        value = new Date().getFullYear();
      } else {
        value = rqMin;
      }
      token.replace((0, _utils.zeroPadding)(value, token.ident.length), false);
    } else if (token.text !== token.ident) {
      token.replace(token.ident, false);
    }
  }
};

/***
 *
 * @param {Date|string|null}date
 * @return {Date|null}
 */
DateInput2.prototype._normalizeValue = function (date) {
  var temp;
  if (date === null || date === undefined || date === false) {
    return null;
  }
  if (typeof date === 'string') {
    temp = new Date(date);
    if (isNaN(temp.getTime())) {
      temp = (0, _datetime.parseDateTime)(date, this._format);
    }
    date = temp;
  } else if (typeof date === 'number') {
    date = new Date(date);
  }
  if (date.getTime && date.getHours) {
    if (isNaN(date.getTime())) {
      return null;
    } else {
      return (0, _datetime.beginOfDay)(date);
    }
  } else {
    return null;
  }
};
DateInput2.prototype._loadValueFromInput = function () {
  var tkDict = this._makeTokenDict(this.$text.value);
  var y = tkDict.y ? tkDict.y.value : new Date().getFullYear();
  var m = tkDict.M ? tkDict.M.value - 1 : 0;
  var d = tkDict.d ? tkDict.d.value : 1;
  var date;
  if (tkDict.w && tkDict.y) {
    if ((0, _utils.isRealNumber)(tkDict.w.value) && (0, _utils.isRealNumber)(tkDict.y.value)) date = (0, _datetime.weekInYear)(y, tkDict.w.value - 1);
  } else if (tkDict.Q && tkDict.y) {
    if ((0, _utils.isRealNumber)(tkDict.Q.value) && (0, _utils.isRealNumber)(tkDict.y.value)) date = new Date(y, (tkDict.Q.value - 1) * 3, 1);
  } else {
    date = new Date(y, m, d);
  }
  if (!date || isNaN(date.getTime())) {
    this._value = null;
  } else {
    this._value = date;
  }
  this._updateNullClass();
};
DateInput2.prototype._explicit = function (value) {
  value = value || null;
  if (this.notNull) {
    value = value || new Date();
  } else if (!value) return null;
  var time = value.getTime();
  time = Math.max(this._min.getTime(), time);
  time = Math.min(this._max.getTime(), time);
  return dateByLevel(new Date(time), this.calendarLevel);
};
DateInput2.prototype._applyTokenDict = function (format, dict, debug) {
  var rgx = new RegExp(this.tokenRegex.source, 'g');
  var tokenMap = this.tokenMap;
  var res = format.replace(rgx, function (full, g1, g2, sourceText) {
    if (g1 && tokenMap[g1]) {
      var ident = tokenMap[g1];
      if (dict[ident] && !isNaN(dict[ident].value)) {
        return (0, _utils.zeroPadding)(dict[ident].value, g1.length);
      } else {
        return full;
      }
    } else return full;
  });
  return res;
};
DateInput2.prototype.focus = function () {
  this.$text.focus();
  this.$text.select();
};
DateInput2.prototype.tokenMap = {
  d: 'd',
  dd: 'd',
  M: 'M',
  MM: 'M',
  y: 'y',
  yyyy: 'y',
  ww: 'w',
  Q: 'Q',
  QQ: 'Q'
};

/**
 * @type {DateInput2}
 */
DateInput2.eventHandler = {};
DateInput2.eventHandler.keydown = function (event) {
  if (this.readOnly) {
    if (!event.ctrlKey || event.key !== 'c') {
      event.preventDefault();
    }
    return;
  }
  var token = this._tokenAt(this.$text.selectionStart);
  var endToken = this._tokenAt(this.$text.selectionEnd);
  if (!token) {
    if (event.key === 'Enter') {
      this._correctingInput();
      this._loadValueFromInput();
      this._notifyIfChange(event);
    }
    return;
  }
  var newTokenText;
  var value;
  if (event.key.startsWith('Arrow') || event.key.match(/^[\-/,\s]$/)) {
    event.preventDefault();
    switch (event.key) {
      case 'ArrowLeft':
        this._editPrevToken();
        break;
      case 'ArrowRight':
      case '-':
      case ',':
      case '/':
      case ' ':
        this._editNextToken();
        break;
      case 'ArrowUp':
      case 'ArrowDown':
        switch (token.ident) {
          case 'dd':
          case 'd':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this._editingData.d = event.key === 'ArrowUp' ? 1 : 31;
            } else {
              this._editingData.d = 1 + (value + (event.key === 'ArrowUp' ? 0 : 29)) % 31;
            }
            newTokenText = '' + this._editingData.d;
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
          case 'w':
          case 'ww':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this._editingData.w = event.key === 'ArrowUp' ? 1 : 54;
            } else {
              this._editingData.w = 1 + (value + (event.key === 'ArrowUp' ? 0 : 52)) % 54;
            }
            newTokenText = (0, _utils.zeroPadding)(this._editingData.w, token.ident.length);
            token.replace(newTokenText, true);
            break;
          case 'Q':
          case 'QQ':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this._editingData.Q = event.key === 'ArrowUp' ? 1 : 4;
            } else {
              this._editingData.Q = 1 + (value + (event.key === 'ArrowUp' ? 0 : 2)) % 4;
            }
            newTokenText = (0, _utils.zeroPadding)(this._editingData.Q, token.ident.length);
            token.replace(newTokenText, true);
            break;
          case 'MM':
          case 'M':
            value = parseInt(token.text) - 1;
            if (isNaN(value)) {
              this._editingData.M = event.key === 'ArrowUp' ? 0 : 11;
            } else {
              this._editingData.M = (value + (event.key === 'ArrowUp' ? 1 : 11)) % 12;
            }
            newTokenText = '' + (this._editingData.M + 1);
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
          case 'yyyy':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this._editingData.y = new Date().getFullYear();
            } else {
              this._editingData.y = Math.max(1890, Math.min(2089, value + (event.key === 'ArrowUp' ? 1 : -1)));
            }
            newTokenText = this._editingData.y + '';
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
        }
    }
  } else if (event.key === "Delete" || event.key === 'Backspace') {
    event.preventDefault();
    if (endToken.idx !== token.idx) {
      if (this.notNull) {
        this.$text.value = (0, _datetime.formatDateTime)(new Date(Math.min(this.max.getTime(), Math.max(this.min.getTime(), new Date().getTime()))), this._format);
      } else {
        this.$text.value = this._format;
      }
      this.$text.select();
    } else {
      if (this.notNull) {
        switch (token.ident) {
          case 'y':
          case 'yyyy':
            token.replace((0, _utils.zeroPadding)(new Date().getFullYear(), token.ident.length), true);
            break;
          case 'w':
          case 'ww':
          case 'Q':
          case 'QQ':
            token.replace((0, _utils.zeroPadding)(1, token.ident.length), true);
            break;
          case 'M':
          case 'MM':
          case 'd':
          case 'dd':
            token.replace((0, _utils.zeroPadding)(1, token.ident.length), true);
            break;
          default:
            token.replace(token.ident, true);
        }
      } else {
        token.replace(token.ident, true);
      }
      if (event.key === "Delete") this._editNextToken();else this._editPrevToken();
    }
  } else if (event.key === "Enter" || event.key === 'Tab') {
    this._correctingInput();
    this._loadValueFromInput();
    this._notifyIfChange(event);
  } else if (event.ctrlKey) {
    switch (event.key) {
      case 'a':
      case 'A':
        break;
      case 'c':
      case 'C':
        break;
      case 'x':
      case 'X':
        this.domSignal.once('clear_value', function () {
          this.$text.value = this._format;
          this.$text.select();
        }.bind(this));
        this.domSignal.emit('clear_value');
        break;
      default:
        event.preventDefault();
    }
  } else if (event.key.match(/^[0-9]$/g)) {
    event.preventDefault();
    var dVal = parseInt(event.key);
    if (this._editingData.state === STATE_NEW) {
      switch (token.ident) {
        case 'dd':
        case 'd':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          this._editingData.d = dVal;
          if (dVal > 3) {
            this._editNextToken();
          }
          break;
        case 'w':
        case 'ww':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          this._editingData.d = dVal;
          if (dVal > 6) {
            this._editNextToken();
          }
          break;
        case 'Q':
        case 'QQ':
          dVal = Math.max(1, Math.min(dVal, 4));
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          this._editingData.Q = dVal;
          this._editNextToken();
          break;
        case 'MM':
        case 'M':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          this._editingData.M = dVal;
          if (dVal > 1) {
            this._editNextToken();
          }
          break;
        case 'yyyy':
        case 'y':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          this._editingData.state_num = 1;
          break;
      }
    } else {
      switch (token.ident) {
        case 'dd':
        case 'd':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(1, Math.min(31, dVal));
          this._editingData.d = dVal;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editNextToken();
          break;
        case 'ww':
        case 'w':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(1, Math.min(54, dVal));
          this._editingData.d = dVal;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editNextToken();
          break;
        case 'Q':
        case 'QQ':
          dVal = Math.max(1, Math.min(dVal, 4));
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.Q = dVal;
          this._editNextToken();
          break;
        case 'MM':
        case 'M':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(1, Math.min(12, dVal));
          this._editingData.M = dVal - 1;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editNextToken();
          break;
        case 'yyyy':
        case 'y':
          dVal = (parseInt(token.text.replace(/^./, '')) || 0) * 10 + dVal;
          this._editingData.state_num++;
          if (this._editingData.state_num >= 4) {
            // dVal = Math.max(1890, Math.min(2089, dVal));
            token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
            this._editNextToken();
          } else {
            token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          }
          break;
      }
    }
  } else {
    event.preventDefault();
  }
};
DateInput2.eventHandler.mouseUpInput = _DateTimeInput["default"].eventHandler.mouseUpInput;
DateInput2.eventHandler.mouseDownInput = _DateTimeInput["default"].eventHandler.mouseDownInput;
DateInput2.eventHandler.dblclickInput = _DateTimeInput["default"].eventHandler.dblclickInput;
DateInput2.eventHandler.inputBlur = _DateTimeInput["default"].eventHandler.inputBlur;
DateInput2.eventHandler.calendarSelect = function (value) {
  var oldV = this._explicit(this._lastValue);
  this.value = value;
  var newV = this._explicit(this._value);
  if (!oldV !== !newV || oldV && newV && (0, _datetime.compareDate)(oldV, newV) !== 0) {
    this.emit('change', {
      type: 'change',
      target: this,
      value: this._value
    }, this);
  }
};
DateInput2.eventHandler.clickCalendarBtn = function () {
  if (this.readOnly) return;
  this._attachCalendar();
};
DateInput2.eventHandler.clickOut = function (event) {
  if ((0, _EventEmitter.hitElement)(this.share.$calendar, event)) return;
  this._releaseCalendar();
};
DateInput2.eventHandler.calendarPick = function (event) {
  this._applyValue(event.value);
  this._notifyIfChange(event.originEvent || event);
  this._releaseCalendar();
};
DateInput2.property = {};
DateInput2.property.value = {
  set: function set(value) {
    value = this._normalizeValue(value);
    if (!value && this.notNull) value = (0, _datetime.beginOfDay)(new Date());
    this._lastValue = value;
    this._applyValue(value);
  },
  get: function get() {
    return this._explicit(this._value);
  }
};

/**
 * not support MMM, MMMM, support number only
 * @type {DateInput2}
 */
DateInput2.property.format = {
  set: function set(value) {
    value = value || 'dd/MM/yyyy';
    value = value.replace(new RegExp(_datetime.DATE_TIME_TOKEN_RGX.source, 'g'), function (full) {
      if (full === 'mm' || full === 'MMM' || full === 'MMMM' || full === 'mmm' || full === 'mmmm') return 'MM';
      if (full === 'm') return 'M';
      return full;
    });
    if (!this._verifyFormat(value)) {
      value = 'dd/MM/yyyy';
      console.error("Invalid date format: " + value);
    }
    this._format = value;
    this._formatTokens = this._format.match(new RegExp(_datetime.DATE_TIME_TOKEN_RGX.source, 'g')) || [];
    this.value = this.value; //update

    var testData = new Date(2000, 9, 22, 12, 12, 22, 335);
    testData = (0, _datetime.formatDateTime)(testData, value);
    this.addStyle('--format-width', Math.ceil((0, _utils.measureText)(testData.replace(/[a-z0-9]/g, 'M'), '14px arial').width / 14 * 2) / 2 + 'em');
    this.attr('data-format', value);
  },
  get: function get() {
    return this._format;
  }
};
DateInput2.property.disabled = {
  set: function set(value) {
    value = !!value;
    this.$input.disabled = value;
    if (value) this.addClass('as-disabled');else this.removeClass('as-disabled');
    this.$text.disabled = value;
  },
  get: function get() {
    return this.$input.disabled;
  }
};
DateInput2.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
      this.$input.readOnly = true;
    } else {
      this.removeClass('as-read-only');
      this.$input.readOnly = false;
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
DateInput2.property.text = {
  get: function get() {
    return this.$input.value;
  }
};
DateInput2.property.calendarLevel = {
  /***
   * @memberOf DateInput2
   * @name calendarLevel
   * @type {number}
   */
  get: function get() {
    if (this._formatTokens.indexOf('d') >= 0 || this._formatTokens.indexOf('dd') >= 0) return 'day';
    if (this._formatTokens.indexOf('w') >= 0 || this._formatTokens.indexOf('ww') >= 0) return 'week';
    if (this._formatTokens.indexOf('M') >= 0 || this._formatTokens.indexOf('MM') >= 0) return 'month';
    if (this._formatTokens.indexOf('Q') >= 0 || this._formatTokens.indexOf('QQ') >= 0) return 'quarter';
    return 'year';
  }
};
DateInput2.property.min = {
  set: function set(value) {
    this._min = this._normalizeValue(value) || new Date(1890, 0, 1);
  },
  get: function get() {
    return this._min;
  }
};
DateInput2.property.max = {
  set: function set(value) {
    this._max = this._normalizeValue(value) || new Date(2090, 0, 1);
  },
  get: function get() {
    var max = this._max;
    var min = this.min;
    if ((0, _datetime.compareDate)(min, max) > 0) return min;
    return max;
  }
};
DateInput2.property.notNull = {
  set: function set(value) {
    if (value) {
      this.addClass('as-must-not-null');
      if (!this.value) this.value = new Date();
    } else {
      this.removeClass('as-must-not-null');
    }
    this.value = this.value; //update
  },

  get: function get() {
    return this.hasClass('as-must-not-null');
  }
};
DateInput2.prototype.share = {
  /***
   * @type {ChromeCalendar}
   */
  $calendar: null,
  /***
   * @type {Follower}
   */
  $follower: null,
  /***
   * @type {DateInput2}
   */
  $holdingInput: null
};
DateInput2.prototype._prepareCalendar = function () {
  if (this.share.$calendar) return;
  this.share.$calendar = _({
    tag: 'chromecalendar',
    "class": ['as-date-input-calendar', 'as-dropdown-box-common-style']
  });
  if (this.share.$calendar.$attachHook) this.share.$calendar.$attachHook.cancelWaiting();
  this.share.$follower = _({
    tag: 'follower',
    "class": 'as-date-input-follower',
    child: this.share.$calendar
  });
  this.share.$follower.cancelWaiting();
};
DateInput2.prototype._attachCalendar = function () {
  var _this = this;
  this._prepareCalendar();
  if (this.share.$holdingInput) this.share.$holdingInput._releaseCalendar();
  this.share.$follower.addTo(document.body);
  this.share.$follower.addStyle('visibility', 'hidden');
  this.share.$holdingInput = this;
  this.share.$follower.followTarget = this;
  this.share.$follower.sponsorElement = this;
  this.share.$calendar.level = this.calendarLevel;
  this.share.$calendar.startDayOfWeek = this.startDayOfWeek || 0;
  this.share.$calendar.min = this._min;
  this.share.$calendar.max = this._max;
  this.share.$calendar.on('pick', this.eventHandler.calendarPick);
  this.share.$calendar.selectedDates = this.value ? [this.value] : [];
  if (this.share.$calendar.$attachHook) this.share.$calendar.$attachHook.emit('attached');
  this.share.$calendar.sync = this.share.$calendar.sync.then(function () {
    _this.share.$calendar.viewDate = _this.value ? _this.value : new Date(Math.max(_this._min.getTime(), Math.min(_this._max.getTime(), new Date().getTime())));
  });
  setTimeout(function () {
    document.body.addEventListener('click', this.eventHandler.clickOut);
    this.share.$follower.removeStyle('visibility');
  }.bind(this), 5);
  this.$calendarBtn.off('click', this.eventHandler.clickCalendarBtn);
};
DateInput2.prototype._releaseCalendar = function () {
  if (this.share.$holdingInput !== this) return;
  this.share.$calendar.off('pick', this.eventHandler.calendarPick);
  this.share.$follower.remove();
  document.body.removeEventListener('click', this.eventHandler.clickOut);
  setTimeout(function () {
    this.$calendarBtn.on('click', this.eventHandler.clickCalendarBtn);
  }.bind(this), 5);
  this.share.$holdingInput = null;
};
_ACore["default"].install(DateInput2);
var _default = DateInput2;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _datetime = __webpack_require__(58286);
var _QuickMenu = _interopRequireDefault(__webpack_require__(8277));
var _OOP = __webpack_require__(38608);
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; }
/**
 * @extends {AElement}
 * @constructor
 */
function DateNLevelInput() {
  this.$level = (0, _ACore.$)('.as-date-n-level-input-select-level', this);
  /**
   *
   * @type {DateInput}
   */
  this.$date = (0, _ACore.$)('dateinput', this);
  this.ctrl = new DateNLevelInputCtrl(this);
  this._allowLevels = this.defaultAllowLevels.slice();
  (0, _OOP.drillProperty)(this, this.$date, 'min');
  (0, _OOP.drillProperty)(this, this.$date, 'max');
  /**
   * @name level
   * @type {"date"| "week" | "month" | "quarter" | "year"}
   * @memberOf DateNLevelInput#
   * */

  /**
   * @name allowLevels
   * @type {Array<"date"| "week" | "month" | "quarter" | "year">}
   * @memberOf DateNLevelInput#
   * */

  /**
   * @name value
   * @type {Date}
   * @memberOf DateNLevelInput#
   * */

  /**
   * @readonly
   * @name format
   * @type {string}
   * @memberOf DateNLevelInput#
   * */
}

DateNLevelInput.tag = 'DateNLevelInput'.toLowerCase();
DateNLevelInput.prototype.leve2format = {
  date: 'dd/MM/yyyy',
  week: 'Tuần ww, yyyy',
  month: 'MM/yyyy',
  quarter: 'Quý QQ, yyyy',
  year: 'yyyy'
};
DateNLevelInput.prototype.leve2Name = {
  date: 'Ngày',
  week: 'Tuần',
  month: 'Tháng',
  quarter: 'Quý',
  year: 'Năm'
};
DateNLevelInput.prototype.defaultAllowLevels = ['date', 'month', 'year'];
DateNLevelInput.render = function () {
  return (0, _ACore._)({
    "class": 'as-date-n-level-input',
    extendEvent: ['change'],
    child: [{
      tag: 'dateinput',
      props: {
        format: 'dd/MM/yyyy'
      }
    }, {
      tag: 'button',
      "class": ['as-transparent-button', 'as-date-n-level-input-select-level'],
      child: 'span.mdi.mdi-cog'
    }]
  });
};
DateNLevelInput.property = {};
DateNLevelInput.property.allowLevels = {
  set: function set(value) {
    var _this = this;
    if (typeof value === "string") {
      value = value.split(/\s*,\s*/);
    }
    if (!(value instanceof Array)) {
      value = this.defaultAllowLevels.slice();
    }
    value = value.filter(function (x) {
      return !!_this.leve2format[x];
    });
    if (!value || value.length === 0) value = this.defaultAllowLevels.slice();
    var prevLevel = this.level;
    this._allowLevels = value;
    var newLevel = this.level;
    if (prevLevel !== newLevel) {
      this.level = newLevel; //update
    }
  },

  get: function get() {
    return this._allowLevels.slice();
  }
};
DateNLevelInput.property.level = {
  set: function set(value) {
    if (!this.leve2format[value]) value = 'date';
    this.attr('data-level', value);
    this.$date.format = this.leve2format[value];
    this.ctrl.prevVal = this.$date.value;
    this.ctrl.level = value;
  },
  get: function get() {
    var level = this.ctrl.level;
    if (this._allowLevels.indexOf(level) < 0) level = this._allowLevels[0];
    return level;
  }
};
DateNLevelInput.property.format = {
  get: function get() {
    return this.$date.format;
  }
};
DateNLevelInput.property.value = {
  set: function set(value) {
    this.$date.value = value;
    this.ctrl.prevVal = this.$date.value;
  },
  get: function get() {
    return this.$date.value;
  }
};
DateNLevelInput.property.readOnly = {
  set: function set(value) {
    this.$date.readOnly = value;
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function get() {
    return this.$date.readOnly;
  }
};
DateNLevelInput.property.disabled = {
  set: function set(value) {
    this.$date.disabled = value;
    this.$level.disabled = value;
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function get() {
    return this.$date.disabled;
  }
};
function DateNLevelInputCtrl(elt) {
  var _this2 = this;
  this.elt = elt;
  this.prevVal = this.elt.value;
  this.elt.$date.on('change', this.ev_dateChange.bind(this));
  this.level = 'date';
  _QuickMenu["default"].toggleWhenClick(this.elt.$level, {
    getMenuProps: function getMenuProps() {
      var props = {};
      props.items = _this2.elt._allowLevels.map(function (name) {
        return {
          text: "".concat(_this2.elt.leve2Name[name], " (").concat(_this2.elt.leve2format[name], ")"),
          level: name,
          icon: name === _this2.level ? 'span.mdi.mdi-check' : null
        };
      });
      return props;
    },
    onSelect: function onSelect(item) {
      if (_this2.level !== item.level) {
        _this2.level = item.level;
        _this2.ev_levelChange();
      }
    }
  });
}
DateNLevelInputCtrl.prototype.ev_dateChange = function (event) {
  this.notifyCanBeChanged();
};
DateNLevelInputCtrl.prototype.ev_levelChange = function (event) {
  var value = this.level;
  this.elt.attr('data-level', value);
  this.elt.$date.format = this.elt.leve2format[value];
  this.elt.$date.value = null;
  this.notifyCanBeChanged();
};
DateNLevelInputCtrl.prototype.notifyCanBeChanged = function (force) {
  var value = this.elt.$date.value;
  if (force || !value !== !this.prevVal || value && (0, _datetime.compareDate)(value, this.prevVal) !== 0) {
    this.elt.emit('change', Object.assign({}, {
      value: value,
      prevValue: this.prevVal,
      target: this.elt
    }), this.elt);
    this.prevVal = value;
  }
};
var _default = DateNLevelInput;
exports["default"] = _default;
_ACore["default"].install(DateNLevelInput);

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(22863);
var _DomSignal = _interopRequireDefault(__webpack_require__(47341));
var _utils = __webpack_require__(84512);
var _datetime = __webpack_require__(58286);
var _ChromeTimePicker = _interopRequireDefault(__webpack_require__(11564));
var _ChromeCalendar = _interopRequireDefault(__webpack_require__(51631));
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _EventEmitter = __webpack_require__(46833);
var _keyboard = __webpack_require__(95141);
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 _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var STATE_NEW = 1;
var STATE_EDITED = 2;
var STATE_NONE = 0;

/***
 * @extends AElement
 * @constructor
 */
function DateTimeInput() {
  this._editingData = {};
  this._value = null;
  this._min = new Date(1890, 0, 1);
  this._max = new Date(new Date(2090, 0, 1).getTime() - 1);
  this._format = 'dd/MM/yyyy HH:mm';
  this.$attachhook = (0, _ACore._)('attachhook').addTo(this);
  this.domSignal = new _DomSignal["default"](this.$attachhook);
  this.domSignal.on('request_auto_select', this._autoSelect.bind(this));
  /***
   *
   * @type {HTMLInputElement | AElement}
   */
  this.$text = (0, _ACore.$)('.as-date-time-input-text', this).on('mousedown', this.eventHandler.mouseDownInput).on('mouseup', this.eventHandler.mouseUpInput).on('dblclick', this.eventHandler.dblclickInput).on('keydown', this.eventHandler.keydown).on('blur', this.eventHandler.inputBlur).on('contextmenu', function (event) {
    event.preventDefault();
  });
  this.$pickerBtn = (0, _ACore.$)('.as-date-time-input-icon-btn', this).on('click', this.eventHandler.clickPickerBtn);
  this.$clearBtn = (0, _ACore.$)('button.as-time-input-clear-btn', this).on('click', this.clear.bind(this));
  this.notNull = false;
  this.min = this._min;
  this.max = this._max;
}
DateTimeInput.tag = 'DateTimeInput'.toLowerCase();

//calendar-clock
DateTimeInput.render = function () {
  return (0, _ACore._)({
    extendEvent: ['change'],
    "class": 'as-date-time-input',
    child: [{
      tag: 'input',
      "class": 'as-date-time-input-text',
      attr: {
        ondrop: "return false;"
      },
      props: {
        value: 'dd/MM/yyyy HH:mm'
      }
    }, {
      tag: 'button',
      "class": 'as-time-input-clear-btn',
      child: 'span.mdi.mdi-close-circle'
    }, {
      tag: 'button',
      "class": 'as-date-time-input-icon-btn',
      child: 'span.mdi.mdi-calendar-clock'
    }]
  });
};
DateTimeInput.prototype.tokenRegex = /([^.\/:\-,\\\s]+)|([.\/:\-,\\]+)/i;

/***
 *
 * @param start
 * @returns {null|{ident: string, length: number, sourceText: string, replace: function(s: string, selecting:boolean):void, text: string, idx: number, elt: (HTMLInputElement|absol.AElement)}}
 */
DateTimeInput.prototype._tokenAt = function (start) {
  var rgx = new RegExp(this.tokenRegex.source, 'g');
  var rgxFormat = new RegExp(this.tokenRegex.source, 'g');
  var s = this.$text.value;
  var format = this._format;
  var tokenMatched = rgx.exec(s);
  var formatToken = rgxFormat.exec(format);
  var tokenMatchedList = [];
  var formatTokenList = [];
  var text, ident;
  var idx;
  while (tokenMatched && formatToken) {
    text = tokenMatched[1];
    ident = formatToken[1];
    if (text && (0, _utils.isDateTimeFormatToken)(ident)) {
      tokenMatchedList.push(tokenMatched);
      formatTokenList.push(formatToken);
    }
    tokenMatched = rgx.exec(s);
    formatToken = rgxFormat.exec(format);
  }
  var bestI = -1;
  var bestD = Infinity;
  var d;
  for (var i = 0; i < tokenMatchedList.length; ++i) {
    tokenMatched = tokenMatchedList[i];
    formatToken = formatTokenList[i];
    text = tokenMatched[1];
    idx = tokenMatched.index;
    d = Math.min(Math.abs(start - idx), Math.abs(start - (idx + text.length)));
    if (d < bestD) {
      bestD = d;
      bestI = i;
    }
  }
  if (bestI >= 0) {
    tokenMatched = tokenMatchedList[bestI];
    formatToken = formatTokenList[bestI];
    text = tokenMatched[1];
    ident = formatToken[1];
    idx = tokenMatched.index;
    return {
      idx: idx,
      text: text,
      length: text.length,
      ident: ident,
      elt: this.$text,
      sourceText: s,
      replace: function replace(newText, selecting) {
        var left = this.sourceText.substr(0, this.idx);
        var right = this.sourceText.substr(this.idx + this.length);
        this.text = newText;
        this.length = newText.length;
        this.sourceText = left + this.text + right;
        this.elt.value = this.sourceText;
        if (selecting) {
          this.elt.setSelectionRange(this.idx, this.idx + this.length);
        }
      }
    };
  }
  return null;
};
DateTimeInput.prototype._autoSelect = function () {
  var token = this._tokenAt(this.$text.selectionStart);
  var tokenEnd = this._tokenAt(this.$text.selectionEnd);
  if (token) {
    if (tokenEnd.idx === token.idx) {
      this.$text.setSelectionRange(token.idx, token.idx + token.length);
      this._editingData.state = STATE_NEW;
    } else {
      this.$text.select();
      this._editingData.state = STATE_NONE;
    }
  }
};
DateTimeInput.prototype._editNextToken = function () {
  var token = this._tokenAt(this.$text.selectionStart);
  if (!token) return false;
  var cIdx = token.idx;
  var l = this.$text.value.length;
  for (var i = token.idx + token.length; i < l; ++i) {
    token = this._tokenAt(i);
    if (token && token.idx !== cIdx) {
      this.$text.setSelectionRange(token.idx, token.idx + token.length);
      this._editingData.state = STATE_NEW;
      break;
    }
  }
};
DateTimeInput.prototype._editPrevToken = function () {
  var token = this._tokenAt(this.$text.selectionStart);
  if (!token) return false;
  var cIdx = token.idx;
  var l = this.$text.value.length;
  for (var i = token.idx - 1; i >= 0; --i) {
    token = this._tokenAt(i);
    if (token && token.idx !== cIdx) {
      this.$text.setSelectionRange(token.idx, token.idx + token.length);
      this._editingData.state = STATE_NEW;
      break;
    }
  }
};
DateTimeInput.prototype.tokenMap = {
  d: 'd',
  dd: 'd',
  M: 'M',
  MM: 'M',
  y: 'y',
  yyyy: 'y',
  hh: 'h',
  h: 'h',
  mm: 'm',
  m: 'm',
  a: 'a',
  HH: 'H',
  H: 'H'
};

/***
 *
 * @param {string} s
 * @returns {{}}
 * @private
 */
DateTimeInput.prototype._makeTokenDict = function (s) {
  var rgx = new RegExp(this.tokenRegex.source, 'g');
  var rgxFormat = new RegExp(this.tokenRegex.source, 'g');
  var format = this._format;
  var tokenMap = this.tokenMap;
  var tokenMatched = rgx.exec(s);
  var formatToken = rgxFormat.exec(format);
  var text, ident;
  var idx;
  var res = {};
  while (tokenMatched && formatToken) {
    text = tokenMatched[1];
    ident = formatToken[1];
    if (text) {
      if (tokenMap[ident]) {
        idx = tokenMatched.index;
        res[tokenMap[ident]] = {
          text: text,
          idx: idx,
          length: text.length,
          sourceText: s,
          value: ident === 'a' ? text : parseInt(text)
        };
      }
    }
    tokenMatched = rgx.exec(s);
    formatToken = rgxFormat.exec(format);
  }
  return res;
};

/***
 *
 * @param {Date} date
 * @private
 */
DateTimeInput.prototype._makeValueDict = function (date) {
  var res = {};
  res.d = {
    value: date.getDate()
  };
  res.y = {
    value: date.getFullYear()
  };
  res.M = {
    value: date.getMonth() + 1
  };
  res.m = {
    value: date.getMinutes()
  };
  res.h = {
    value: date.getHours()
  };
  res.H = {
    value: date.getHours()
  };
  if (res.h.value < 12) {
    if (res.h.value === 0) res.h.value = 12;
    res.a = {
      value: "AM"
    };
  } else {
    if (res.h.value > 12) res.h.value -= 12;
    res.a = {
      value: "PM"
    };
  }
  return res;
};
DateTimeInput.prototype._applyTokenDict = function (format, dict, debug) {
  var rgx = new RegExp(this.tokenRegex.source, 'g');
  var tokenMap = this.tokenMap;
  return format.replace(rgx, function (full, g1, g2, sourceText) {
    if (g1 && tokenMap[g1]) {
      var ident = tokenMap[g1];
      if (ident === 'a') {
        return dict.a && dict.a.value || 'a';
      } else {
        if (dict[ident] && !isNaN(dict[ident].value)) {
          var numberText = dict[ident].value + '';
          while (numberText.length < g1.length) {
            numberText = '0' + numberText;
          }
          return numberText;
        } else {
          return full;
        }
      }
    } else return full;
  });
};
DateTimeInput.prototype._loadValueFromInput = function () {
  var tkDict = this._makeTokenDict(this.$text.value);
  var H = NaN;
  if (tkDict.H && (0, _utils.isRealNumber)(tkDict.H.value)) {
    H = tkDict.H.value;
  } else if (tkDict.a.value === 'AM') {
    H = tkDict.h.value % 12;
  } else if (tkDict.a.value === 'PM') {
    H = tkDict.h.value + (tkDict.h.value === 12 ? 0 : 12);
  }
  var date = new Date(tkDict.y.value, tkDict.M.value - 1, tkDict.d.value, H, tkDict.m.value);
  if (isNaN(date.getTime())) {
    this._value = null;
  } else {
    this._value = date;
  }
};
DateTimeInput.prototype.clear = function () {
  var lev = this._lastEmitValue;
  if (this.notNull) {
    this.value = (0, _datetime.formatDateTime)(new Date(Math.max(this.min.getTime(), Math.min(this.max.getTime(), new Date().getTime()))), this.format);
  } else {
    this.value = null;
  }
  this._lastEmitValue = lev;
  this._notifyIfChange();
};
DateTimeInput.prototype._notifyIfChange = function (event) {
  if (!this._lastEmitValue && !this._value) return;
  if (this._lastEmitValue && this._value && this._lastEmitValue.getTime() === this._value.getTime()) return;
  this.emit('change', {
    type: 'change',
    target: this,
    value: this._value,
    originEvent: event
  }, this);
  this._lastEmitValue = this._value;
};
DateTimeInput.prototype._correctingInput = function () {
  var tkDict = this._makeTokenDict(this.$text.value);
  var equalMin = true;
  var equalMax = true;
  if (!isNaN(tkDict.y.value)) {
    tkDict.y.value = Math.max(this._min.getFullYear(), Math.min(this._max.getFullYear(), tkDict.y.value));
    equalMin = tkDict.y.value === this._min.getFullYear();
    equalMax = tkDict.y.value === this._max.getFullYear();
  } else {
    equalMin = false;
    equalMax = false;
  }
  if (!isNaN(tkDict.M.value)) {
    tkDict.M.value = Math.max(1, Math.min(12, tkDict.M.value));
    if (equalMin) {
      tkDict.M.value = Math.max(this._min.getMonth() + 1, tkDict.M.value);
      equalMin = tkDict.M.value === this._min.getMonth() + 1;
    }
    if (equalMax) {
      tkDict.M.value = Math.min(this._max.getMonth() + 1, tkDict.M.value);
      equalMax = this._max.getMonth() + 1;
    }
  } else {
    equalMin = false;
    equalMax = false;
  }
  if (!isNaN(tkDict.d.value)) {
    tkDict.d.value = Math.max(1, Math.min(31, tkDict.d.value));
    if (!isNaN(tkDict.M.value)) {
      tkDict.d.value = Math.min(tkDict.d.value, (0, _datetime.daysInMonth)(isNaN(tkDict.y.value) ? 2020 : tkDict.y.value, tkDict.M.value - 1));
    }
    if (equalMin) {
      tkDict.d.value = Math.max(this._min.getDate(), tkDict.d.value);
      equalMin = tkDict.d.value === this._min.getDate();
    }
    if (equalMax) {
      tkDict.d.value = Math.min(this._max.getDate(), tkDict.d.value);
      equalMax = tkDict.d.value === this._max.getDate();
    }
  } else {
    equalMin = false;
    equalMax = false;
  }
  //todo: min max
  if (tkDict.a && (tkDict.a.value === 'AM' || tkDict.a.value === 'PM')) {
    if (equalMin) {}
  } else {
    equalMin = false;
    equalMax = false;
  }
  this.$text.value = this._applyTokenDict(this._format, tkDict);
};
DateTimeInput.prototype._correctingCurrentToken = function () {
  var token = this._tokenAt(this.$text.selectionStart);
  if (!token) return;
  var value;
  if (token.ident === 'a') {
    if (token.text !== 'a' && token.text !== 'AM' && token.text !== 'PM') {
      token.replace('a', false);
    }
  } else {
    value = parseInt(token.text);
    var rqMin = {
      d: 1,
      dd: 1,
      M: 1,
      MM: 1,
      y: 1890,
      yyyy: 1890,
      h: 1,
      hh: 1,
      HH: 0,
      H: 0,
      m: 0,
      mm: 0
    }[token.ident];
    var rqMax = {
      d: 31,
      dd: 31,
      M: 12,
      MM: 12,
      y: 2089,
      yyyy: 2089,
      h: 12,
      hh: 12,
      HH: 23,
      H: 23,
      m: 59,
      mm: 59
    }[token.ident];
    if (rqMin !== undefined) {
      if (!isNaN(value)) {
        if (value < rqMin || value > rqMin) {
          value = Math.max(rqMin, Math.min(rqMax, value));
          token.replace((0, _utils.zeroPadding)(value, token.ident.length), false);
          this._editingData.d = value;
        }
      } else if (token.text !== token.ident) {
        token.replace(token.ident, false);
      }
    }
  }
};
DateTimeInput.prototype._dateFrom = function (value) {
  var typeV = _typeof(value);
  if (typeV === 'string' || typeV === 'number') {
    value = new Date(value);
  }
  if (!value || !value.getTime) value = null;
  if (value) {
    value = new Date(value.getTime());
    value.setSeconds(0, 0);
  }
  return value || null;
};
DateTimeInput.property = {};
DateTimeInput.property.disabled = {
  set: function set(value) {
    this.$text.disabled = !!value;
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
DateTimeInput.property.notNull = {
  set: function set(value) {
    if (value) {
      this.addClass('as-must-not-null');
      if (!this.value) this.value = new Date();
    } else {
      this.removeClass('as-must-not-null');
    }
    this.value = this.value; //update
  },

  get: function get() {
    return this.hasClass('as-must-not-null');
  }
};
DateTimeInput.property.format = {
  set: function set(value) {
    value = value || 'dd/MM/yyyy HH:mm';
    var dict;
    if (this._value) {
      dict = this._makeValueDict(this._value);
    } else {
      dict = this._makeTokenDict(this.$text.value);
    }
    this._format = value;
    this.$text.value = this._applyTokenDict(value, dict);
  },
  get: function get() {
    return this._format;
  }
};
DateTimeInput.property.value = {
  set: function set(value) {
    this._value = this._dateFrom(value);
    var dict;
    if (this._value) {
      dict = this._makeValueDict(this._value);
    } else {
      dict = this._makeTokenDict(this.$text.value);
    }
    if (value) {
      this.$text.value = this._applyTokenDict(this._format, dict, true);
    } else {
      this.$text.value = this.format;
    }
    this._lastEmitValue = this._value;
  },
  get: function get() {
    return this._value;
  }
};
DateTimeInput.property.min = {
  set: function set(value) {
    this._min = this._dateFrom(value) || new Date(1890, 0, 1);
  },
  get: function get() {
    return this._min;
  }
};
DateTimeInput.property.max = {
  set: function set(value) {
    this._max = this._dateFrom(value) || new Date(new Date(2090, 0, 1).getTime() - 1);
  },
  get: function get() {
    return this._max;
  }
};
DateTimeInput.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
DateTimeInput.property.text = {
  get: function get() {
    return this.$text.value;
  }
};
DateTimeInput.eventHandler = {};
DateTimeInput.eventHandler.mouseUpInput = function () {
  if (!this.readOnly) {
    this.domSignal.emit('request_auto_select');
  }
};
DateTimeInput.eventHandler.mouseDownInput = function () {
  if (!this.readOnly && document.activeElement === this.$text) {
    this._correctingCurrentToken();
  }
};
DateTimeInput.eventHandler.dblclickInput = function (event) {
  event.preventDefault();
};

/***
 *
 * @param {KeyboardEvent} event
 */
DateTimeInput.eventHandler.keydown = function (event) {
  var kbId = (0, _keyboard.keyboardEventToKeyBindingIdent)(event);
  if (this.readOnly) {
    if (!kbId.match(/^arrow/) && !kbId.match(/^ctrl-[ca]/)) {
      event.preventDefault();
    }
    return;
  }
  var token = this._tokenAt(this.$text.selectionStart);
  var endToken = this._tokenAt(this.$text.selectionEnd);
  if (!token) {
    if (event.key === 'Enter') {
      this._correctingInput();
      this._loadValueFromInput();
      this._notifyIfChange(event);
    }
    return;
  }
  var newTokenText;
  var value;
  if (event.key.startsWith('Arrow') || [' ', ':', '/', '-'].indexOf(event.key) >= 0) {
    event.preventDefault();
    switch (event.key) {
      case 'ArrowLeft':
        this._editPrevToken();
        break;
      case 'ArrowRight':
      case ' ':
      case ':':
      case '/':
      case '-':
        this._editNextToken();
        break;
      case 'ArrowUp':
      case 'ArrowDown':
        switch (token.ident) {
          case 'dd':
          case 'd':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this._editingData.d = event.key === 'ArrowUp' ? 1 : 31;
            } else {
              this._editingData.d = 1 + (value + (event.key === 'ArrowUp' ? 0 : 29)) % 31;
            }
            newTokenText = '' + this._editingData.d;
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
          case 'MM':
          case 'M':
            value = parseInt(token.text) - 1;
            if (isNaN(value)) {
              this._editingData.M = event.key === 'ArrowUp' ? 0 : 11;
            } else {
              this._editingData.M = (value + (event.key === 'ArrowUp' ? 1 : 11)) % 12;
            }
            newTokenText = '' + (this._editingData.M + 1);
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
          case 'yyyy':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this._editingData.y = new Date().getFullYear();
            } else {
              this._editingData.y = Math.max(1890, Math.min(2089, value + (event.key === 'ArrowUp' ? 1 : -1)));
            }
            newTokenText = this._editingData.y + '';
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
          case "hh":
          case 'h':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this._editingData.h = event.key === 'ArrowUp' ? 1 : 12;
            } else {
              this._editingData.h = 1 + (value + (event.key === 'ArrowUp' ? 0 : 10)) % 12;
            }
            newTokenText = this._editingData.h + '';
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
          case "HH":
          case 'H':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this._editingData.H = event.key === 'ArrowUp' ? 1 : 12;
            } else {
              this._editingData.H = (value + (event.key === 'ArrowUp' ? 1 : 23)) % 24;
            }
            newTokenText = this._editingData.H + '';
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
          case "mm":
          case 'm':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this._editingData.m = event.key === 'ArrowUp' ? 0 : 59;
            } else {
              this._editingData.m = (value + (event.key === 'ArrowUp' ? 1 : 59)) % 60;
            }
            newTokenText = this._editingData.m + '';
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
          case 'a':
            value = token.text;
            this._editingData.a = value === 'PM' ? "AM" : "PM";
            newTokenText = this._editingData.a;
            token.replace(newTokenText, true);
            break;
        }
        break;
    }
  } else if (event.key === "Delete" || event.key === 'Backspace') {
    event.preventDefault();
    if (endToken.idx !== token.idx) {
      if (this.notNull) {
        this.$text.value = (0, _datetime.formatDateTime)(new Date(Math.max(this.min.getTime(), Math.min(this.max.getTime(), new Date().getTime()))), this.format);
      } else {
        this.$text.value = this._format;
      }
      this.$text.select();
    } else {
      if (this.notNull) {
        switch (token.ident) {
          case 'HH':
          case 'mm':
          case 'H':
          case 'm':
            token.replace((0, _utils.zeroPadding)(0, token.ident.length), true);
            break;
          case 'h':
          case 'hh':
            token.replace('12', true);
            break;
          case 'M':
          case 'MM':
          case 'dd':
          case 'd':
            token.replace((0, _utils.zeroPadding)(1, token.ident.length), true);
            break;
          case 'y':
          case 'yyyy':
            token.replace((0, _utils.zeroPadding)(Math.max(this.min.getFullYear(), Math.min(this.max.getFullYear(), new Date().getFullYear())), token.ident.length), true);
            break;
          case 'a':
            token.replace('AM', true);
            break;
        }
      } else {
        token.replace(token.ident, true);
      }
      if (event.key === "Delete") this._editNextToken();else this._editPrevToken();
    }
  } else if (event.key === "Enter" || event.key === 'Tab') {
    this._correctingInput();
    this._loadValueFromInput();
    this._notifyIfChange(event);
  } else if (event.ctrlKey) {
    switch (event.key) {
      case 'a':
      case 'A':
        break;
      case 'c':
      case 'C':
        break;
      case 'x':
      case 'X':
        this.domSignal.once('clear_value', function () {
          this.$text.value = this._format;
          this.$text.select();
        }.bind(this));
        this.domSignal.emit('clear_value');
        break;
      default:
        event.preventDefault();
    }
  } else if (event.key.match(/^[0-9]$/g)) {
    event.preventDefault();
    var dVal = parseInt(event.key);
    if (this._editingData.state === STATE_NEW) {
      switch (token.ident) {
        case 'dd':
        case 'd':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          this._editingData.d = dVal;
          if (dVal > 3) {
            this._editNextToken();
          }
          break;
        case 'MM':
        case 'M':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          this._editingData.M = dVal;
          if (dVal > 1) {
            this._editNextToken();
          }
          break;
        case 'yyyy':
        case 'y':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          this._editingData.state_num = 1;
          break;
        case 'm':
        case 'mm':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          if (dVal > 5) {
            this._editNextToken();
          }
          break;
        case 'h':
        case 'hh':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          if (dVal > 1) {
            this._editNextToken();
          }
          break;
        case 'HH':
        case 'H':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          if (dVal > 2) {
            this._editNextToken();
          }
          break;
      }
    } else {
      switch (token.ident) {
        case 'dd':
        case 'd':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(1, Math.min(31, dVal));
          this._editingData.d = dVal;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editNextToken();
          break;
        case 'MM':
        case 'M':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(1, Math.min(12, dVal));
          this._editingData.M = dVal - 1;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editNextToken();
          break;
        case 'yyyy':
        case 'y':
          dVal = (parseInt(token.text.replace(/^./, '')) || 0) * 10 + dVal;
          this._editingData.state_num++;
          if (this._editingData.state_num >= 4) {
            // dVal = Math.max(1890, Math.min(2089, dVal));
            token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
            this._editNextToken();
          } else {
            token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          }
          break;
        case 'm':
        case 'mm':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(0, Math.min(59, dVal));
          this._editingData.m = dVal;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editNextToken();
          break;
        case 'h':
        case 'hh':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(1, Math.min(12, dVal));
          this._editingData.h = dVal;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editNextToken();
          break;
        case 'H':
        case 'HH':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(0, Math.min(23, dVal));
          this._editingData.h = dVal;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editNextToken();
          break;
      }
    }
  } else if (event.key.match(/^[aApPSCsc]$/) && token.ident === 'a') {
    event.preventDefault();
    if (event.key.match(/^[aAsS]$/)) {
      token.replace('AM', true);
      this._editingData.a = "AM";
    } else {
      token.replace('PM', true);
      this._editingData.a = "PM";
    }
    this._editNextToken();
  } else {
    event.preventDefault();
  }
};
DateTimeInput.eventHandler.inputBlur = function () {
  this._correctingInput();
  this._loadValueFromInput();
  this._notifyIfChange();
};
DateTimeInput.eventHandler.clickPickerBtn = function () {
  this._attachPicker();
};
DateTimeInput.eventHandler.clickOut = function (event) {
  if ((0, _EventEmitter.hitElement)(this.share.$follower, event)) return;
  this._releasePicker();
};
DateTimeInput.eventHandler.clickCancelBtn = function () {
  this._releasePicker();
};
DateTimeInput.eventHandler.calendarPick = function (event) {
  var value = event.value;
  var tkDict = this._makeTokenDict(this.share.pickedValeText);
  if (tkDict.y) {
    tkDict.y.value = value.getFullYear();
  }
  if (tkDict.M) {
    tkDict.M.value = value.getMonth() + 1;
  }
  if (tkDict.d) {
    tkDict.d.value = value.getDate();
  }
  this.share.pickedValeText = this._applyTokenDict(this._format, tkDict);
};
DateTimeInput.eventHandler.clickOKBtn = function (event) {
  this.$text.value = this.share.pickedValeText;
  this._correctingInput();
  this._loadValueFromInput();
  this._notifyIfChange(event);
  this._releasePicker();
};
DateTimeInput.eventHandler.timePick = function (event) {
  var hour = event.hour;
  var minute = event.minute;
  var tkDict = this._makeTokenDict(this.share.pickedValeText);
  if (tkDict.h) {
    tkDict.h.value = 1 + (hour + 11) % 12;
    if (tkDict.a) {
      tkDict.a.value = hour >= 12 ? "PM" : 'AM';
    }
  }
  if (tkDict.H) {
    tkDict.H.value = hour;
  }
  if (tkDict.m) {
    tkDict.m.value = minute;
  }
  this.share.pickedValeText = this._applyTokenDict(this._format, tkDict);
};
DateTimeInput.prototype.share = {
  $follower: null,
  $calendar: null,
  $timePicker: null,
  $holdingInput: null
};
DateTimeInput.prototype._preparePicker = function () {
  if (!this.share.$follower) {
    this.share.$timePicker = (0, _ACore._)({
      tag: _ChromeTimePicker["default"].tag,
      "class": 'as-date-time-input-time-picker'
    });
    this.share.$calendar = (0, _ACore._)({
      tag: _ChromeCalendar["default"].tag,
      "class": 'as-date-time-input-date-picker'
    });
    if (this.share.$calendar.$attachHook) {
      this.share.$calendar.$attachHook.cancelWaiting();
    }
    this.share.$cancelBtn = (0, _ACore._)({
      tag: 'a',
      "class": 'as-select-list-box-cancel-btn',
      attr: {
        "data-ml-key": 'txt_cancel'
      }
    });
    this.share.$okBtn = (0, _ACore._)({
      tag: 'a',
      "class": 'as-select-list-box-ok-btn',
      attr: {
        "data-ml-key": 'txt_ok'
      }
    });
    this.share.$follower = (0, _ACore._)({
      tag: _Follower["default"].tag,
      "class": ['as-date-time-input-follower', 'as-dropdown-box-common-style'],
      child: [{
        "class": 'as-date-time-input-picker-ctn',
        child: [this.share.$calendar, this.share.$timePicker]
      }, {
        "class": 'as-dropdown-box-footer',
        child: [{
          "class": 'as-dropdown-box-footer-right',
          child: [this.share.$okBtn, this.share.$cancelBtn]
        }]
      }]
    });
    this.share.$follower.cancelWaiting();
  }
};
DateTimeInput.prototype._attachPicker = function () {
  this._preparePicker();
  if (this.share.$holdingInput) this.share.$holdingInput._releasePicker();
  this.share.pickedValeText = this.$text.value;
  this.share.$holdingInput = this;
  this.share.$follower.addStyle('visibility', 'hidden');
  this.share.$follower.addTo(document.body);
  this.share.$follower.followTarget = this;
  this.share.$follower.sponsorElement = this;
  this.$pickerBtn.off('click', this.eventHandler.clickPickerBtn);
  this.share.$calendar.on('pick', this.eventHandler.calendarPick);
  this.share.$timePicker.on('change', this.eventHandler.timePick);
  this.share.$okBtn.on('click', this.eventHandler.clickOKBtn);
  this.share.$cancelBtn.on('click', this.eventHandler.clickCancelBtn);
  if (this.share.$calendar.$attachHook) {
    this.share.$calendar.$attachHook.emit('attached');
  }
  var tkDict = this._makeTokenDict(this.$text.value);
  if (tkDict.h && !isNaN(tkDict.h.value)) {
    if (tkDict.a && tkDict.a.value === 'PM') {
      this.share.$timePicker.hour = 12 + tkDict.h.value % 12;
    } else {
      this.share.$timePicker.hour = tkDict.h.value % 12;
    }
  } else if (tkDict.H && (0, _utils.isRealNumber)(tkDict.H.value)) {
    this.share.$timePicker.hour = tkDict.H.value;
  } else {
    this.share.$timePicker.hour = null;
  }
  this.share.$timePicker.s24 = !!tkDict.H;
  if (tkDict.m && !isNaN(tkDict.m.value)) {
    this.share.$timePicker.minute = tkDict.m.value;
  } else {
    this.share.$timePicker.minute = null;
  }
  this.share.$timePicker.scrollIntoSelected();
  var date = null;
  if (tkDict.d && !isNaN(tkDict.d.value) && tkDict.M && !isNaN(tkDict.M.value) && tkDict.y && !isNaN(tkDict.y.value)) {
    date = new Date(tkDict.y.value, tkDict.M.value - 1, tkDict.d.value);
    if (isNaN(date.getTime())) date = null;
  }
  if (date) {
    this.share.$calendar.selectedDates = [date];
    this.share.$calendar.viewDate = date;
  } else {
    this.share.$calendar.selectedDates = [];
    var viewDate = null;
    if (tkDict.y && !isNaN(tkDict.y.value)) {
      if (tkDict.M && !isNaN(tkDict.M.value)) {
        if (tkDict.d && !isNaN(tkDict.d.value)) {
          viewDate = new Date(tkDict.y.value, tkDict.M.value - 1, tkDict.d.value);
        } else {
          viewDate = new Date(tkDict.y.value, tkDict.M.value - 1, 1);
        }
      } else {
        viewDate = new Date(tkDict.y.value, 0, 1);
      }
    } else {
      viewDate = new Date();
    }
    if (viewDate && !isNaN(viewDate.getTime())) {
      this.share.$calendar.viewDate = viewDate;
    } else {
      this.share.$calendar.viewDate = new Date();
    }
  }
  setTimeout(function () {
    this.share.$follower.removeStyle('visibility');
    document.addEventListener('click', this.eventHandler.clickOut);
  }.bind(this), 5);
};
DateTimeInput.prototype._releasePicker = function () {
  if (this.share.$holdingInput !== this) return;
  this.share.$follower.remove();
  this.share.$holdingInput = null;
  this.share.$calendar.off('pick', this.eventHandler.calendarPick);
  this.share.$timePicker.off('change', this.eventHandler.timePick);
  this.share.$okBtn.off('click', this.eventHandler.clickOKBtn);
  this.share.$cancelBtn.off('click', this.eventHandler.clickCancelBtn);
  document.removeEventListener('click', this.eventHandler.clickOut);
  setTimeout(function () {
    this.$pickerBtn.on('click', this.eventHandler.clickPickerBtn);
  }.bind(this));
};
_ACore["default"].install(DateTimeInput);
var _default = DateTimeInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var originSetTimeout = setTimeout;
var originClearTimeout = clearTimeout;
var originSetInterval = setInterval;
var originClearInterval = clearInterval;
var pendingTimeout = 0;
var pendingInterval = 0;
var timeoutDict = {};
var intervalDict = {};
function DebugTask() {
  var res = _({
    "class": 'absol-debug-task',
    child: [{
      child: [{
        tag: 'span',
        "class": 'absol-debug-task-name',
        child: {
          text: 'settimeout '
        }
      }, {
        tag: 'span',
        "class": ['absol-debug-task-value', 'settimeout'],
        child: {
          text: '0'
        }
      }]
    }, {
      child: [{
        tag: 'span',
        "class": 'absol-debug-task-name',
        child: {
          text: 'setintervel '
        }
      }, {
        tag: 'span',
        "class": ['absol-debug-task-value', 'setinterval'],
        child: {
          text: '0'
        }
      }]
    }, {
      child: [{
        tag: 'span',
        "class": 'absol-debug-task-name',
        child: {
          text: 'Work '
        }
      }, {
        tag: 'span',
        "class": ['absol-debug-task-value', 'work'],
        child: {
          text: '0%'
        }
      }]
    }]
  });
  res._timeout = 0;
  res._interval = 0;
  res._work = 0;
  res.$setTimeOutValue = $('.absol-debug-task-value.settimeout', res);
  res.$setIntervalValue = $('.absol-debug-task-value.setinterval', res);
  res.$setWorkValue = $('.absol-debug-task-value.work', res);
  return res;
}
DebugTask.property = {};
DebugTask.property.timeout = {
  set: function set(value) {
    this._timeout = value;
    this.$setTimeOutValue.innerHTML = value + '';
  },
  get: function get() {
    return this._timeout;
  }
};
DebugTask.property.interval = {
  set: function set(value) {
    this._interval = value;
    this.$setIntervalValue.innerHTML = value + '';
  },
  get: function get() {
    return this._interval;
  }
};
DebugTask.property.work = {
  set: function set(value) {
    this._work = value;
    value = (value * 100).toFixed(1);
    this.$setWorkValue.innerHTML = value + '%';
  },
  get: function get() {
    return this._work;
  }
};
DebugTask.start = function () {
  if (DebugTask.started) return;
  if (!DebugTask.$view) {
    DebugTask.$view = _('debugtask');
  }
  var times = [];
  originSetInterval(function () {
    var now = performance.now();
    while (times.length > 0 && times[0].end < now - 2000) {
      times.shift();
    }
    if (times.length == 0) DebugTask.$view.work = 0;
  }, 3000);
  __webpack_require__.g.setTimeout = function () {
    var args = Array.prototype.map.call(arguments, function (x) {
      return x;
    });
    var originCallback = arguments[0];
    if (typeof originCallback == 'undefined') return;
    if (typeof originCallback == 'string') {
      originCallback = new Function(originCallback);
    }
    args[0] = function () {
      var ret;
      try {
        var now = performance.now();
        while (times.length > 0 && times[0].end < now - 1000) {
          times.shift();
        }
        ret = originCallback.apply(null, arguments);
        var now1 = performance.now();
        var _long = now1 - now;
        times.push({
          "long": _long,
          start: now,
          end: now1
        });
        var sTime = 0;
        for (var i = 0; i < times.length; ++i) {
          sTime += times[i]["long"];
        }
        DebugTask.$view.work = sTime / Math.max(now1 - times[0].start, 1000);
      } catch (e) {
        console.error(e);
      }
      if (timeoutDict[timeoutId]) {
        pendingTimeout--;
        delete timeoutDict[timeoutId];
        DebugTask.$view.timeout = pendingTimeout;
      }
      return ret;
    };
    var timeoutId = originSetTimeout.apply(__webpack_require__.g, args);
    pendingTimeout++;
    timeoutDict[timeoutId] = true;
    DebugTask.$view.timeout = pendingTimeout;
    return timeoutId;
  };
  __webpack_require__.g.clearTimeout = function (timeoutId) {
    if (timeoutDict[timeoutId]) {
      pendingTimeout--;
      delete timeoutDict[timeoutId];
      DebugTask.$view.timeout = pendingTimeout;
    }
    return originClearTimeout.apply(__webpack_require__.g, arguments);
  };
  __webpack_require__.g.setInterval = function () {
    var args = Array.prototype.map.call(arguments, function (x) {
      return x;
    });
    var originCallback = arguments[0];
    if (typeof originCallback == 'undefined') return;
    if (typeof originCallback == 'string') {
      originCallback = new Function(originCallback);
    }
    args[0] = function () {
      var ret;
      try {
        var now = performance.now();
        while (times.length > 0 && times[0].end < now - 1000) {
          times.shift();
        }
        ret = originCallback.apply(null, arguments);
        var now1 = performance.now();
        var _long2 = now1 - now;
        times.push({
          "long": _long2,
          start: now,
          end: now1
        });
        var sTime = 0;
        for (var i = 0; i < times.length; ++i) {
          sTime += times[i]["long"];
        }
        DebugTask.$view.work = sTime / Math.max(now1 - times[0].start, 1000);
      } catch (e) {
        console.error(e);
      }
      return ret;
    };
    var intervalId = originSetInterval.apply(__webpack_require__.g, args);
    pendingInterval++;
    intervalDict[intervalId] = true;
    DebugTask.$view.interval = pendingInterval;
    return intervalId;
  };
  __webpack_require__.g.clearInterval = function (intervalId) {
    var args = Array.prototype.map.call(arguments, function (x) {
      return x;
    });
    if (intervalDict[intervalId]) {
      pendingInterval--;
      delete intervalDict[intervalId];
      DebugTask.$view.interval = pendingInterval;
    }
    return originClearInterval.apply(__webpack_require__.g, args);
  };
  _Dom["default"].documentReady.then(function () {
    DebugTask.$view.addTo(document.body);
  });
};
_ACore["default"].install('debugtask', DebugTask);
var _default = DebugTask;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function Draggable(element) {
  if (!element) element = _ACore["default"]._('div');else _ACore["default"].$(element);
  element.defineEvent(['predrag', 'drag', 'begindrag', 'enddrag']);
  var body = _ACore["default"].$('body');
  var isMoving = false;
  var firstMove = false;
  var offsetX;
  var offsetY;
  var fontSize;
  var left0em, top0em, left0, top0;
  var finishMoving = function finishMoving(event) {
    if (isMoving) {
      isMoving = false;
      body.off('mousemove', mouseMoveEventHandler);
      event.moveDX = event.clientX - offsetX;
      event.moveDY = event.clientY - offsetY;
      event.moveDXem = event.moveDX / fontSize;
      event.moveDYem = event.moveDY / fontSize;
      event.moveToX = left0 + event.moveDX;
      event.moveToY = top0 + event.moveDY;
      element.emit('enddrag', event);
    }
  };
  var mouseUpEventHandler = function mouseUpEventHandler(event) {
    finishMoving(event);
  };
  var mouseMoveEventHandler = function mouseMoveEventHandler(event) {
    event.preventDefault();
    event.moveDX = event.clientX - offsetX;
    event.moveDY = event.clientY - offsetY;
    event.moveDXem = event.moveDX / fontSize;
    event.moveDYem = event.moveDY / fontSize;
    event.moveToX = left0 + event.moveDX;
    event.moveToY = top0 + event.moveDY;
    event.moveToXem = left0em + event.moveDXem;
    event.moveToYem = top0em + event.moveDYem;
    if (firstMove) {
      firstMove = false;
      element.emit('begindrag', event);
    }
    element.emit('drag', event);
  };
  var mouseOutEventHandler = function mouseOutEventHandler(event) {
    finishMoving(event);
  };
  var mouseDownEventHandler = function mouseDownEventHandler(event) {
    isMoving = true;
    firstMove = true;
    body.on('mousemove', mouseMoveEventHandler);
    body.once('mouseleave', mouseOutEventHandler);
    body.once('mouseup', mouseUpEventHandler);
    fontSize = this.getFontSize();
    offsetX = event.clientX;
    offsetY = event.clientY;
    left0 = parseFloat(element.getComputedStyleValue('left').replace('px', ''));
    top0 = parseFloat(element.getComputedStyleValue('top').replace('px', ''));
    left0em = left0 / fontSize;
    top0em = top0 / fontSize;
    event.x0 = left0;
    event.y0 = top0;
    event.y0em = left0em;
    event.y0em = top0em;
    element.emit('predrag', event);
  };
  element.on('mousedown', mouseDownEventHandler);
  return element;
}
;
var _default = Draggable;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
__webpack_require__(21984);
var _DraggableVStack = _interopRequireDefault(__webpack_require__(73816));
var _Vec = _interopRequireDefault(__webpack_require__(73316));
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _PositionTracker = _interopRequireDefault(__webpack_require__(97252));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @augments DraggableVStack
 * @augments PositionTracker
 * @constructor
 */
function DraggableHStack() {
  this._dragData = null;
  this.$cloneContainer = _('.absol-draggable-stack-clone-container');
  this.on('predrag', this.eventHandler.predrag).on('dragstart', this.eventHandler.dragstart).on('drag', this.eventHandler.drag).on('dragend', this.eventHandler.dragend);
  _({
    elt: this,
    tag: _PositionTracker["default"]
  }).on('positionchange', this._updateDraggingPosition.bind(this));
}
DraggableHStack.tag = "DraggableHStack".toLowerCase();
DraggableHStack.render = function () {
  return _({
    tag: 'hanger',
    extendEvent: 'change',
    "class": ['absol-draggable-stack', 'absol-draggable-hstack']
  });
};

/***
 *
 * @param {Rectangle} rect
 * @returns {number}
 * @private
 */
DraggableHStack.prototype._findDropIdx = function (rect) {
  if (!this._dragData) return -1;
  var centerX = rect.x + rect.width / 2;
  var currentBound = _Rectangle["default"].fromClientRect(this.getBoundingClientRect());
  var nearestDistance = Math.abs(centerX - currentBound.width); //end of stack
  var cDist;
  var nearestIndex = this._dragData.childBounds.length;
  var childX;
  for (var i = 0; i < this._dragData.childBounds.length; ++i) {
    childX = this._dragData.childBounds[i].x + currentBound.x - this._dragData.bound.x;
    cDist = Math.abs(centerX - childX);
    if (cDist < nearestDistance) {
      nearestDistance = cDist;
      nearestIndex = i;
    }
  }
  return nearestIndex;
};

/***
 *
 * @type {DraggableHStack|{}}
 */
DraggableHStack.eventHandler = {};
DraggableHStack.eventHandler.predrag = _DraggableVStack["default"].eventHandler.predrag;
DraggableHStack.eventHandler.dragstart = function (event) {
  this.addClass('as-has-dragging');
  this.startTrackPosition();
  var mousePos = new _Vec["default"](event.clientX, event.clientY);
  var elt = this._findDirectChild(event.target);
  var childBounds = Array.prototype.map.call(this.childNodes, function (e) {
    return _Rectangle["default"].fromClientRect(e.getBoundingClientRect());
  });
  var eltIdx = Array.prototype.indexOf.call(this.childNodes, elt);
  var eltBound = childBounds[eltIdx];
  var eltMouseOffset = mousePos.sub(new _Vec["default"](eltBound.x, eltBound.y));
  this._dragData = {
    mouseStartPos: mousePos,
    mousePos: mousePos,
    bound: _Rectangle["default"].fromClientRect(this.getBoundingClientRect()),
    childBounds: childBounds,
    elt: elt,
    eltIdx: eltIdx,
    eltBound: eltBound,
    eltMouseOffset: eltMouseOffset
  };
  this.$cloneContainer.addStyle({
    left: eltBound.x + 'px',
    top: eltBound.y + 'px',
    width: eltBound.width + 'px',
    height: eltBound.height + 'px'
  }).clearChild().addChild($(elt.cloneNode(true))).addTo(document.body);
  elt.addClass('as-dragging');
  this._updateDraggingPosition();
};
DraggableHStack.eventHandler.drag = function (event) {
  event.preventDefault();
  this._dragData.mousePos = new _Vec["default"](event.clientX, event.clientY);
  this._updateDraggingPosition();
};
DraggableHStack.eventHandler.dragend = function (event) {
  var thisS = this;
  this.stopTrackPosition();
  this.removeClass('as-has-dragging');
  this._dragData.elt.removeClass('as-dragging');
  if (this._dragData.destIdx == this._dragData.eltIdx || this._dragData.destIdx == this._dragData.eltIdx + 1) {
    this.$cloneContainer.addClass('as-home-going');
    this._updateDraggingPosition();
    setTimeout(function () {
      thisS.$cloneContainer.selfRemove().removeClass('as-home-going');
    }, 100);
  } else {
    if (this._dragData.destIdx === this._dragData.childBounds.length) {
      this._dragData.elt.remove();
      this.addChild(this._dragData.elt);
      this.emit('change', {
        type: 'change',
        elt: this._dragData.elt,
        sourceIndex: this._dragData.eltIdx,
        destIndex: this._dragData.childBounds.length,
        oldIdx: this._dragData.eltIdx,
        newIdx: this._dragData.childBounds.length - 1,
        desc: "Move element to end of stack."
      }, this);
    } else {
      var beforeElt = this.childNodes[this._dragData.destIdx];
      this._dragData.elt.remove();
      this.addChildBefore(this._dragData.elt, beforeElt);
      this.emit('change', {
        type: 'change',
        elt: this._dragData.elt,
        sourceIndex: this._dragData.eltIdx,
        destIndex: this._dragData.destIdx,
        oldIdx: this._dragData.eltIdx,
        newIdx: this._dragData.destIdx > this._dragData.eltIdx ? this._dragData.destIdx - 1 : this._dragData.destIdx,
        desc: "Move element to before  this.childNodes[" + this._dragData.destIdx + "]"
      }, this);
    }
    this.$cloneContainer.selfRemove().removeClass('as-home-going');
  }
  this.removeClass('as-no-change');
};
DraggableHStack.prototype._findDragzone = _DraggableVStack["default"].prototype._findDragzone;
DraggableHStack.prototype._findDirectChild = _DraggableVStack["default"].prototype._findDirectChild;
DraggableHStack.prototype._updateDraggingPosition = function () {
  var bound = this.getBoundingClientRect();
  var x, y;
  if (this.$cloneContainer.hasClass('as-home-going')) {
    x = this._dragData.eltBound.x - this._dragData.bound.x + bound.left;
    y = this._dragData.eltBound.y - this._dragData.bound.y + bound.top;
  } else {
    y = bound.top + (this._dragData.eltBound.y - this._dragData.bound.y);
    var newPos = this._dragData.mousePos.sub(this._dragData.eltMouseOffset);
    x = newPos.x;
  }
  this.$cloneContainer.addStyle({
    left: x + 'px',
    top: y + 'px'
  });
  var cBound = this._dragData.eltBound.clone();
  cBound.x = x;
  cBound.y = y;
  var destIdx = this._findDropIdx(cBound);
  this._dragData.destIdx = destIdx;
  var destX;
  if (destIdx >= this._dragData.childBounds.length) {
    var lastRect = this._dragData.childBounds[this._dragData.childBounds.length - 1];
    destX = lastRect.x + lastRect.width - this._dragData.bound.x;
  } else {
    destX = this._dragData.childBounds[destIdx].x - this._dragData.bound.x;
  }
  this.addStyle('--dest-x', destX + 'px');
  if (destIdx == this._dragData.eltIdx || destIdx == this._dragData.eltIdx + 1) {
    this.addClass('as-no-change');
  } else {
    this.removeClass('as-no-change');
  }
};
_ACore["default"].install(DraggableHStack);
var _default = DraggableHStack;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
__webpack_require__(21984);
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
var _utils = __webpack_require__(84512);
var _stringGenerate = __webpack_require__(10713);
var _Vec = _interopRequireDefault(__webpack_require__(73316));
var _PositionTracker = _interopRequireDefault(__webpack_require__(97252));
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @augments Hanger
 * @augments PositionTracker
 * @constructor
 */
function DraggableVStack() {
  _({
    tag: 'PositionTracker'.toLowerCase(),
    elt: this
  });
  this.$cloneContainer = _('.absol-draggable-stack-clone-container');
  this.on('predrag', this.eventHandler.predrag).on('dragstart', this.eventHandler.dragstart).on('drag', this.eventHandler.drag).on('dragend', this.eventHandler.dragend);
  this._state = 0;
  this.friends = [];
  this.$friends = [];
  this._privateDraggableVStackIdent = (0, _stringGenerate.randomIdent)(35);
  this._dragData = null;
  this.on('positionchange', this.eventHandler.scroll);
}
DraggableVStack.tag = 'DraggableVStack'.toLowerCase();
DraggableVStack.render = function () {
  return _({
    tag: 'hanger',
    extendEvent: ['change', 'orderchange', 'itemleave', 'itementer'],
    "class": ['absol-draggable-stack', 'absol-draggable-vstack']
  });
};
DraggableVStack.prototype._updateFriends = function () {
  var dict = {};
  dict[this._privateDraggableVStackIdent] = this;
  this.$friends = this.friends.reduce(function (ac, cr) {
    if (_Dom["default"].isDomNode(cr)) {
      if (cr._privateDraggableVStackIdent) {
        ac.result.push(cr);
        ac.dict[cr._privateDraggableVStackIdent] = cr;
      }
    } else if (typeof cr === 'string') {
      $(cr, false, function (elt) {
        if (elt._privateDraggableVStackIdent) {
          if (!ac.dict[elt._privateDraggableVStackIdent]) {
            ac.result.push(elt);
            ac.dict[elt._privateDraggableVStackIdent] = elt;
          }
        }
      });
    }
    return ac;
  }, {
    dict: dict,
    result: []
  }).result;
};
DraggableVStack.prototype._findIndex = function (clientY) {
  var childBounds = Array.prototype.map.call(this.childNodes, function (elt) {
    return elt.getBoundingClientRect();
  });
  var childTops = childBounds.map(function (b) {
    return b.top;
  });
  childTops.push((childBounds[childBounds.length - 1] || this.getBoundingClientRect()).bottom);
  var nearestIdx = 0;
  var nearestVal = 10000000;
  var val;
  for (var i = 0; i < childTops.length; ++i) {
    val = Math.abs(clientY - childTops[i]);
    if (val < nearestVal) {
      nearestVal = val;
      nearestIdx = i;
    }
  }
  return nearestIdx;
};

/***
 *
 * @type {DraggableVStack|{}}
 */
DraggableVStack.eventHandler = {};
DraggableVStack.eventHandler.predrag = function (event) {
  var dragzone = this._findDragzone(event.target);
  if (!dragzone) {
    event.cancel();
  }
};
DraggableVStack.eventHandler.dragstart = function (event) {
  this.startTrackPosition();
  event.preventDefault();
  this._updateFriends();
  this._state = 1;
  this.addClass('as-state-drag');
  this._dragData = {
    mouseStartPos: new _Vec["default"](event.clientX, event.clientY),
    elt: this._findDirectChild(event.target),
    rootBound: this.getBoundingClientRect(),
    dest: this
  };
  this._dragData.mouseCurrentPos = this._dragData.mouseStartPos;
  this._updateDestChildrenBound();
  this._dragData.idx = Array.prototype.indexOf.call(this.childNodes, this._dragData.elt);
  this._dragData.eltBound = this._dragData.destChildBounds[this._dragData.idx];
  this._dragData.offsetPos = this._dragData.mouseStartPos.sub(new _Vec["default"](this._dragData.eltBound.left, this._dragData.eltBound.top));
  this._dragData.eltRelative = new _Vec["default"](this._dragData.eltBound.left, this._dragData.eltBound.top).sub(new _Vec["default"](this._dragData.rootBound.left, this._dragData.rootBound.top));
  this.$cloneContainer.addTo(document.body);
  this.$cloneContainer.clearChild().addChild($(this._dragData.elt.cloneNode(true)).addStyle({
    boxSizing: 'border-box',
    width: this._dragData.eltBound.width + 'px',
    height: this._dragData.eltBound.height + 'px'
  }));
  this.$cloneContainer.addStyle({
    left: this._dragData.eltBound.left + 'px',
    top: this._dragData.eltBound.top + 'px'
  });
  this._dragData.elt.addClass('dragging');
};
DraggableVStack.eventHandler.drag = function (event) {
  event.preventDefault();
  this._dragData.mouseCurrentPos = new _Vec["default"](event.clientX, event.clientY);
  this._updateHoverDest();
  this._updateDraggingPosition();
  this.eventHandler.dragOverflow(event);
};
DraggableVStack.prototype.getClientY = function () {
  var top = 1000000;
  var bottom = -10000000;
  var child;
  var childBound;
  for (var i = 0; i < this.childNodes.length; ++i) {
    child = this.childNodes[i];
    if (child === this.$cloneContainer) continue;
    if (child.getBoundingClientRect) {
      childBound = child.getBoundingClientRect();
      top = Math.min(top, childBound.top);
      bottom = Math.max(bottom, childBound.bottom);
    }
  }
  return {
    top: top,
    bottom: bottom
  };
};
DraggableVStack.eventHandler.dragOverflow = function (event) {
  var scroller = this;
  while (scroller) {
    var overflowStyle = window.getComputedStyle(scroller)['overflow'];
    if ((overflowStyle === 'auto' || overflowStyle === 'scroll' || scroller.tagName === 'HTML') && scroller.clientHeight < scroller.scrollHeight) break;
    scroller = scroller.parentElement;
  }
  if (!scroller) return;
  var outBound = scroller.getBoundingClientRect();
  var bBound = this.$cloneContainer.getBoundingClientRect();
  var screenSize = _Dom["default"].getScreenSize();
  if (scroller.tagName !== "HTML") {
    outBound = {
      top: Math.max(outBound.top, 0),
      bottom: Math.min(outBound.bottom, screenSize.height)
    };
  } else {
    outBound = {
      top: 0,
      bottom: screenSize.height
    };
  }
  var vy = 0;
  if (bBound.top < outBound.top) {
    vy = bBound.top - outBound.top;
  } else if (bBound.bottom > outBound.bottom) {
    vy = bBound.bottom - outBound.bottom;
  }
  var dt = 1 / 30;
  if (vy !== 0) {
    var copyEvent = {
      type: event.type,
      preventDefault: function preventDefault() {/* noop */
      },
      target: event.target
    };
    copyEvent.clientX = event.clientX;
    copyEvent.clientY = event.clientY;
    var thisBT = this;
    setTimeout(function () {
      if (scroller.scrollHeight > scroller.clientHeight) {
        scroller.scrollTop += (0, _utils.absCeil)(vy * dt);
      }
      if (thisBT._state === 1) {
        thisBT.eventHandler.dragOverflow(copyEvent);
      }
    }, dt * 1000);
  }
};
DraggableVStack.eventHandler.scroll = function (event) {
  this._updateDraggingPosition();
};
DraggableVStack.eventHandler.dragend = function (event) {
  this.stopTrackPosition();
  event.preventDefault();
  this._dragData.dest.removeClass('as-state-drag');
  this.$cloneContainer.remove();
  this._dragData.elt.removeClass('dragging');
  this.removeClass('as-state-no-change');
  this._state = 0;
  var beforeElt;
  if (this._dragData.dest === this) {
    if (this._dragData.idx === this._dragData.destIdx || this._dragData.idx + 1 === this._dragData.destIdx) {
      //todo
    } else {
      if (this._dragData.destIdx === this.childNodes.length) {
        this._dragData.elt.remove();
        this.addChild(this._dragData.elt);
        this.emit('change', {
          type: 'change',
          fromStack: this,
          toStack: this,
          elt: this._dragData.elt,
          sourceIndex: this._dragData.idx,
          destIndex: this.childNodes.length,
          oldIdx: this._dragData.idx,
          newIdx: this.childNodes.length - 1,
          desc: "Move element to end of stack."
        }, this);
        this.emit('orderchange', {
          type: 'orderchange',
          fromStack: this,
          toStack: this,
          elt: this._dragData.elt,
          oldIdx: this._dragData.idx,
          newIdx: this.childNodes.length - 1,
          desc: "Move element to end of stack."
        }, this);
      } else {
        beforeElt = this.childNodes[this._dragData.destIdx];
        this._dragData.elt.remove();
        this.addChildBefore(this._dragData.elt, beforeElt);
        this.emit('change', {
          type: 'change',
          fromStack: this,
          toStack: this,
          elt: this._dragData.elt,
          sourceIndex: this._dragData.idx,
          destIndex: this._dragData.destIdx,
          oldIdx: this._dragData.idx,
          newIdx: this._dragData.destIdx > this._dragData.idx ? this._dragData.destIdx - 1 : this._dragData.destIdx,
          desc: "Move element to before  this.childNodes[" + this._dragData.destIdx + "]"
        }, this);
        this.emit('orderchange', {
          type: 'orderchange',
          fromStack: this,
          toStack: this,
          elt: this._dragData.elt,
          oldIdx: this._dragData.idx,
          newIdx: this._dragData.destIdx > this._dragData.idx ? this._dragData.destIdx - 1 : this._dragData.destIdx,
          desc: "Move element to before  this.childNodes[" + this._dragData.destIdx + "]"
        }, this);
      }
    }
  } else {
    if (this._dragData.destIdx === this._dragData.dest.childNodes.length) {
      this.emit('orderchange', {
        type: 'itemleave',
        fromStack: this,
        toStack: this._dragData.dest,
        oldIdx: this._dragData.idx,
        newIdx: this.childNodes.length - 1,
        desc: "Move element to end of friend stack."
      }, this);
      this._dragData.elt.remove();
      this._dragData.dest.addChild(this._dragData.elt);
      this._dragData.dest.emit('orderchange', {
        type: 'itementer',
        fromStack: this,
        toStack: this._dragData.dest,
        oldIdx: this._dragData.idx,
        newIdx: this.childNodes.length - 1,
        desc: "Move element to end of friend stack."
      }, this._dragData.dest);
      this.emit('change', {
        type: 'change',
        fromStack: this,
        toStack: this._dragData.dest,
        elt: this._dragData.elt,
        sourceIndex: this._dragData.idx,
        destIndex: this.childNodes.length,
        oldIdx: this._dragData.idx,
        newIdx: this.childNodes.length - 1,
        desc: "Move element to end of friend stack."
      });
    } else {
      beforeElt = this._dragData.dest.childNodes[this._dragData.destIdx];
      this._dragData.elt.remove();
      this.emit('itemleave', {
        type: 'itemleave',
        fromStack: this,
        toStack: this._dragData.dest,
        elt: this._dragData.elt,
        oldIdx: this._dragData.idx,
        newIdx: this._dragData.destIdx,
        desc: "Move element to before friend.childNodes[" + this._dragData.destIdx + "]"
      }, this);
      this._dragData.dest.addChildBefore(this._dragData.elt, beforeElt);
      this._dragData.dest.emit('itementer', {
        type: 'itementer',
        fromStack: this,
        toStack: this._dragData.dest,
        elt: this._dragData.elt,
        oldIdx: this._dragData.idx,
        newIdx: this._dragData.destIdx,
        desc: "Move element to before friend.childNodes[" + this._dragData.destIdx + "]"
      }, this._dragData.dest);
      this.emit('change', {
        type: 'change',
        fromStack: this,
        toStack: this._dragData.dest,
        elt: this._dragData.elt,
        sourceIndex: this._dragData.idx,
        destIndex: this._dragData.destIdx,
        oldIdx: this._dragData.idx,
        newIdx: this._dragData.destIdx,
        desc: "Move element to before friend.childNodes[" + this._dragData.destIdx + "]"
      }, this);
    }
  }
};
DraggableVStack.prototype._updateDestChildrenBound = function () {
  var top0 = this._dragData.dest.getBoundingClientRect().top;
  this._dragData.destChildBounds = Array.prototype.map.call(this._dragData.dest.childNodes, function (elt) {
    return elt.getBoundingClientRect();
  });
  this._dragData.destChildTops = this._dragData.destChildBounds.map(function (bound) {
    return bound.top - top0;
  }).concat([(this._dragData.destChildBounds[this._dragData.destChildBounds.length - 1] || this.getBoundingClientRect()).bottom - top0]);
};
DraggableVStack.prototype._updateHoverDest = function () {
  var bound;
  var newDest;
  var friendElt;
  var friendList = this.$friends.concat([this]);
  var top0;
  for (var i = 0; i < friendList.length; ++i) {
    friendElt = friendList[i];
    bound = _Rectangle["default"].fromClientRect(friendElt.getBoundingClientRect());
    if (bound.containsPoint(this._dragData.mouseCurrentPos)) {
      top0 = bound.y;
      newDest = friendElt;
      break;
    }
  }
  if (newDest && this._dragData.dest !== newDest) {
    this._dragData.dest.removeClass('as-state-drag');
    this._dragData.dest = newDest;
    this._dragData.dest.addClass('as-state-drag');
    this._dragData.dest.addStyle('--dest-y', 'unset');
    this._updateDestChildrenBound();
  }
};
DraggableVStack.prototype._updateDraggingPosition = function () {
  var bound = this.getBoundingClientRect();
  var clonePos = this._dragData.mouseCurrentPos.sub(this._dragData.offsetPos);
  this.$cloneContainer.addStyle({
    top: clonePos.y + 'px',
    left: bound.left + 'px'
  });
  this._dragData.destIdx = this._dragData.dest._findIndex(clonePos.y + this._dragData.eltBound.height / 2);
  this._dragData.dest.addStyle('--dest-y', this._dragData.destChildTops[this._dragData.destIdx] + 'px');
  if (this._dragData.dest === this) {
    if (this._dragData.idx === this._dragData.destIdx || this._dragData.idx + 1 === this._dragData.destIdx) {
      this.addClass('as-state-no-change');
    } else {
      this.removeClass('as-state-no-change');
    }
  }
};
DraggableVStack.prototype._autoScrollParentIfNeed = function (delta) {
  //todo: choose which element should be scroll
  if (!(delta > 0)) delta = 10000;
  var bound = this.getBoundingClientRect();
  var cloneBound = this.$cloneContainer.getBoundingClientRect();
  var outBound = _Dom["default"].traceOutBoundingClientRect(this.$cloneContainer);
  if (outBound.bottom >= cloneBound.bottom && outBound.top <= cloneBound.top) return;
  var scrollables = [];
  var current = this;
  while (current) {
    var oy = window.getComputedStyle(current);
    oy = oy['overflow-y'] || oy['overflowY'];
    if (oy == 'auto' || oy == 'scroll') {
      scrollables.push(current);
    }
    current = current.parentElement;
  }
  scrollables.push(document.body.parentElement);
};
DraggableVStack.prototype._findDragzone = function (elt) {
  var result = null;
  while (elt && elt != this) {
    if (elt.classList && elt.classList.contains('drag-zone')) {
      result = elt;
      break;
    }
    elt = elt.parentNode;
  }
  if (result) {
    elt = result;
    while (elt && elt != this) {
      if (elt.classList && elt.classList.contains('absol-draggable-stack')) {
        result = null;
        break;
      }
      elt = elt.parentNode;
    }
  }
  return result;
};
DraggableVStack.prototype._findDirectChild = function (elt) {
  while (elt && elt != this) {
    if (elt.parentNode == this) return elt;
    elt = elt.parentNode;
  }
  return undefined;
};
DraggableVStack.property = {};
DraggableVStack.property.friends = {
  set: function set(value) {
    if (!(value instanceof Array)) value = [value];
    this._friends = value;
  },
  get: function get() {
    return this._friends;
  }
};
_ACore["default"].install(DraggableVStack);
var _default = DraggableVStack;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(1784);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _ExpTree = __webpack_require__(87326);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/**
 * @extends AElement
 * @constructor
 */
function DropPanel() {
  var thisDP = this;
  /***
   *
   * @type {ExpGroup}
   */
  this.$body = $('.absol-drop-panel-body', this);
  this.$head = $('.absol-drop-panel-head', this).on('click', thisDP.eventHandler.clickHead);
  this.$name = $('.absol-drop-panel-name', thisDP);
  _OOP["default"].drillProperty(this, this.$name, 'name', 'innerHTML');
  return thisDP;
}
DropPanel.tag = 'DropPanel'.toLowerCase();
DropPanel.render = function () {
  return _({
    "class": 'absol-drop-panel',
    extendEvent: ['toggle'],
    child: [{
      "class": 'absol-drop-panel-head',
      child: ['toggler-ico', {
        tag: 'span',
        "class": "absol-drop-panel-name"
      }]
    }, {
      tag: 'expgroup',
      "class": ['absol-drop-panel-body', 'absol-bscroller']
    }]
  });
};
DropPanel.eventHandler = {};
DropPanel.eventHandler.clickHead = function (event) {
  if (!this._childOfButton(event.target)) {
    var event = {
      target: this,
      isShowed: this.show,
      preventDefault: function preventDefault() {
        this.prevented = true;
      }
    };
    this.emit('toggle', event, this);
    if (!event.prevented) {
      this.toggle();
    }
  }
};
['findChildBefore', 'findChildAfter', 'removeChild', 'clearChild', 'addChild'].forEach(function (key) {
  DropPanel.prototype[key] = function () {
    this.$body[key].apply(this.$body, arguments);
  };
});
DropPanel.prototype._childOfButton = function (elt) {
  while (elt && elt != this) {
    if (elt.tagName == "BUTTON") {
      return true;
    }
    elt = elt.parentElement;
  }
  return false;
};
DropPanel.prototype.toggle = function () {
  this.show = !this.show;
};
DropPanel.property = {};
DropPanel.property.show = {
  set: function set(value) {
    if (value) {
      var maxHeight = parseFloat(this.getComputedStyleValue('max-height').replace('px', ''));
      var headBound = this.$head.getBoundingClientRect();
      if (maxHeight != 'none' && maxHeight != 'auto') {
        this.$body.addStyle('max-height', maxHeight - headBound.height + 'px');
      }
      this.$body.addStyle('height', this.$body.scrollHeight + 'px');
      setTimeout(function () {
        this.$body.removeStyle('height');
        window.dispatchEvent(new Event('resize'));
      }.bind(this), 200);
      this.addClass('show');
    } else {
      this.$body.addStyle('height', this.$body.scrollHeight + 'px');
      setTimeout(function () {
        this.$body.addStyle('height', '0');
      }.bind(this), 0);
      setTimeout(function () {
        this.$body.removeStyle('height');
        window.dispatchEvent(new Event('resize'));
      }.bind(this), 200);
      this.removeClass('show');
    }
  },
  get: function get() {
    return this.hasClass('show');
  }
};
_ACore["default"].install(DropPanel);
var _default = DropPanel;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(1784);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/**
 * @extends AElement
 * @constructor
 */
function DropPanelStack() {
  var res = this;
  this.$attachHook = _('attachhook').on('error', function () {
    _Dom["default"].addToResizeSystem(this);
    this.updateSize = res.updateSize.bind(res);
  });
  this.sync = new Promise(function (rs) {
    res.$attachHook.once('error', rs);
  });
}
DropPanelStack.tag = 'DropPanelStack'.toLowerCase();
DropPanelStack.render = function () {
  return _({
    "class": 'absol-drop-panel-stack',
    child: ['attachhook']
  });
};
DropPanelStack.prototype.updateSize = function () {};
DropPanelStack.prototype.getFreeHeight = function () {
  var childNodes = this.childNodes;
  var sumHeight = 0;
  var bound = this.getBoundingClientRect();
  var childBound;
  for (var i = 0; i < childNodes.length; ++i) {
    var child = childNodes[i];
    if (child.hasClass && child.hasClass('absol-drop-panel')) {
      childBound = child.getBoundingClientRect();
      sumHeight += childBound.height;
    }
  }
  return bound.height - sumHeight;
};
DropPanelStack.prototype.addChild = function (child) {
  var self = this;
  if (child.hasClass('absol-drop-panel')) {
    //remove last event listener off other parent
    if (child.__drop_panel_toggle_listener__) {
      child.off('toggle', child.__drop_panel_toggle_listener__);
    }
    child.__drop_panel_toggle_listener__ = function (event) {
      event.preventDefault();
      self.sync = self.sync.then(function () {
        if (event.isShowed) {
          setTimeout(function () {
            child.removeStyle('max-height');
          }, 200);
          child.toggle();
        } else {
          var headBound = child.$head.getBoundingClientRect();
          var vailableHeight = self.getFreeHeight();
          if (vailableHeight > 3) {
            child.addStyle('max-height', self.getFreeHeight() + headBound.height + 'px');
            child.toggle();
          }
        }
        return new Promise(function (rs) {
          setTimeout(rs, 200);
        });
      });
    };
    child.on('toggle', child.__drop_panel_toggle_listener__);
    this["super"](child);
  } else {
    throw new Error('Child element must be a DropPanel');
  }
};
_ACore["default"].install('droppanelstack', DropPanelStack);
var _default = DropPanelStack;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(76727);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _EventEmitter = __webpack_require__(46833);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function DropZone() {
  this.defineEvent(['fileenter', 'fileleave', 'filedrop']);
  this.addClass('as-drop-zone');
  this.on('dragover', this.eventHandler.dragZoneFileOver).on('drop', this.eventHandler.dropZoneFileDrop);
  this._fileOverTimeout = -1;
}
DropZone.tag = 'dropzone';
DropZone.render = function () {
  return _('div');
};
DropZone.eventHandler = {};
DropZone.eventHandler.dragZoneFileOver = function (event) {
  event.preventDefault();
  if (this._fileOverTimeout > 0) {
    clearTimeout(this._fileOverTimeout);
  } else {
    this.addClass('as-drag-over');
    this.emit('fileenter', event, this);
  }
  this._fileOverTimeout = setTimeout(this.eventHandler.dragZoneFileOverEnd, 200);
};

/***
 *
 * @param {DragEvent} event
 */
DropZone.eventHandler.dropZoneFileDrop = function (event) {
  if (this._fileOverTimeout > 0) {
    clearTimeout(this._fileOverTimeout);
    this._fileOverTimeout = -1;
  }
  event.preventDefault();
  this.removeClass('as-drag-over');
  event._files = null;
  if (!event.hasOwnProperty('files')) Object.defineProperty(event, 'files', {
    get: function get() {
      if (this._files) return this._files;
      var files = [];
      var file;
      if (event.dataTransfer.items) {
        for (var i = 0; i < event.dataTransfer.items.length; i++) {
          if (event.dataTransfer.items[i].kind === 'file') {
            file = event.dataTransfer.items[i].getAsFile();
            files.push(file);
          }
        }
      } else {
        // Use DataTransfer interface to access the file(s)
        for (var i = 0; i < event.dataTransfer.files.length; i++) {
          files.push(event.dataTransfer.files[i]);
        }
      }
      this._files = files;
      return this._files;
    }
  });
  this.emit('filedrop', event, this);
};
DropZone.eventHandler.dragZoneFileOverEnd = function () {
  this._fileOverTimeout = -1;
  this.removeClass('as-drag-over');
  this.emit('fileleave', {
    type: 'fileleave'
  }, this);
};
_ACore["default"].install(DropZone);
var _default = DropZone;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _Follower = _interopRequireDefault(__webpack_require__(48414));
__webpack_require__(14912);
var _search = _interopRequireWildcard(__webpack_require__(67858));
var _utils = __webpack_require__(84512);
var _SelectListBox = _interopRequireDefault(__webpack_require__(47818));
var _DelaySignal = _interopRequireDefault(__webpack_require__(81809));
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
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; }
/***
 * @extends Follower
 * @constructor
 */
function DualSelectBox() {
  this.domSignal = new _DelaySignal["default"]();
  this.domSignal.on('scrollIntoSelected', this.scrollIntoSelected.bind(this));
  this._items = [];
  this._value = [null, null];
  this.holderByValue = {};
  this.$lists = (0, _ACore.$$)('.as-dual-select-box-list', this);
  this.$searcTextInput = (0, _ACore.$)('searchtextinput', this).on('stoptyping', this.eventHandler.searchTextInputModify);
  this.$closeBtn = (0, _ACore.$)('.as-select-list-box-close-btn', this).on('click', this.eventHandler.clickCloseBtn);
  this.cView = new DualSelectView(this, this._items);
  this.searchedView = {
    '*': this.cView
  };
  this.estimateSize = {
    width: 0,
    height: 0
  };
  this._emittedValue = [null, null];

  /***
   * @name strictValue
   * @type {boolean}
   * @memberOf DualSelectBox#
   */
  /***
   * @name enableSearch
   * @type {boolean}
   * @memberOf DualSelectBox#
   */

  /***
   * @name value
   * @type {Array}
   * @memberOf DualSelectBox#
   */

  /***
   * @name items
   * @type {Array}
   * @memberOf DualSelectBox#
   */
}

DualSelectBox.tag = 'DualSelectBox'.toLowerCase();
DualSelectBox.render = function () {
  return (0, _ACore._)({
    tag: _Follower["default"].tag,
    "class": 'as-dual-select-box',
    extendEvent: ['change', 'close'],
    child: [{
      "class": 'as-dual-select-box-search-ctn',
      child: {
        tag: 'searchtextinput'
      }
    }, {
      "class": 'as-dual-select-box-list-ctn',
      child: [{
        "class": ['as-dual-select-box-list', 'absol-selectlist', 'as-bscroller']
      }, {
        "class": 'as-dual-select-box-arrow-ctn',
        child: 'span.mdi.mdi-menu-right'
      }, {
        "class": ['as-dual-select-box-list', 'absol-selectlist', 'as-bscroller']
      }]
    }, {
      "class": 'as-dropdown-box-footer',
      child: [{
        "class": 'as-dropdown-box-footer-right',
        child: [{
          tag: 'a',
          "class": 'as-select-list-box-close-btn',
          child: {
            text: _LanguageSystem["default"].getText('txt_close')
          }
        }]
      }]
    }]
  });
};
DualSelectBox.prototype._implicit = function (value) {
  if (value instanceof Array) {
    if (value.length > 2) value = value.slice(0, 2);else {
      value.push.apply(value, Array(2 - value.length).fill(null));
    }
  } else {
    value = [null, null];
  }
  return value;
};
DualSelectBox.prototype._explicit = function (value) {
  value = value.slice();
  var strictValue = this.strictValue;
  if (!this.holderByValue[value[0]]) {
    if (this._items.length > 0 && strictValue) {
      value[0] = this._items[0].value;
    } else {
      return null;
    }
  }
  if (!this.holderByValue[value[0]].child[value[1]]) {
    if (strictValue && this.holderByValue[value[0]].item.items && this.holderByValue[value[0]].item.items.length > 0) {
      value[1] = this.holderByValue[value[0]].item.items[0].value;
    } else {
      return null;
    }
  }
  if (value[0] === null || value[1] === null) {
    return null;
  }
  return value;
};
DualSelectBox.prototype._notifyIfChange = function (event) {
  var value = this._explicit(this._value);
  if (value === this._emittedValue) return;
  if (!value !== !this._emittedValue || value[0] !== this._emittedValue[0] || value[1] !== this._emittedValue[1]) {
    this.emit('change', {
      type: 'change',
      target: this,
      originalEvent: event
    }, this);
  }
};
DualSelectBox.prototype._makeLeftItem = function (item) {
  var itemElt = (0, _ACore._)({
    "class": 'absol-selectlist-item',
    child: {
      tag: 'span',
      "class": 'absol-selectlist-item-text',
      child: {
        text: item.text
      }
    }
  });
  itemElt.itemData = item;
  itemElt.on('click', this.eventHandler.clickLeftItem.bind(this, itemElt));
  return itemElt;
};
DualSelectBox.prototype.makeRightItem = function (item) {
  var itemElt = (0, _ACore._)({
    "class": 'absol-selectlist-item',
    child: {
      tag: 'span',
      "class": 'absol-selectlist-item-text',
      child: {
        text: item.text
      }
    }
  });
  itemElt.itemData = item;
  itemElt.on('click', this.eventHandler.clickRightItem.bind(this, itemElt));
  return itemElt;
};
DualSelectBox.prototype._calcEstimateSize = function (items) {
  var fontSize = (0, _ACore.$)(document.body).getFontSize();
  var longestItem = null;
  var longestE14 = 0;
  var e14, i, j;
  var item, subItem;
  for (i = 0; i < items.length; ++i) {
    item = items[i];
    e14 = (0, _utils.estimateWidth14)(item.text);
    if (e14 > longestE14) {
      longestItem = item;
      longestE14 = e14;
    }
  }
  var leftTextWidth = longestItem ? (0, _utils.measureText)(longestItem.text, '14px arial').width : 0;
  var maxN = items.length;
  for (i = 0; i < items.length; ++i) {
    item = items[i];
    if (!item.items || item.items.length === 0) continue;
    maxN = Math.max(maxN, item.items.length);
    for (j = 0; j < item.items.length; ++j) {
      subItem = item.items[j];
      e14 = (0, _utils.estimateWidth14)(subItem.text);
      if (e14 > longestE14) {
        longestItem = subItem;
        longestE14 = e14;
      }
    }
  }
  var rightTextWidth = longestItem ? (0, _utils.measureText)(longestItem.text, '14px arial').width : 0;
  return {
    width: (7 + leftTextWidth + 7 + 5 + 7 + 1 + 17 + 1 + 7 + rightTextWidth + 7 + 5 + 7 + 20) * fontSize / 14,
    height: maxN * 20 * fontSize / 14,
    textWidth: (leftTextWidth + rightTextWidth + 12) * fontSize / 14
  };
};
DualSelectBox.prototype.scrollIntoSelected = function () {
  if (!this.isDescendantOf(document.body)) {
    this.domSignal.emit('scrollIntoSelected');
    return;
  }
  if (this.cView && this.cView.$leftSelectedItem && this.cView.$leftSelectedItem.isDescendantOf(this.$lists[0])) {
    this.cView.$leftSelectedItem.scrollIntoView();
  }
  if (this.cView && this.cView.$rightSelectedItem && this.cView.$rightSelectedItem.isDescendantOf(this.$lists[1])) {
    this.cView.$rightSelectedItem.scrollIntoView();
  }
};
DualSelectBox.prototype.focus = _SelectListBox["default"].prototype.focus;
DualSelectBox.property = {};
DualSelectBox.property.items = {
  /***
   * @this DualSelectBox
   * @param items
   */
  set: function set(items) {
    var self = this;
    items = items || [];
    (0, _search.prepareSearchForList)(items);
    this._items = items;
    this.holderByValue = items.reduce(function (ac, cr) {
      ac[cr.value] = {
        item: cr,
        child: (cr.items || []).reduce(function (ac1, cr1) {
          ac1[cr1.value] = {
            item: cr1
          };
          return ac1;
        }, {})
      };
      return ac;
    }, {});
    this.estimateSize = this._calcEstimateSize(items);
    this.addStyle('--dual-list-estimate-width', this.estimateSize.width + 'px');
    this.searchedView = {};
    this.cView = new DualSelectView(this, items);
    this.searchedView['*'] = this.cView;
    this.cView.toView();
  },
  get: function get() {
    return this._items;
  }
};
DualSelectBox.property.enableSearch = {
  set: function set(value) {
    if (value) {
      this.addClass('as-enable-search');
    } else {
      this.removeClass('as-enable-search');
    }
  },
  get: function get() {
    return this.hasClass('as-enable-search');
  }
};
DualSelectBox.property.strictValue = {
  set: function set(value) {
    if (value) {
      this.addClass('as-strict-value');
    } else {
      this.removeClass('as-strict-value');
    }
    if (this.cView) this.cView.updateViewByValue();
  },
  get: function get() {
    return this.hasClass('as-strict-value');
  }
};
DualSelectBox.property.value = {
  /***
   * @this DualSelectBox
   * @param value
   */
  set: function set(value) {
    this._value = this._implicit(value);
    if (this.cView) {
      this.cView.updateViewByValue();
      this.cView.toRightList();
    }
    this.scrollIntoSelected();
  },
  get: function get() {
    return this._explicit(this._value);
  }
};

/***
 * @memberOf DualSelectBox#
 * @type {{}}
 */
DualSelectBox.eventHandler = {};

/***
 * @this DualSelectBox
 * @param itemElt
 * @param event
 */
DualSelectBox.eventHandler.clickLeftItem = function (itemElt, event) {
  var item = itemElt.itemData;
  this._value[0] = item.value;
  this.cView.updateLeftSelectedItem();
  this.cView.updateRightList();
  this.cView.toRightList();
  if (this.cView.$leftItemByValue[item.value] && this.cView.$leftItemByValue[item.value].itemData && this.cView.$leftItemByValue[item.value].itemData.items && this.cView.$leftItemByValue[item.value].itemData.items.length > 0) {
    this._value[1] = this.cView.$leftItemByValue[item.value].itemData.items[0].value;
    this.cView.updateRightSelectedItem();
  }
  if (this.cView.$rightSelectedItem) {
    this.cView.$rightSelectedItem.scrollIntoView();
  }
  this._notifyIfChange(event);
};

/***
 * @this DualSelectBox
 * @param itemElt
 * @param event
 */
DualSelectBox.eventHandler.clickRightItem = function (itemElt, event) {
  var item = itemElt.itemData;
  this._value[1] = item.value;
  this.cView.updateRightSelectedItem();
  this._notifyIfChange(event);
};
DualSelectBox.prototype.searchItemByText = function (text) {
  var items = this._items;
  var queryItem = (0, _search["default"])({
    text: text
  });
  var maxScore = 0;
  var holders = items.map(function (item) {
    var h = {
      item: item,
      itemScore: (0, _search.calcItemMatchScore)(queryItem, item)
    };
    maxScore = Math.max(maxScore, h.itemScore);
    var childMaxScore = 0;
    if (item.items && item.items.length > 0) {
      h.child = item.items.map(function (cItem) {
        var cItemScore = (0, _search.calcItemMatchScore)(queryItem, cItem);
        maxScore = Math.max(maxScore, cItemScore);
        childMaxScore = Math.max(childMaxScore, cItemScore);
        return {
          item: cItem,
          itemScore: cItemScore
        };
      });
      h.childScore = childMaxScore;
    }
    return h;
  });
  holders.sort(function (a, b) {
    return -Math.max(a.itemScore, a.childScore) + Math.max(b.itemScore, b.childScore);
  });
  var midScore = maxScore / 2;
  holders = holders.filter(function (holder) {
    return Math.max(holder.itemScore, holder.childScore) >= midScore;
  });
  return holders.map(function (holder) {
    var oldItem = holder.item;
    var item = {
      text: oldItem.text,
      value: oldItem.value
    };
    var childHolders;
    if (holder.child) {
      childHolders = holder.child.slice();
      childHolders.sort(function (a, b) {
        return -a.itemScore + b.itemScore;
      });
      item.items = childHolders.map(function (cHolder) {
        return cHolder.item;
      });
      item.isSearchItem = true;
    }
    return item;
  });
};
DualSelectBox.prototype.focus = function () {
  if (this.enableSearch) {
    this.$searcTextInput.focus();
  }
};
DualSelectBox.prototype.resetSearchState = function () {
  if (this.$searcTextInput.value.length === 0) return;
  this.$searcTextInput.value = '';
  this.eventHandler.searchTextInputModify();
};

/***
 * @this DualSelectBox
 */
DualSelectBox.eventHandler.searchTextInputModify = function () {
  var query = this.$searcTextInput.value.trim().replace(/\s+/, ' ');
  if (query.length === 0) query = '*';
  var view = this.searchedView[query];
  if (!view) {
    view = new DualSelectView(this, this.searchItemByText(query));
    this.searchedView[query] = view;
  }
  this.cView = view;
  this.cView.updateLeftSelectedItem();
  this.cView.updateRightSelectedItem();
  view.toView();
  this.$lists[0].scrollTop = 0;
  this.$lists[1].scrollTop = 0;
  if (query === '*') this.scrollIntoSelected();
};
DualSelectBox.eventHandler.clickCloseBtn = function (event) {
  this.emit('close', {
    type: 'close',
    target: this,
    originalEvent: event
  }, this);
};
_ACore["default"].install(DualSelectBox);
var _default = DualSelectBox;
/***
 *
 * @param {DualSelectBox} box
 * @param items
 * @constructor
 */
exports["default"] = _default;
function DualSelectView(box, items) {
  var self = this;
  this.box = box;
  this.items = items;
  this.$leftItems = items.map(function (item) {
    return self.box._makeLeftItem(item);
  });
  this.$leftItemByValue = this.$leftItems.reduce(function (ac, cr) {
    ac[cr.itemData.value] = cr;
    return ac;
  }, {});
  this.$rightItems = [];
  this.$rightItemByValue = {};
  this.$leftSelectedItem = null;
  this.$rightSelectedItem = null;
  this.updateViewByValue();
}
DualSelectView.prototype.toView = function () {
  this.box.$lists[0].clearChild();
  this.box.$lists[0].addChild(this.$leftItems);
  this.updateLeftSelectedItem();
  this.toRightList();
};
DualSelectView.prototype.toRightList = function () {
  this.box.$lists[1].clearChild();
  this.box.$lists[1].addChild(this.$rightItems);
  this.updateLeftSelectedItem();
};
DualSelectView.prototype.updateViewByValue = function () {
  this.updateLeftSelectedItem();
  this.updateRightList();
};
DualSelectView.prototype.updateRightList = function () {
  var self = this;
  var leftValue = this.box._value[0];
  var items = this.$leftItemByValue[leftValue] && this.$leftItemByValue[leftValue].itemData.items;
  if (items && items.length > 0) {
    this.$rightItems = items.map(function (item) {
      return self.box.makeRightItem(item);
    });
  } else {
    this.$rightItems = [];
  }
  this.$rightItemByValue = this.$rightItems.reduce(function (ac, cr) {
    ac[cr.itemData.value] = cr;
    return ac;
  }, {});
  this.updateRightSelectedItem();
};
DualSelectView.prototype.updateLeftSelectedItem = function () {
  if (this.$leftSelectedItem) {
    this.$leftSelectedItem.removeClass('as-selected');
  }
  this.$leftSelectedItem = this.$leftItemByValue[this.box._value[0]] || null;
  if (this.$leftSelectedItem) {
    this.$leftSelectedItem.addClass('as-selected');
  }
};
DualSelectView.prototype.updateRightSelectedItem = function () {
  if (this.$rightSelectedItem) {
    this.$rightSelectedItem.removeClass('as-selected');
  }
  this.$rightSelectedItem = this.$rightItemByValue[this.box._value[1]] || null;
  if (this.$rightSelectedItem) {
    this.$rightSelectedItem.addClass('as-selected');
  }
};

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _DualSelectBox = _interopRequireDefault(__webpack_require__(51098));
var _Dom = __webpack_require__(64821);
var _EventEmitter = __webpack_require__(46833);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
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; }
/***
 * @extends AElement
 * @constructor
 */
function DualSelectMenu() {
  this._format = '$0, $1';
  /***
   * @type {DualSelectBox}
   */
  this.$box = (0, _ACore._)({
    tag: _DualSelectBox["default"].tag,
    props: {
      anchor: [1, 6, 2, 5]
    },
    on: {
      preupdateposition: this.eventHandler.preUpdatePosition,
      change: this.eventHandler.boxChange,
      close: this.eventHandler.boxClose
    }
  });
  this.$box.cancelWaiting();
  this.$item = (0, _ACore.$)('.absol-selectlist-item', this);
  this.on('click', this.eventHandler.click);
  _OOP["default"].drillProperty(this, this.$box, 'enableSearch');
  /***
   * @name strictValue
   * @type {boolean}
   * @memberOf DualSelectMenu#
   */

  /***
   * @name readOnly
   * @type {boolean}
   * @memberOf DualSelectMenu#
   */
  /***
   * @name disabled
   * @type {boolean}
   * @memberOf DualSelectMenu#
   */
}

DualSelectMenu.tag = 'DualSelectMenu'.toLowerCase();
DualSelectMenu.render = function () {
  return (0, _ACore._)({
    "class": ['absol-selectmenu', 'as-dual-select-menu'],
    extendEvent: ['change'],
    attr: {
      tabindex: '1'
    },
    child: [{
      "class": 'absol-selectmenu-holder-item',
      child: '.absol-selectlist-item'
    }, {
      tag: 'button',
      "class": 'absol-selectmenu-btn',
      child: ['dropdown-ico']
    }, 'attachhook']
  });
};
DualSelectMenu.prototype._updateViewValue = function () {
  var format = this._format;
  var value = this.$box.value || [null, null];
  var strictValue = this.strictValue;
  var hbv = this.$box.holderByValue;
  var firstToken = '__';
  var secToken = '__';
  var firstHolder = hbv[value[0]];
  var sectHolder;
  if (firstHolder) {
    firstToken = firstHolder.item.text;
    sectHolder = firstHolder.child[value[1]];
    if (sectHolder) secToken = sectHolder.item.text;
  }
  var text = format.replace('$0', firstToken).replace('$1', secToken);
  this.$item.clearChild().addChild((0, _ACore._)({
    tag: 'span',
    "class": ['as-selectlist-item-text', 'absol-selectlist-item-text'],
    child: {
      text: text
    }
  }));
};
DualSelectMenu.property = {};
DualSelectMenu.property.selectedItems = {
  get: function get() {
    var value = this.$box.value || [null, null];
    var hbv = this.$box.holderByValue;
    var firstHolder = hbv[value[0]];
    var sectHolder;
    var res = [null, null];
    if (firstHolder) {
      res[0] = firstHolder.item;
      sectHolder = firstHolder.child[value[1]];
      if (sectHolder) res[1] = sectHolder.item;
    }
    return res;
  }
};
DualSelectMenu.property.isFocus = {
  /***
   * @this DualSelectMenu
   * @param value
   */
  set: function set(value) {
    var self = this;
    value = !!value;
    if (value && (this.disabled || this.readOnly)) return;
    if (this.hasClass('as-focus') === value) return;
    if (value) {
      this._prevValue = (this.$box.value || [null, null]).join('//');
      this.addClass('as-focus');
      this.off('click', this.eventHandler.click);
      this.$box.followTarget = this;
      this.$box.sponsorElement = this;
      this.$box.addTo(document.body);
      this.$box.updatePosition();
      this.$box.scrollIntoSelected();
      setTimeout(function () {
        self.$box.focus();
        document.addEventListener('click', self.eventHandler.clickOut);
      }, 10);
    } else {
      this.removeClass('as-focus');
      this.$box.selfRemove();
      this.$box.resetSearchState();
      document.removeEventListener('click', self.eventHandler.clickOut);
      setTimeout(function () {
        self.on('click', self.eventHandler.click);
      }, 10);
      if ((this.$box.value || [null, null]).join('//') !== this._prevValue) {
        this._updateViewValue();
        this.emit('change', {
          type: 'change',
          target: this
        }, this);
      }
    }
  },
  get: function get() {
    return this.hasClass('as-focus');
  }
};

/****
 * @memberOf DualSelectMenu#
 * @type {{}}
 */
DualSelectMenu.eventHandler = {};
DualSelectMenu.property.items = {
  /***
   * @this DualSelectMenu
   * @param items
   */
  set: function set(items) {
    this.$box.items = items;
    this.addStyle('--dual-list-estimate-text-width', this.$box.estimateSize.textWidth + 'px');
    this._updateViewValue();
  },
  get: function get() {
    return this.$box.items;
  }
};
DualSelectMenu.property.value = {
  set: function set(value) {
    this.$box.value = value;
    this._updateViewValue();
  },
  get: function get() {
    return this.$box.value;
  }
};
DualSelectMenu.property.strictValue = {
  set: function set(value) {
    this.$box.strictValue = value;
    this._updateViewValue();
  },
  get: function get() {
    return this.$box.strictValue;
  }
};
DualSelectMenu.property.format = {
  set: function set(value) {
    this._format = value || '$0, $1';
    this._updateViewValue();
  },
  get: function get() {
    return this._format;
  }
};
DualSelectMenu.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
DualSelectMenu.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};

/**
 * @this DualSelectMenu
 */
DualSelectMenu.eventHandler.click = function () {
  if (this.readOnly) return;
  this.isFocus = true;
};

/**
 * @this DualSelectMenu
 */
DualSelectMenu.eventHandler.clickOut = function (event) {
  if ((0, _EventEmitter.hitElement)(this.$box, event)) return;
  this.isFocus = false;
};

/***
 * @this DualSelectMenu
 */
DualSelectMenu.eventHandler.preUpdatePosition = function () {
  var bound = this.getBoundingClientRect();
  var screenSize = (0, _Dom.getScreenSize)();
  var availableTop = bound.top - 5;
  var availableBot = screenSize.height - 5 - bound.bottom;
  this.$box.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px');
  var outBound = (0, _Dom.traceOutBoundingClientRect)(this);
  if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) {
    this.isFocus = false;
  }
};
DualSelectMenu.eventHandler.boxChange = function () {
  this._updateViewValue();
};
DualSelectMenu.eventHandler.boxClose = function () {
  this.isFocus = false;
};
_ACore["default"].install(DualSelectMenu);
var _default = DualSelectMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(93755);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function EditableText() {
  var thisET = this;
  this.$span = $('span', this);
  this.$text = document.createTextNode('');
  this.$span.addChild(this.$text);
  this.$higne = $('.absol-editabe-text-higne', this);
  this.$input = $('input', this);
  _OOP["default"].drillProperty(this, this.$input, ['selectionStart', 'selectionEnd']);
  this.sync = new Promise(function (rs) {
    _('attachhook').addTo(thisET).once('error', rs);
  });
  this.$input.on('keydown', this.eventHandler.inputKeyDown, true);
  this.$input.on('change', this.eventHandler.inputChange);
  this.$input.on('blur', this.eventHandler.inputBlur);
}
;
EditableText.tag = 'EditableText'.toLowerCase();
EditableText.render = function () {
  return _({
    "class": 'absol-editabe-text',
    extendEvent: ['blur', 'focus', 'change', 'modify'],
    child: [{
      "class": 'absol-editabe-text-higne',
      child: '<input type="text">'
    }, 'span']
  });
};
EditableText.prototype.focus = function () {
  this.$input.focus();
};
EditableText.prototype.blur = function () {
  this.$input.blur();
};
EditableText.prototype.select = function () {
  this.$input.select();
};
EditableText.prototype.edit = function (flag, select) {
  this.editing = !!flag;
  this.sync = this.sync.then(function () {
    if (flag) {
      this.focus();
      if (select) this.select();
    } else this.blur();
  }.bind(this));
  return this.sync;
};
EditableText.prototype._update = function () {
  this.sync = this.sync.then(function () {
    return new Promise(function (rs) {
      // setTimeout(function () {
      var bound = this.getBoundingClientRect();
      var higneBound = this.$higne.getBoundingClientRect();
      var fsize = this.getFontSize();
      this.$input.addStyle('width', bound.width + 4 + fsize * 0 + 'px');
      this.$input.addStyle('height', bound.height + 4 + 'px');
      this.$input.addStyle('left', bound.left - higneBound.left - 2 + 'px');
      this.$input.addStyle('top', bound.top - higneBound.top + 'px');
      rs();
    }.bind(this));
  }.bind(this));
};
EditableText.property = {};
EditableText.property.text = {
  set: function set(value) {
    this.$text.textContent = value;
    this.$input.value = value;
  },
  get: function get() {
    return this.$text.textContent;
  }
};
EditableText.property.editing = {
  set: function set(value) {
    if (this._editting === value) return;
    this._editting = !!value;
    if (value) {
      this.$input.value = this.text;
      this._update();
      this.sync = this.sync.then(function () {
        this.addClass('editing');
        this.$input.value = this.text;
        this.$input.addStyle('font', this.$span.getComputedStyleValue('font'));
        this.$input.addStyle('font-style', this.$span.getComputedStyleValue('font-style'));
        this.$input.addStyle('color', this.$span.getComputedStyleValue('color'));
      }.bind(this));
    } else {
      this.removeClass('editing');
    }
  },
  get: function get() {
    return !!this._editting;
  }
};
EditableText.eventHandler = {};
EditableText.eventHandler.inputKeyDown = function (event) {
  requestAnimationFrame(function () {
    this.text = this.$input.value;
    this._update();
    event.text = this.text;
    this.emit('modify', event);
  }.bind(this));
};
EditableText.eventHandler.inputChange = function (event) {
  this.editing = false;
  this.emit('change', event);
};
EditableText.eventHandler.inputBlur = function (event) {
  this.editing = false;
  this.emit('blur', event);
};
_ACore["default"].install(EditableText);
var _default = EditableText;
exports["default"] = _default;

/***/ }),

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

"use strict";


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;
__webpack_require__(3505);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _stringGenerate = __webpack_require__(10713);
var _DomSignal = _interopRequireDefault(__webpack_require__(47341));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _Dom = __webpack_require__(64821);
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _attribute = __webpack_require__(18144);
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _safeThrow = _interopRequireDefault(__webpack_require__(628));
var _utils = __webpack_require__(84512);
var _noop = _interopRequireDefault(__webpack_require__(5025));
var _Attributes = _interopRequireDefault(__webpack_require__(36447));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
var execAsync = function execAsync(commands, whileFunc) {
  return commands.reduce(function (ac, act) {
    if (whileFunc && !whileFunc()) return;
    if (ac && ac.then) {
      if (typeof act === "function") {
        return ac.then(act);
      } else {
        return ac.then(function () {
          return act;
        });
      }
    }
    if (typeof act === 'function') return act(ac);else return act;
  }, null);
};
var getMaxRowCount = function getMaxRowCount() {
  var screenSize = (0, _Dom.getScreenSize)();
  return Math.ceil(Math.max(2048, screenSize.height) / 40.0) * 3;
};
var waitAll = function waitAll(variables, thenCb) {
  var hasPromise = variables.findIndex(function (v) {
    return v && typeof v.then === "function";
  });
  if (hasPromise >= 0) return Promise.all(variables).then(thenCb);else return thenCb(variables);
};
var waitValue = function waitValue(value, thenCb) {
  if (value && typeof value.then === "function") {
    return value.then(thenCb);
  } else return thenCb(value);
};

/**
 * @extends AElement
 * @constructor
 */
function EfficientTable() {
  this.layoutCtrl = new ETLayoutController(this);
  this.fixHeaderCtrl = new ETFixHeaderController(this);
  this._adapter = null;
  this.table = null;
  this.extendStyle = this.extendStyle || {};
  this.$attachhook = (0, _ACore._)('attachhook').addTo(this);
  this.$attachhook.requestUpdateSize = this.layoutCtrl.requestUpdateSize.bind(this);
  this.colWidth = new ETColWidthDeclaration(this);
  /**
   * @name adapter
   * @type {ETAdapter}
   * @memberof EfficientTable#
   */
}

EfficientTable.tag = 'EfficientTable'.toLowerCase();
EfficientTable.render = function (data, domDesc) {
  var width = domDesc.style && domDesc.style.width;
  var classList = ['as-efficient-table-wrapper'];
  if (width === 'match_parent') {
    classList.push('as-width-match-parent');
  }
  var id = domDesc.id || domDesc.attr && domDesc.attr.id || 'no-id-' + (0, _stringGenerate.randomIdent)(10);
  return (0, _ACore._)({
    id: id,
    extendEvent: ['colresize'],
    "class": classList,
    props: {
      extendStyle: domDesc.style
    },
    child: [{
      "class": 'as-dynamic-table-fixed-y-ctn'
    }]
  });
};
EfficientTable.prototype.addStyle = function (name, value) {
  if (name === 'width') {
    this.extendStyle[name] = value;
  } else {
    _AElement["default"].prototype.addStyle.apply(this, arguments);
  }
  return this;
};
EfficientTable.prototype.getColWidth = function () {
  var _this$colWidth;
  var table = this.table;
  if (!table) return null;
  if (arguments.length === 0) return this.colWidth["export"]();else return (_this$colWidth = this.colWidth).getProperty.apply(_this$colWidth, arguments);
};
EfficientTable.prototype.setColWidth = function () {
  var _this$colWidth2;
  var table = this.table;
  if (!table) return null;
  if (arguments.length === 0) Object.assign(this.colWidth);else (_this$colWidth2 = this.colWidth).setProperty.apply(_this$colWidth2, arguments);
};

/**
 *
 * @param {string|number|function}arg
 */
EfficientTable.prototype.findRow = function (arg) {
  if (this.table) {
    return this.table.body.findRow(arg);
  }
  return null;
};
EfficientTable.prototype.requestUpdateSize = function () {
  this.layoutCtrl.requestUpdateSize();
};
EfficientTable.prototype.notifyDataSheetChange = function () {
  if (this.adapter) this.adapter.notifyDataSheetChange();
};
EfficientTable.prototype.notifyRowModifiedAt = function (idx) {
  if (this.adapter) this.adapter.notifyRowModifiedAt(idx);
};
EfficientTable.prototype.notifyRowRemoveAt = function (idx) {
  if (this.adapter) this.adapter.notifyRowRemoveAt(idx);
};
EfficientTable.prototype.notifyAddRowAt = function (idx) {
  if (this.adapter) this.adapter.notifyAddRowAt(idx);
};
EfficientTable.prototype.revokeResource = function () {
  this.fixHeaderCtrl.revokeResource();
  //todo: revoke all resource
};

EfficientTable.property = {};
EfficientTable.property.adapter = {
  set: function set(value) {
    this.colWidth.revokeResource();
    this.fixHeaderCtrl.reset();
    this._adapter = new ETAdapter(this, value);
    this.table = new ETTable(this, this._adapter.data);
    this.addChild(this.table.elt);
    this._adapter.notifyDataSheetChange();
    this.colWidth = new ETColWidthDeclaration(this);
  },
  get: function get() {
    return this._adapter;
  }
};
var _default = EfficientTable;
exports["default"] = _default;
_ACore["default"].install(EfficientTable);

// ETAdapter.prototype.

/**
 *
 * @param {EfficientTable} elt
 * @constructor
 */
function ETFixHeaderController(elt) {
  this.elt = elt;
  this.$cloneTable = null;
  this.$cloneHead = null;
}
ETFixHeaderController.prototype.updateSize = function () {};
ETFixHeaderController.prototype.reset = function () {
  if (this.isWrapped) {}
};
ETFixHeaderController.prototype.revokeResource = function () {
  this.revokeResource = _noop["default"];
  this.elt = null;
};

/**
 *
 * @param {EfficientTable} elt
 * @constructor
 */
function ETLayoutController(elt) {
  var _this = this;
  this.elt = elt;
  /***
   *
   * @type {SearchTextInput|null}
   */
  this.$searchInput = null;
  /***
   *
   * @type {AElement}
   */
  this.$table = (0, _ACore.$)('.as-dynamic-table', elt);
  /***
   *
   * @type {AElement}
   */
  this.$thead = (0, _ACore.$)('.as-dynamic-table>thead', this.$table);
  /***
   *
   * @type {AElement}
   */
  this.$tbody = (0, _ACore.$)('.as-dynamic-table>tbody', this.$table);
  this.$filterInputs = [];
  this.$attachhook = (0, _ACore._)('attachhook').addTo(elt);
  this.domSignal = new _DomSignal["default"]((0, _ACore._)('attachhook').addTo(elt));
  //controller
  this.$fixedYCtn = (0, _ACore.$)('.as-dynamic-table-fixed-y-ctn', elt);
  this.extendStyle = {};

  // this.$attachhook.requestUpdateSize = this.fixedContentCtrl.updateSize.bind(this.fixedContentCtrl);
  this.$attachhook.requestUpdateSize = this.requestUpdateSize.bind(this);
  this.$attachhook.on('attached', function () {
    _ResizeSystem["default"].add(_this.$attachhook);
    _this.onAttached();
    _this.onAttached();
    // manager.add(this);
    setTimeout(function () {
      _this.requestUpdateSize();
    }, 10);
  });
  this.ev_scroll = this.ev_scroll.bind(this);
  this.$BindedScrollers = [];
  this.stopScrollTO = -1;
}
ETLayoutController.prototype.onAttached = function () {
  this.bindScroller();
};
ETLayoutController.prototype.requestUpdateSize = function () {
  this.elt.table.body.updateYOffset(true);
  var beforeRect = this.elt.table.body.size;
  this.viewSize();
  this.viewByScroll();
  this.elt.table.body.calcSize();
  var newRect = this.elt.table.body.size;
  if (newRect.width !== beforeRect.width || newRect.height !== beforeRect.height) {
    _ResizeSystem["default"].updateUp(this.elt.parentElement);
  }
};
ETLayoutController.prototype.viewSize = function () {
  this.elt.table.calcSize();
  var size = this.elt.table.size;
  if (size.trueValue) {
    this.elt.addClass('as-true-size');
  }
  this.elt.addStyle('height', size.height + 1 + 'px');
};
ETLayoutController.prototype.bindScroller = function () {
  var p = this.elt.parentElement;
  while (p) {
    p.addEventListener('scroll', this.ev_scroll);
    this.$BindedScrollers.push(p);
    p = p.parentElement;
  }
  document.addEventListener('scroll', this.ev_scroll);
  this.$BindedScrollers.push(document);
};
ETLayoutController.prototype.unBindScroller = function () {
  while (this.$BindedScrollers.length) {
    this.$BindedScrollers.pop().removeEventListener('scroll', this.ev_scroll);
  }
};
ETLayoutController.prototype.viewByScroll = function () {
  var _this2 = this;
  if (!this.elt.table) return;
  if (this.elt.table.size.trueValue) return;
  var bound = this.elt.getBoundingClientRect();
  var outbound = (0, _Dom.traceOutBoundingClientRect)(this.elt); //todo: small than scroller
  var head = this.elt.table.head;
  var hs = 0;
  if (bound.top >= outbound.top) {
    hs = 0;
    this.elt.table.elt.addStyle('top', 0);
    return;
  } else if (bound.bottom < outbound.bottom) {
    hs = 1;
  } else {
    hs = (outbound.top - (bound.top + head.size.height)) / (bound.height - head.size.height - outbound.height);
  }
  var rowLNIdx = this.elt.adapter.length * hs;
  var y = outbound.top + head.size.height + hs * (outbound.height - head.size.height);
  var rowIdx = Math.floor(rowLNIdx);
  if (hs === 1) rowIdx = this.elt.adapter.length - 1;
  var body = this.elt.table.body;
  var currentOffset = body.rowOffset;
  this.elt.table.body.requestVisible(rowIdx);
  this.elt.table.body.waitLoaded(function () {
    if (currentOffset !== body.rowOffset) return;
    _this2.elt.table.body.updateYOffset();
    var row = body.rows[rowIdx - body.rowOffset];
    if (!row) return; //out of date, don't update
    var rowLNY = row.offsetY + row.offsetHeight * hs;
    var dy = y - bound.top - rowLNY - hs; //hs for border 1px
    _this2.elt.table.elt.addStyle('top', dy + 'px');
  });
};
ETLayoutController.prototype.ev_scroll = function () {
  var _this3 = this;
  this.viewByScroll();
  clearTimeout(this.stopScrollTO);
  this.stopScrollTO = setTimeout(function () {
    _this3.viewByScroll();
  }, 100);
};

/**
 *
 * @param elt
 * @param adapterData
 * @constructor
 */
function ETAdapter(elt, adapterData) {
  this.elt = elt;
  this.data = adapterData.data;
  this.raw = adapterData;
  this.asyncSession = Math.random();
  this.sync = null;
}
ETAdapter.prototype.notifyDataSheetChange = function () {
  var _this4 = this;
  var asyncSession = Math.random();
  this.asyncSession = asyncSession;
  var cmdArr = [function () {
    return _this4.getLength();
  }, function () {
    var body = _this4.elt.table.body;
    var head = _this4.elt.table.head;
    body.clear();
    body.drawFrom(0);
    var makeSize = function makeSize() {
      body.waitLoaded(function () {
        body.updateYOffset(true);
        _this4.elt.layoutCtrl.requestUpdateSize();
      });
    };
    if (_this4.elt.isDescendantOf(document.body)) {
      makeSize();
    } else {
      _this4.elt.$attachhook.once('attached', makeSize);
    }
  }];
  execAsync(cmdArr, function () {
    return _this4.asyncSession === asyncSession;
  });
};
ETAdapter.prototype.notifyRowModifiedAt = function (idx) {
  var _this5 = this;
  this.sync = execAsync([this.sync, function () {
    _this5.elt.table.body.modifiedRowAt(idx);
    if (_this5.elt.isDescendantOf(document.body)) {
      _this5.elt.table.body.waitLoaded(function () {
        _this5.elt.layoutCtrl.requestUpdateSize();
      });
    }
  }]);
};
ETAdapter.prototype.notifyRowRemoveAt = function (idx) {
  var _this6 = this;
  this.sync = execAsync([this.sync, function () {
    return _this6.getLength();
  }, function () {
    _this6.elt.table.body.removeRowAt(idx);
    if (_this6.elt.isDescendantOf(document.body)) {
      _this6.elt.table.body.waitLoaded(function () {
        _this6.elt.layoutCtrl.requestUpdateSize();
      });
    }
  }]);
};
ETAdapter.prototype.notifyAddRowAt = function (idx) {
  var _this7 = this;
  this.sync = execAsync([this.sync, function () {
    return _this7.getLength();
  }, function () {
    _this7.elt.table.body.addRowAt(idx);
    if (_this7.elt.isDescendantOf(document.body)) {
      _this7.elt.table.body.waitLoaded(function () {
        _this7.elt.layoutCtrl.viewSize();
      });
    }
  }]);
};
ETAdapter.prototype.getLength = function () {
  var _this8 = this;
  return execAsync([function () {
    var body = _this8.raw.data.body;
    var length;
    if (typeof body.length === "number") {
      length = body.rows.length;
    } else if (body.length && body.length.then) {
      length = body.length;
    } else if (typeof body.getLength === "function") {
      try {
        length = _this8.raw.data.body.getLength(_this8);
      } catch (e) {
        (0, _safeThrow["default"])(e);
      }
    } else if (body.rows) length = body.rows.length;
    return length;
  }, function (l) {
    _this8.length = l;
    return l;
  }]);
};
ETAdapter.prototype.getRowAt = function (idx) {
  var data;
  var body = this.raw.data.body;
  if (typeof body.getRowAt === "function") {
    try {
      data = body.getRowAt(idx, this);
    } catch (e) {
      (0, _safeThrow["default"])(e);
    }
  } else if (body.rows) data = body.rows[idx];
  return data;
};
ETAdapter.prototype.renderHeadCell = function (elt, data, controller) {
  if (data.child) {
    if (data.child.map) {
      elt.addChild(data.child.map(function (it) {
        return (0, _ACore._)(it);
      }));
    } else {
      elt.addChild((0, _ACore._)(data.child));
    }
  }
  if (data.render) {
    data.render.call(null, elt, data, controller);
  }
};
ETAdapter.prototype.renderBodyCell = function (elt, data, idx, controller) {
  var body = this.raw.data.body;
  var template = body.rowTemplate;
  var cellTpl = template.cells[idx];
  if (cellTpl.child) {
    if (cellTpl.child.map) {
      elt.addChild(cellTpl.child.map(function (it) {
        return (0, _ACore._)(it);
      }));
    } else {
      elt.addChild((0, _ACore._)(cellTpl.child));
    }
  }
  if (cellTpl.render) {
    cellTpl.render.call(null, elt, data, controller);
  }
  if (cellTpl.style) elt.addStyle(cellTpl.style);
};
ETAdapter.prototype.getRowLength = function () {
  var body = this.raw.data.body;
  var template = body.rowTemplate;
  return template.cells.length;
};

/**
 *
 * @param {EfficientTable} wrapper
 * @param data
 * @constructor
 */
function ETTable(wrapper, data) {
  this.wrapper = wrapper;
  this.adapter = this.wrapper.adapter;
  this.data = data;
  this.head = new ETHead(this, this.data.head);
  this.body = new ETBody(this, this.data.body);
  this.elt = (0, _ACore._)({
    tag: 'table',
    "class": 'as-dynamic-table',
    child: [this.head.elt, this.body.elt]
  });
  this.handleStyle();
  this.size = new _Rectangle["default"](0, 0, 0, 0);
  this.size.trueValue = false;
}
ETTable.prototype.handleStyle = function () {
  var style = this.wrapper.extendStyle;
  var value;
  if (style.width) {
    value = (0, _attribute.parseMeasureValue)(style.width);
    if (value) {
      if (value.unit === '%') {
        this.wrapper.style.setProperty('width', value);
        this.elt.addStyle('width', '100%');
      }
    }
  }
};
ETTable.prototype.calcSize = function () {
  this.head.calcSize();
  this.body.calcSize();
  this.size = this.head.size.clone();
  this.size.height += this.body.size.height;
  this.size.trueValue = this.body.size.trueValue;
};

/**
 *
 * @param {ETTable} table
 * @param data
 * @constructor
 */
function ETHead(table, data) {
  var _this9 = this;
  this.table = table;
  this.data = data || {};
  if (!this.data.rows) this.data.rows = [];
  this.rows = this.data.rows.map(function (rowData) {
    return new ETHeadRow(_this9, rowData);
  });
  this.elt = (0, _ACore._)({
    tag: 'thead',
    "class": 'as-dt-header',
    child: this.rows.map(function (it) {
      return it.elt;
    })
  });
  this.size = new _Rectangle["default"](0, 0, 0, 0);
}
ETHead.prototype.calcSize = function () {
  var bound = this.elt.getBoundingClientRect();
  this.size = _Rectangle["default"].fromClientRect(bound);
};

/**
 *
 * @param {ETHead} head
 * @param data
 * @constructor
 */
function ETHeadRow(head, data) {
  var _this10 = this;
  this.head = head;
  this.data = data || {};
  if (!this.data.cells) this.data.cells = [];
  this.cells = this.data.cells.map(function (cellData) {
    return new ETHeadCell(_this10, cellData);
  });
  this.elt = (0, _ACore._)({
    tag: 'tr',
    "class": 'as-dt-header-row',
    child: this.cells.map(function (it) {
      return it.elt;
    })
  });
}

// (ETHeadRow)

function ETHeadCell(row, data) {
  this.row = row;
  this.data = data || {};
  this.elt = (0, _ACore._)({
    tag: 'th',
    "class": 'as-dt-header-cell'
  });
  if (data.attr && (0, _utils.isNaturalNumber)(data.attr.colspan)) {
    this.elt.attr('colspan', data.attr.colspan);
  }
  if (data.attr && (0, _utils.isNaturalNumber)(data.attr.rowspan)) {
    this.elt.attr('colspan', data.attr.rowspan);
  }
  if (data.style) this.elt.addStyle(data.style);
  this.row.head.table.adapter.renderHeadCell(this.elt, this.data, this);
}

/**
 *
 * @param {ETTable} table
 * @param data
 * @constructor
 */
function ETBody(table, data) {
  this.data = data;
  this.table = table;
  this.elt = (0, _ACore._)({
    tag: 'tbody',
    "class": 'as-dt-body'
  });
  this.rowOffset = 0;
  this.rows = [];
  /**
   *
   * @type {Rectangle|{trueValue:boolean}}
   */
  this.size = new _Rectangle["default"](0, 0, 0, 0);
  this.size.trueValue = false;
  this.needUpdateYOffset = false;
  this.sync = null;
}
ETBody.prototype.clear = function () {
  this.rowOffset = 0;
  var row;
  while (this.rows.length) {
    row = this.rows.shift();
    this.rowOffset++;
    row.elt.remove();
    row.revokeResource();
  }
  this.needUpdateYOffset = true;
};
ETBody.prototype.removeRowAt = function (idx) {
  var localIdx = idx - this.rowOffset;
  var row = this.rows[localIdx];
  if (!row) return false;
  row.elt.selfRemove();
  this.rows.splice(localIdx, 1);
  row.revokeResource();
  for (var i = 0; i < this.rows.length; ++i) {
    this.rows[i].updateIdx(i + this.rowOffset);
  }
  this.drawFrom(this.rowOffset);
};
ETBody.prototype.modifiedRowAt = function (idx) {
  var localIdx = idx - this.rowOffset;
  var row = this.rows[localIdx];
  if (!row) return false;
  var newRow = new ETBodyRow(this, this.table.wrapper.adapter.getRowAt(idx));
  newRow.updateIdx(idx);
  this.rows[localIdx] = newRow;
  row.elt.selfReplace(newRow.elt);
  this.needUpdateYOffset = true;
};
ETBody.prototype.addRowAt = function (idx) {
  var localIdx = idx - this.rowOffset;
  var row = this.rows[localIdx];
  if (!row) return false;
  var newRow = new ETBodyRow(this, this.table.wrapper.adapter.getRowAt(idx));
  this.rows.splice(localIdx, 0, newRow);
  row.elt.parentElement.addChildBefore(newRow.elt, row.elt);
  for (var i = 0; i < this.rows.length; ++i) {
    this.rows[i].updateIdx(i + this.rowOffset);
  }
  this.needUpdateYOffset = true;
};
ETBody.prototype.requestVisible = function (idx) {
  var maxRow = getMaxRowCount();
  var length = this.table.wrapper.adapter.length;
  var pageIdx;
  var pageN = Math.ceil(Math.max(length / (maxRow / 3)));
  idx = Math.max(0, idx);
  idx = Math.min(length - 1, idx);
  pageIdx = Math.floor(idx / (maxRow / 3));
  pageIdx = Math.min(pageN - 3, pageIdx - 1);
  pageIdx = Math.max(0, pageIdx);
  this.drawFrom(pageIdx * Math.floor(maxRow / 3));
};
ETBody.prototype.drawFrom = function (idx) {
  var adapter = this.table.wrapper.adapter;
  var maxRowCount = getMaxRowCount();
  idx = Math.max(0, idx);
  var endIdx = Math.min(idx + maxRowCount, adapter.length);
  idx = Math.max(0, Math.min(endIdx - 1, idx));
  var row;
  while (this.rowOffset + this.rows.length > idx + maxRowCount && this.rows.length) {
    row = this.rows.pop();
    row.elt.remove();
  }
  while (this.rowOffset < idx && this.rows.length) {
    row = this.rows.shift();
    this.rowOffset++;
    row.elt.remove();
    row.revokeResource();
    this.needUpdateYOffset = true;
  }
  if (this.rows.length === 0) this.rowOffset = Math.min(adapter.length, idx + 1);
  var newRows = [];
  var newRow;
  while (this.rowOffset > idx && this.rowOffset > 0) {
    this.rowOffset--;
    newRow = new ETBodyRow(this, adapter.getRowAt(this.rowOffset));
    newRows.push(newRow);
    newRow.updateIdx(this.rowOffset);
    this.rows.unshift(newRow);
    this.elt.addChildBefore(newRow.elt, this.elt.firstChild);
    this.needUpdateYOffset = true;
  }
  while (this.rowOffset + this.rows.length < endIdx) {
    newRow = new ETBodyRow(this, adapter.getRowAt(this.rowOffset + this.rows.length));
    newRow.updateIdx(this.rowOffset + this.rows.length);
    newRows.push(newRow);
    this.rows.push(newRow);
    this.elt.addChild(newRow.elt);
    this.needUpdateYOffset = true;
  }
};

/**
 *
 * @param {boolean} force
 */
ETBody.prototype.updateYOffset = function (force) {
  if (!this.needUpdateYOffset && !force) return;
  this.needUpdateYOffset = false;
  var tableBound = this.table.elt.getBoundingClientRect();
  this.rows.forEach(function (row) {
    row.calcSize();
    var rowBound = row.size;
    row.offsetY = rowBound.y - tableBound.top;
    row.offsetHeight = rowBound.height;
  });
};
ETBody.prototype.calcSize = function () {
  var adapter = this.table.wrapper.adapter;
  var bound = this.elt.getBoundingClientRect();
  if (this.rows.length === adapter.length) {
    this.size = _Rectangle["default"].fromClientRect(bound);
    this.size.trueValue = true;
  } else {
    this.size = _Rectangle["default"].fromClientRect(bound);
    this.size.height = bound.height / this.rows.length * adapter.length;
    this.size.trueValue = false;
  }
};
ETBody.prototype.waitLoaded = function (cb) {
  waitAll(this.rows.map(function (row) {
    return row.data;
  }), cb);
};
function ETBodyRow(body, data) {
  var _this11 = this;
  this.elt = (0, _ACore._)({
    tag: 'tr',
    "class": 'as-dt-body-row'
  });
  this.offsetY = 0;
  this.data = data;
  this.body = body;
  this.idx = 0;
  this.$idx = undefined;
  waitValue(this.data, function (data) {
    _this11.data = data;
    var adapter = body.table.wrapper.adapter;
    var length = adapter.getRowLength();
    _this11.cells = Array(length).fill(null).map(function (u, i) {
      return new ETBodyCell(_this11, i);
    });
    _this11.elt.addChild(_this11.cells.map(function (cell) {
      return cell.elt;
    }));
    _this11.$idx = (0, _ACore.$)('.as-dt-row-index', _this11.elt) || null;
    if (_this11.$idx) _this11.$idx.attr('data-idx', _this11.idx + 1);
    if (data.on && data.on.click) {
      _this11.elt.on('click', function (event) {
        data.on.click.call(_this11.elt, event, _this11);
      });
    }
    if (adapter.data.body.rowTemplate.on && typeof adapter.data.body.rowTemplate.on.click === "function") {
      _this11.elt.on('click', function (event) {
        adapter.data.body.rowTemplate.on.click.call(_this11.elt, event, _this11);
      });
    }
  });
  this.size = new _Rectangle["default"](0, 0, 0, 0);
  // this.cells = data.cells.map(cell => new ETBodyCell(this, cell));
  /**
   * @name adapter
   * @type {ETAdapter}
   * @memberof ETBodyRow#
   */
}

ETBodyRow.prototype.updateIdx = function (value) {
  this.idx = value;
  if (!this.cells) return;
  if (this.$idx === undefined) this.$idx = (0, _ACore.$)('.as-dt-row-index', this.elt) || null;
  if (this.$idx) this.$idx.attr('data-idx', this.idx + 1);
};
ETBodyRow.prototype.calcSize = function () {
  this.size = _Rectangle["default"].fromClientRect(this.elt.getBoundingClientRect());
};
ETBodyRow.prototype.notifyRemove = function () {
  if (this.adapter) this.adapter.notifyRowRemoveAt(this.idx);
};
ETBodyRow.prototype.notifyModified = function () {
  if (this.adapter) this.adapter.notifyRowModifiedAt(this.idx);
};
ETBodyRow.prototype.revokeResource = function () {
  // return;
  this.revokeResource = _noop["default"];
  (0, _utils.revokeResource)(this.elt);
  delete this.elt;
  this.body = null;
  this.notifyRemove = _noop["default"];
};
Object.defineProperty(ETBodyRow.prototype, 'adapter', {
  /**
   *
   * @returns {ETAdapter}
   */
  get: function get() {
    return this.body && this.body.table.wrapper && this.body.table.wrapper.adapter;
  }
});
function ETBodyCell(row, idx) {
  this.elt = (0, _ACore._)({
    tag: 'td',
    "class": 'as-dt-body-cell'
  });
  this.row = row;
  var adapter = this.row.body.table.wrapper.adapter;
  adapter.renderBodyCell(this.elt, row.data, idx, this);
}

/**
 * @extends Attributes
 * @param {EfficientTable} elt
 * @constructor
 */
function ETColWidthDeclaration(elt) {
  var _this12 = this;
  _Attributes["default"].call(this, this);
  if (!elt.table) return;
  var temp = elt.table.head.rows.reduce(function (ac, row) {
    var l = row.cells.reduce(function (ac1, cell) {
      var colspan = cell.data.attr && (cell.data.attrs.colspan || cell.data.attrs.colSpan);
      colspan = parseInt(colspan + '', 10);
      if (!(0, _utils.isNaturalNumber)(colspan) || !colspan) colspan = 1;
      var id = cell.data.id;
      if (id && typeof id === "string") {
        ac.id2idx[id] = ac1;
      }
      if (colspan === 1) {
        if (!ac.idx2cells[ac1]) ac.idx2cells[ac1] = [];
        ac.idx2cells[ac1].push(cell);
      }
      return ac1 + colspan;
    }, 0);
    ac.length = Math.max(ac.length, l);
    return ac;
  }, {
    length: 0,
    id2idx: {},
    idx2cells: {}
  });
  Array(temp.length).fill(0).forEach(function (u, i) {
    _this12.defineProperty('' + i, {
      set: function set(value) {
        var unit;
        if ((arguments.length <= 1 ? 0 : arguments.length - 1) > 1) unit = arguments.length <= 1 ? undefined : arguments[1];
        var headWith;
        var originValue = this.getProperty('' + i);
        var pOValue = (0, _attribute.parseMeasureValue)(originValue);
        if (!(0, _utils.isRealNumber)(value) || value < 0) {
          value = 'auto';
        } else if (unit === 'px') {
          if (pOValue.unit === '%') {
            headWith = elt.table.head.elt.getBoundingClientRect().width;
            value = value / headWith * 100 + '%';
          } else {
            value = value + 'px';
          }
        } else if (unit === '%') {
          headWith = elt.table.head.elt.getBoundingClientRect().width;
          if (pOValue.unit === 'px') {
            value = value / 188 * headWith;
          } else {
            value = value + '%';
          }
        }
        if (typeof value === "number") value = value + 'px';
        var cells = temp.idx2cells[i] || [];
        cells.forEach(function (cell) {
          if (value === 'auto') {
            if (cell.data.style) {
              delete cell.data.style.width;
              cell.elt.removeStyle('width');
            }
          } else {
            if (!cell.data.style) cell.data.style = {};
            cell.data.style.width = value;
            cell.elt.addStyle('width', value);
          }
        });
      },
      get: function get() {
        var _ref;
        var unit;
        if (arguments.length > 1) unit = arguments.length <= 0 ? undefined : arguments[0];
        var ref = (_ref = arguments.length - 1, _ref < 0 || arguments.length <= _ref ? undefined : arguments[_ref]);
        var value = ref.get();
        var cells = temp.idx2cells[i] || [];
        if (cells.length === 0) return 0;
        if (unit === 'px') {
          value = cells[0].elt.getBoundingClientRect().width;
        } else if (unit === '%') {
          value = cells[0].elt.getBoundingClientRect().width / elt.table.head.elt.getBoundingClientRect().width * 100;
        } else {
          value = cells.reduce(function (ac, cell) {
            var pValue;
            if (cell.data.style && cell.data.style.width) {
              pValue = (0, _attribute.parseMeasureValue)(cell.data.style.width);
              if (!pValue || pValue.unit !== 'px') return ac;
              return pValue.value;
            }
            return ac;
          }, 'auto');
        }
        return value;
      }
    });
  });
  Object.keys(temp.id2idx).forEach(function (id) {
    var idx = temp.id2idx[id];
    _this12.defineProperty(id, {
      set: function set() {
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        return this.setProperty.apply(this, [idx].concat(_toConsumableArray(args.slice(1))));
      },
      get: function get() {
        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          args[_key2] = arguments[_key2];
        }
        return this.getProperty.apply(this, [idx].concat(_toConsumableArray(args.slice(1))));
      }
    });
  });
}
_OOP["default"].mixClass(ETColWidthDeclaration, _Attributes["default"]);
Object.defineProperty(ETColWidthDeclaration.prototype, 'revokeResource', {
  value: function value() {
    delete this.$node;
    delete this.revokeResource;
  },
  writable: true,
  enumerable: false,
  configurable: true
});

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = exports.EmojiAnimByIdent = void 0;
var EmojiAnims = [["(heart)", "heart.png", "Heart"], ["(cool)", "cool.png", "Cool"], ["(hearteyes)", "hearteyes.png", "Heart eyes"], ["(stareyes)", "stareyes.png", "Star eyes"], ["(like)", "like.png", "Like"], ["(unamused)", "unamused.png", "Unamused"], ["(cwl)", "cwl.png", "Crying with laughter"], ["(xd)", "xd.png", "XD smiley"], [":)", "smile.png", "Smile"], [":(", "sad.png", "Sad"], [":D", "laugh.png", "Laugh"], [":O", "surprised.png", "Surprised"], [";)", "wink.png", "Wink"], [";(", "cry.png", "Crying"], ["(shivering)", "shivering.png", "Cold shivering"], ["(:|", "sweat.png", "Sweating"], [":|", "speechless.png", "Speechless"], [":P", "tongueout.png", "Cheeky"], [":$", "blush.png", "Blushing"], ["(inlove)", "inlove.png", "In love"], ["(kiss)", "kiss.png", "Kiss"], [":^)", "wonder.png", "Wondering"], ["|-)", "sleepy.png", "Sleepy"], ["|-(", "dull.png", "Dull"], ["(yawn)", "yawn.png", "Yawn"], ["(puke)", "puke.png", "Vomiting"], ["(doh)", "doh.png", "Doh!"], ["(angry)", "angry.png", "Angry"], ["(wasntme)", "wasntme.png", "It wasn't me!"], ["(worry)", "worry.png", "Worried"], ["(mm)", "mmm.png", "Mmmmm…"], ["(nerd)", "nerdy.png", "Nerdy"], ["(rainbowsmile)", "rainbowsmile.png", "Rainbow smile"], [":x", "lipssealed.png", "My lips are sealed"], ["(devil)", "devil.png", "Devil"], ["(angel)", "angel.png", "Angel"], ["(envy)", "envy.png", "Envy"], ["(makeup)", "makeup.png", "Make-up"], ["(think)", "think.png", "Thinking"], ["(rofl)", "rofl.png", "Rolling on the floor laughing"], ["(happy)", "happy.png", "Happy"], ["(smirk)", "smirk.png", "Smirking"], ["(nod)", "nod.png", "Nodding"], ["(shake)", "shake.png", "Shake"], ["(waiting)", "waiting.png", "Waiting"], ["(emo)", "emo.png", "Emo"], ["(donttalk)", "donttalktome.png", "Don't talk to me"], ["(idea)", "idea.png", "Idea"], ["(talk)", "talk.png", "Talking"], ["(swear)", "swear.png", "Swearing"], ["]:)", "evilgrin.png", "Evil grin"], ["(headbang)", "headbang.png", "Banging head on wall"], ["(learn)", "learn.png", "Global Learning"], ["(headphones)", "headphones.png", "Listening to headphones"], ["(morningafter)", "hungover.png", "Morning after party"], ["(selfie)", "selfie.png", "Selfie"], ["(shock)", "shock.png", "Spoiler alert"], ["(llsshock)", "llsshock.png", "Spoiler alert"], ["(ttm)", "ttm.png", "Talking too much"], ["(dream)", "dream.png", "Dreaming"], ["(ill)", "ill.png", "Ill"], ["(tired)", "tired.png", "Tired"], ["(party)", "party.png", "Party"], ["(bandit)", "bandit.png", "Bandit"], ["(tauri)", "tauri.png", "Bald man with glasses"], ["(nazar)", "nazar.png", "Blessing"], ["(movember)", "movember.png", "Movember"], ["(mysteryskype)", "mysteryskype.png", "Mystery Skype"], ["(dotdfemale)", "dotdfemale.png", "Day of the dead"], ["(dotdmale)", "dotdmale.png", "Day of the dead"], ["(selfiediwali)", "selfiediwali.png", "Selfie Diwali"], ["(diwaliselfie)", "diwaliselfie.png", "Diwali selfie"], ["(steveaoki)", "steveaoki.png", "Steve Aoki"], ["(aokijump)", "aokijump.png", "Aoki jump"], ["(cakethrow)", "cakethrow.png", "Cake throw"], ["(kolony)", "kolony.png", "Kolony"], ["(joy)", "joy.png", "Joy"], ["(anger)", "anger.png", "Anger"], ["(sadness)", "sadness.png", "Sadness"], ["(disgust)", "disgust.png", "Disgust"], ["(fear)", "fear.png", "Fear"], ["(hestonfacepalm)", "hestonfacepalm.png", "Heston facepalm"], ["(heston)", "heston.png", "Heston Blumenthal"], ["(stormtrooper)", "stormtrooper.png", "Storm trooper"], ["(kyloren)", "kyloren.png", "Kylo Ren"], ["(captainphasma)", "captainphasma.png", "Captain Phasma"], ["(malthe)", "malthe.png", "Smiling man with glasses"], ["(ladyvamp)", "ladyvampire.png", "Lady vampire"], ["(vampire)", "vampire.png", "Vampire"], ["(ghost)", "ghost.png", "Ghost"], ["(skull)", "skull.png", "Skull"], ["(pumpkin)", "pumpkin.png", "Pumpkin"], ["(santa)", "santa.png", "Santa"], ["(xmascwl)", "xmascwl.png", "Xmas crying with laughter"], ["(festiveparty)", "festiveparty.png", "Festive party"], ["(holidayspirit)", "holidayspirit.png", "Holiday spirit"], ["(rudolfsurprise)", "rudolfsurprise.png", "Surprised Rudolf"], ["(rudolfidea)", "rudolfidea.png", "Rudolf idea"], ["(wtf)", "wtf.png", "WTF…"], ["(smoking)", "smoke.png", "Smoking"], ["(drunk)", "drunk.png", "Drunk"], ["(finger)", "finger.png", "Finger"], ["(oliver)", "oliver.png", "Man saying come on"], ["(xmassarcastic)", "xmassarcastic.png", "Xmas sarcastic"], ["(xmascry)", "xmascry.png", "Xmas cry"], ["(wave)", "hi.png", "Hi"], ["(highfive)", "highfive.png", "High five"], ["(clap)", "clap.png", "Clapping"], ["(sarcastic)", "sarcastic.png", "Sarcastic"], ["(chuckle)", "giggle.png", "Giggle"], ["(facepalm)", "facepalm.png", "Facepalm"], ["(rock)", "rock.png", "Rock"], ["(yn)", "fingerscrossed.png", "Fingers crossed"], ["(listening)", "listening.png", "Listening"], ["(wait)", "wait.png", "Wait"], ["(whew)", "whew.png", "Relieved"], ["(tmi)", "tmi.png", "Too much information"], ["(call)", "call.png", "Call"], ["(punch)", "punch.png", "Punch"], ["(talktothehand)", "talktothehand.png", "Talk to the hand"], ["(whistle)", "whistle.png", "Whistle"], ["(slap)", "slap.png", "Slap"], ["(lalala)", "lalala.png", "Lalala"], ["(y)", "yes.png", "Yes"], ["(n)", "no.png", "No"], ["(handshake)", "handshake.png", "Handshake"], ["(fistbump)", "fistbump.png", "Fist bump"], ["(poke)", "poke.png", "Poke"], ["(celebrate)", "handsinair.png", "Hands celebrating"], ["(hearthands)", "hearthands.png", "Heart hands"], ["(victory)", "victory.png", "Victory sign"], ["(noworries)", "noworries.png", "No worries"], ["(ok)", "ok.png", "OK"], ["(pray)", "praying.png", "Praying"], ["(flex)", "muscle.png", "Muscle"], ["(ek)", "naturescall.png", "Nature's call"], ["(woty)", "woty.png", "Woman of the year"], ["(glassceiling)", "glassceiling.png", "Glass ceiling"], ["(deadyes)", "deadyes.png", "Dead yes"], ["(xmasyes)", "xmasyes.png", "Xmas yes"], ["(dropthemic)", "dropthemic.png", "Drop the mic"]];
var _default = EmojiAnims;
exports["default"] = _default;
var EmojiAnimByIdent = EmojiAnims.reduce(function (ac, cr) {
  ac[cr[0]] = cr;
  return ac;
}, {});
exports.EmojiAnimByIdent = EmojiAnimByIdent;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var EmojiChars = [["Smileys & Emotion", [["face-smiling", [[["U+1F600"], "😀", "grinning face"], [["U+1F603"], "😃", "grinning face with big eyes"], [["U+1F604"], "😄", "grinning face with smiling eyes"], [["U+1F601"], "😁", "beaming face with smiling eyes"], [["U+1F606"], "😆", "grinning squinting face"], [["U+1F605"], "😅", "grinning face with sweat"], [["U+1F923"], "🤣", "rolling on the floor laughing"], [["U+1F602"], "😂", "face with tears of joy"], [["U+1F642"], "🙂", "slightly smiling face"], [["U+1F643"], "🙃", "upside-down face"], [["U+1F609"], "😉", "winking face"], [["U+1F60A"], "😊", "smiling face with smiling eyes"], [["U+1F607"], "😇", "smiling face with halo"]]], ["face-affection", [[["U+1F970"], "🥰", "smiling face with hearts"], [["U+1F60D"], "😍", "smiling face with heart-eyes"], [["U+1F929"], "🤩", "star-struck"], [["U+1F618"], "😘", "face blowing a kiss"], [["U+1F617"], "😗", "kissing face"], [["U+263A"], "☺", "smiling face"], [["U+1F61A"], "😚", "kissing face with closed eyes"], [["U+1F619"], "😙", "kissing face with smiling eyes"], [["U+1F972"], "🥲", "⊛ smiling face with tear"]]], ["face-tongue", [[["U+1F60B"], "😋", "face savoring food"], [["U+1F61B"], "😛", "face with tongue"], [["U+1F61C"], "😜", "winking face with tongue"], [["U+1F92A"], "🤪", "zany face"], [["U+1F61D"], "😝", "squinting face with tongue"], [["U+1F911"], "🤑", "money-mouth face"]]], ["face-hand", [[["U+1F917"], "🤗", "hugging face"], [["U+1F92D"], "🤭", "face with hand over mouth"], [["U+1F92B"], "🤫", "shushing face"], [["U+1F914"], "🤔", "thinking face"]]], ["face-neutral-skeptical", [[["U+1F910"], "🤐", "zipper-mouth face"], [["U+1F928"], "🤨", "face with raised eyebrow"], [["U+1F610"], "😐", "neutral face"], [["U+1F611"], "😑", "expressionless face"], [["U+1F636"], "😶", "face without mouth"], [["U+1F60F"], "😏", "smirking face"], [["U+1F612"], "😒", "unamused face"], [["U+1F644"], "🙄", "face with rolling eyes"], [["U+1F62C"], "😬", "grimacing face"], [["U+1F925"], "🤥", "lying face"]]], ["face-sleepy", [[["U+1F60C"], "😌", "relieved face"], [["U+1F614"], "😔", "pensive face"], [["U+1F62A"], "😪", "sleepy face"], [["U+1F924"], "🤤", "drooling face"], [["U+1F634"], "😴", "sleeping face"]]], ["face-unwell", [[["U+1F637"], "😷", "face with medical mask"], [["U+1F912"], "🤒", "face with thermometer"], [["U+1F915"], "🤕", "face with head-bandage"], [["U+1F922"], "🤢", "nauseated face"], [["U+1F92E"], "🤮", "face vomiting"], [["U+1F927"], "🤧", "sneezing face"], [["U+1F975"], "🥵", "hot face"], [["U+1F976"], "🥶", "cold face"], [["U+1F974"], "🥴", "woozy face"], [["U+1F635"], "😵", "dizzy face"], [["U+1F92F"], "🤯", "exploding head"]]], ["face-hat", [[["U+1F920"], "🤠", "cowboy hat face"], [["U+1F973"], "🥳", "partying face"], [["U+1F978"], "🥸", "⊛ disguised face"]]], ["face-glasses", [[["U+1F60E"], "😎", "smiling face with sunglasses"], [["U+1F913"], "🤓", "nerd face"], [["U+1F9D0"], "🧐", "face with monocle"]]], ["face-concerned", [[["U+1F615"], "😕", "confused face"], [["U+1F61F"], "😟", "worried face"], [["U+1F641"], "🙁", "slightly frowning face"], [["U+2639"], "☹", "frowning face"], [["U+1F62E"], "😮", "face with open mouth"], [["U+1F62F"], "😯", "hushed face"], [["U+1F632"], "😲", "astonished face"], [["U+1F633"], "😳", "flushed face"], [["U+1F97A"], "🥺", "pleading face"], [["U+1F626"], "😦", "frowning face with open mouth"], [["U+1F627"], "😧", "anguished face"], [["U+1F628"], "😨", "fearful face"], [["U+1F630"], "😰", "anxious face with sweat"], [["U+1F625"], "😥", "sad but relieved face"], [["U+1F622"], "😢", "crying face"], [["U+1F62D"], "😭", "loudly crying face"], [["U+1F631"], "😱", "face screaming in fear"], [["U+1F616"], "😖", "confounded face"], [["U+1F623"], "😣", "persevering face"], [["U+1F61E"], "😞", "disappointed face"], [["U+1F613"], "😓", "downcast face with sweat"], [["U+1F629"], "😩", "weary face"], [["U+1F62B"], "😫", "tired face"], [["U+1F971"], "🥱", "yawning face"]]], ["face-negative", [[["U+1F624"], "😤", "face with steam from nose"], [["U+1F621"], "😡", "pouting face"], [["U+1F620"], "😠", "angry face"], [["U+1F92C"], "🤬", "face with symbols on mouth"], [["U+1F608"], "😈", "smiling face with horns"], [["U+1F47F"], "👿", "angry face with horns"], [["U+1F480"], "💀", "skull"], [["U+2620"], "☠", "skull and crossbones"]]], ["face-costume", [[["U+1F4A9"], "💩", "pile of poo"], [["U+1F921"], "🤡", "clown face"], [["U+1F479"], "👹", "ogre"], [["U+1F47A"], "👺", "goblin"], [["U+1F47B"], "👻", "ghost"], [["U+1F47D"], "👽", "alien"], [["U+1F47E"], "👾", "alien monster"], [["U+1F916"], "🤖", "robot"]]], ["cat-face", [[["U+1F63A"], "😺", "grinning cat"], [["U+1F638"], "😸", "grinning cat with smiling eyes"], [["U+1F639"], "😹", "cat with tears of joy"], [["U+1F63B"], "😻", "smiling cat with heart-eyes"], [["U+1F63C"], "😼", "cat with wry smile"], [["U+1F63D"], "😽", "kissing cat"], [["U+1F640"], "🙀", "weary cat"], [["U+1F63F"], "😿", "crying cat"], [["U+1F63E"], "😾", "pouting cat"]]], ["monkey-face", [[["U+1F648"], "🙈", "see-no-evil monkey"], [["U+1F649"], "🙉", "hear-no-evil monkey"], [["U+1F64A"], "🙊", "speak-no-evil monkey"]]], ["emotion", [[["U+1F48B"], "💋", "kiss mark"], [["U+1F48C"], "💌", "love letter"], [["U+1F498"], "💘", "heart with arrow"], [["U+1F49D"], "💝", "heart with ribbon"], [["U+1F496"], "💖", "sparkling heart"], [["U+1F497"], "💗", "growing heart"], [["U+1F493"], "💓", "beating heart"], [["U+1F49E"], "💞", "revolving hearts"], [["U+1F495"], "💕", "two hearts"], [["U+1F49F"], "💟", "heart decoration"], [["U+2763"], "❣", "heart exclamation"], [["U+1F494"], "💔", "broken heart"], [["U+2764"], "❤", "red heart"], [["U+1F9E1"], "🧡", "orange heart"], [["U+1F49B"], "💛", "yellow heart"], [["U+1F49A"], "💚", "green heart"], [["U+1F499"], "💙", "blue heart"], [["U+1F49C"], "💜", "purple heart"], [["U+1F90E"], "🤎", "brown heart"], [["U+1F5A4"], "🖤", "black heart"], [["U+1F90D"], "🤍", "white heart"], [["U+1F4AF"], "💯", "hundred points"], [["U+1F4A2"], "💢", "anger symbol"], [["U+1F4A5"], "💥", "collision"], [["U+1F4AB"], "💫", "dizzy"], [["U+1F4A6"], "💦", "sweat droplets"], [["U+1F4A8"], "💨", "dashing away"], [["U+1F573"], "🕳", "hole"], [["U+1F4A3"], "💣", "bomb"], [["U+1F4AC"], "💬", "speech balloon"], [["U+1F441", "U+FE0F", "U+200D", "U+1F5E8", "U+FE0F"], "👁️‍🗨️", "eye in speech bubble"], [["U+1F5E8"], "🗨", "left speech bubble"], [["U+1F5EF"], "🗯", "right anger bubble"], [["U+1F4AD"], "💭", "thought balloon"], [["U+1F4A4"], "💤", "zzz"]]]]], ["People & Body", [["hand-fingers-open", [[["U+1F44B"], "👋", "waving hand"], [["U+1F91A"], "🤚", "raised back of hand"], [["U+1F590"], "🖐", "hand with fingers splayed"], [["U+270B"], "✋", "raised hand"], [["U+1F596"], "🖖", "vulcan salute"]]], ["hand-fingers-partial", [[["U+1F44C"], "👌", "OK hand"], [["U+1F90C"], "🤌", "⊛ pinched fingers"], [["U+1F90F"], "🤏", "pinching hand"], [["U+270C"], "✌", "victory hand"], [["U+1F91E"], "🤞", "crossed fingers"], [["U+1F91F"], "🤟", "love-you gesture"], [["U+1F918"], "🤘", "sign of the horns"], [["U+1F919"], "🤙", "call me hand"]]], ["hand-single-finger", [[["U+1F448"], "👈", "backhand index pointing left"], [["U+1F449"], "👉", "backhand index pointing right"], [["U+1F446"], "👆", "backhand index pointing up"], [["U+1F595"], "🖕", "middle finger"], [["U+1F447"], "👇", "backhand index pointing down"], [["U+261D"], "☝", "index pointing up"]]], ["hand-fingers-closed", [[["U+1F44D"], "👍", "thumbs up"], [["U+1F44E"], "👎", "thumbs down"], [["U+270A"], "✊", "raised fist"], [["U+1F44A"], "👊", "oncoming fist"], [["U+1F91B"], "🤛", "left-facing fist"], [["U+1F91C"], "🤜", "right-facing fist"]]], ["hands", [[["U+1F44F"], "👏", "clapping hands"], [["U+1F64C"], "🙌", "raising hands"], [["U+1F450"], "👐", "open hands"], [["U+1F932"], "🤲", "palms up together"], [["U+1F91D"], "🤝", "handshake"], [["U+1F64F"], "🙏", "folded hands"]]], ["hand-prop", [[["U+270D"], "✍", "writing hand"], [["U+1F485"], "💅", "nail polish"], [["U+1F933"], "🤳", "selfie"]]], ["body-parts", [[["U+1F4AA"], "💪", "flexed biceps"], [["U+1F9BE"], "🦾", "mechanical arm"], [["U+1F9BF"], "🦿", "mechanical leg"], [["U+1F9B5"], "🦵", "leg"], [["U+1F9B6"], "🦶", "foot"], [["U+1F442"], "👂", "ear"], [["U+1F9BB"], "🦻", "ear with hearing aid"], [["U+1F443"], "👃", "nose"], [["U+1F9E0"], "🧠", "brain"], [["U+1F9B7"], "🦷", "tooth"], [["U+1F9B4"], "🦴", "bone"], [["U+1F440"], "👀", "eyes"], [["U+1F441"], "👁", "eye"], [["U+1F445"], "👅", "tongue"], [["U+1F444"], "👄", "mouth"]]], ["person", [[["U+1F476"], "👶", "baby"], [["U+1F9D2"], "🧒", "child"], [["U+1F466"], "👦", "boy"], [["U+1F467"], "👧", "girl"], [["U+1F9D1"], "🧑", "person"], [["U+1F471"], "👱", "person: blond hair"], [["U+1F468"], "👨", "man"], [["U+1F9D4"], "🧔", "man: beard"], [["U+1F468", "U+200D", "U+1F9B0"], "👨‍🦰", "man: red hair"], [["U+1F468", "U+200D", "U+1F9B1"], "👨‍🦱", "man: curly hair"], [["U+1F468", "U+200D", "U+1F9B3"], "👨‍🦳", "man: white hair"], [["U+1F468", "U+200D", "U+1F9B2"], "👨‍🦲", "man: bald"], [["U+1F469"], "👩", "woman"], [["U+1F469", "U+200D", "U+1F9B0"], "👩‍🦰", "woman: red hair"], [["U+1F9D1", "U+200D", "U+1F9B0"], "🧑‍🦰", "person: red hair"], [["U+1F469", "U+200D", "U+1F9B1"], "👩‍🦱", "woman: curly hair"], [["U+1F9D1", "U+200D", "U+1F9B1"], "🧑‍🦱", "person: curly hair"], [["U+1F469", "U+200D", "U+1F9B3"], "👩‍🦳", "woman: white hair"], [["U+1F9D1", "U+200D", "U+1F9B3"], "🧑‍🦳", "person: white hair"], [["U+1F469", "U+200D", "U+1F9B2"], "👩‍🦲", "woman: bald"], [["U+1F9D1", "U+200D", "U+1F9B2"], "🧑‍🦲", "person: bald"], [["U+1F471", "U+200D", "U+2640", "U+FE0F"], "👱‍♀️", "woman: blond hair"], [["U+1F471", "U+200D", "U+2642", "U+FE0F"], "👱‍♂️", "man: blond hair"], [["U+1F9D3"], "🧓", "older person"], [["U+1F474"], "👴", "old man"], [["U+1F475"], "👵", "old woman"]]], ["person-gesture", [[["U+1F64D"], "🙍", "person frowning"], [["U+1F64D", "U+200D", "U+2642", "U+FE0F"], "🙍‍♂️", "man frowning"], [["U+1F64D", "U+200D", "U+2640", "U+FE0F"], "🙍‍♀️", "woman frowning"], [["U+1F64E"], "🙎", "person pouting"], [["U+1F64E", "U+200D", "U+2642", "U+FE0F"], "🙎‍♂️", "man pouting"], [["U+1F64E", "U+200D", "U+2640", "U+FE0F"], "🙎‍♀️", "woman pouting"], [["U+1F645"], "🙅", "person gesturing NO"], [["U+1F645", "U+200D", "U+2642", "U+FE0F"], "🙅‍♂️", "man gesturing NO"], [["U+1F645", "U+200D", "U+2640", "U+FE0F"], "🙅‍♀️", "woman gesturing NO"], [["U+1F646"], "🙆", "person gesturing OK"], [["U+1F646", "U+200D", "U+2642", "U+FE0F"], "🙆‍♂️", "man gesturing OK"], [["U+1F646", "U+200D", "U+2640", "U+FE0F"], "🙆‍♀️", "woman gesturing OK"], [["U+1F481"], "💁", "person tipping hand"], [["U+1F481", "U+200D", "U+2642", "U+FE0F"], "💁‍♂️", "man tipping hand"], [["U+1F481", "U+200D", "U+2640", "U+FE0F"], "💁‍♀️", "woman tipping hand"], [["U+1F64B"], "🙋", "person raising hand"], [["U+1F64B", "U+200D", "U+2642", "U+FE0F"], "🙋‍♂️", "man raising hand"], [["U+1F64B", "U+200D", "U+2640", "U+FE0F"], "🙋‍♀️", "woman raising hand"], [["U+1F9CF"], "🧏", "deaf person"], [["U+1F9CF", "U+200D", "U+2642", "U+FE0F"], "🧏‍♂️", "deaf man"], [["U+1F9CF", "U+200D", "U+2640", "U+FE0F"], "🧏‍♀️", "deaf woman"], [["U+1F647"], "🙇", "person bowing"], [["U+1F647", "U+200D", "U+2642", "U+FE0F"], "🙇‍♂️", "man bowing"], [["U+1F647", "U+200D", "U+2640", "U+FE0F"], "🙇‍♀️", "woman bowing"], [["U+1F926"], "🤦", "person facepalming"], [["U+1F926", "U+200D", "U+2642", "U+FE0F"], "🤦‍♂️", "man facepalming"], [["U+1F926", "U+200D", "U+2640", "U+FE0F"], "🤦‍♀️", "woman facepalming"], [["U+1F937"], "🤷", "person shrugging"], [["U+1F937", "U+200D", "U+2642", "U+FE0F"], "🤷‍♂️", "man shrugging"], [["U+1F937", "U+200D", "U+2640", "U+FE0F"], "🤷‍♀️", "woman shrugging"]]], ["person-role", [[["U+1F9D1", "U+200D", "U+2695", "U+FE0F"], "🧑‍⚕️", "health worker"], [["U+1F468", "U+200D", "U+2695", "U+FE0F"], "👨‍⚕️", "man health worker"], [["U+1F469", "U+200D", "U+2695", "U+FE0F"], "👩‍⚕️", "woman health worker"], [["U+1F9D1", "U+200D", "U+1F393"], "🧑‍🎓", "student"], [["U+1F468", "U+200D", "U+1F393"], "👨‍🎓", "man student"], [["U+1F469", "U+200D", "U+1F393"], "👩‍🎓", "woman student"], [["U+1F9D1", "U+200D", "U+1F3EB"], "🧑‍🏫", "teacher"], [["U+1F468", "U+200D", "U+1F3EB"], "👨‍🏫", "man teacher"], [["U+1F469", "U+200D", "U+1F3EB"], "👩‍🏫", "woman teacher"], [["U+1F9D1", "U+200D", "U+2696", "U+FE0F"], "🧑‍⚖️", "judge"], [["U+1F468", "U+200D", "U+2696", "U+FE0F"], "👨‍⚖️", "man judge"], [["U+1F469", "U+200D", "U+2696", "U+FE0F"], "👩‍⚖️", "woman judge"], [["U+1F9D1", "U+200D", "U+1F33E"], "🧑‍🌾", "farmer"], [["U+1F468", "U+200D", "U+1F33E"], "👨‍🌾", "man farmer"], [["U+1F469", "U+200D", "U+1F33E"], "👩‍🌾", "woman farmer"], [["U+1F9D1", "U+200D", "U+1F373"], "🧑‍🍳", "cook"], [["U+1F468", "U+200D", "U+1F373"], "👨‍🍳", "man cook"], [["U+1F469", "U+200D", "U+1F373"], "👩‍🍳", "woman cook"], [["U+1F9D1", "U+200D", "U+1F527"], "🧑‍🔧", "mechanic"], [["U+1F468", "U+200D", "U+1F527"], "👨‍🔧", "man mechanic"], [["U+1F469", "U+200D", "U+1F527"], "👩‍🔧", "woman mechanic"], [["U+1F9D1", "U+200D", "U+1F3ED"], "🧑‍🏭", "factory worker"], [["U+1F468", "U+200D", "U+1F3ED"], "👨‍🏭", "man factory worker"], [["U+1F469", "U+200D", "U+1F3ED"], "👩‍🏭", "woman factory worker"], [["U+1F9D1", "U+200D", "U+1F4BC"], "🧑‍💼", "office worker"], [["U+1F468", "U+200D", "U+1F4BC"], "👨‍💼", "man office worker"], [["U+1F469", "U+200D", "U+1F4BC"], "👩‍💼", "woman office worker"], [["U+1F9D1", "U+200D", "U+1F52C"], "🧑‍🔬", "scientist"], [["U+1F468", "U+200D", "U+1F52C"], "👨‍🔬", "man scientist"], [["U+1F469", "U+200D", "U+1F52C"], "👩‍🔬", "woman scientist"], [["U+1F9D1", "U+200D", "U+1F4BB"], "🧑‍💻", "technologist"], [["U+1F468", "U+200D", "U+1F4BB"], "👨‍💻", "man technologist"], [["U+1F469", "U+200D", "U+1F4BB"], "👩‍💻", "woman technologist"], [["U+1F9D1", "U+200D", "U+1F3A4"], "🧑‍🎤", "singer"], [["U+1F468", "U+200D", "U+1F3A4"], "👨‍🎤", "man singer"], [["U+1F469", "U+200D", "U+1F3A4"], "👩‍🎤", "woman singer"], [["U+1F9D1", "U+200D", "U+1F3A8"], "🧑‍🎨", "artist"], [["U+1F468", "U+200D", "U+1F3A8"], "👨‍🎨", "man artist"], [["U+1F469", "U+200D", "U+1F3A8"], "👩‍🎨", "woman artist"], [["U+1F9D1", "U+200D", "U+2708", "U+FE0F"], "🧑‍✈️", "pilot"], [["U+1F468", "U+200D", "U+2708", "U+FE0F"], "👨‍✈️", "man pilot"], [["U+1F469", "U+200D", "U+2708", "U+FE0F"], "👩‍✈️", "woman pilot"], [["U+1F9D1", "U+200D", "U+1F680"], "🧑‍🚀", "astronaut"], [["U+1F468", "U+200D", "U+1F680"], "👨‍🚀", "man astronaut"], [["U+1F469", "U+200D", "U+1F680"], "👩‍🚀", "woman astronaut"], [["U+1F9D1", "U+200D", "U+1F692"], "🧑‍🚒", "firefighter"], [["U+1F468", "U+200D", "U+1F692"], "👨‍🚒", "man firefighter"], [["U+1F469", "U+200D", "U+1F692"], "👩‍🚒", "woman firefighter"], [["U+1F46E"], "👮", "police officer"], [["U+1F46E", "U+200D", "U+2642", "U+FE0F"], "👮‍♂️", "man police officer"], [["U+1F46E", "U+200D", "U+2640", "U+FE0F"], "👮‍♀️", "woman police officer"], [["U+1F575"], "🕵", "detective"], [["U+1F575", "U+FE0F", "U+200D", "U+2642", "U+FE0F"], "🕵️‍♂️", "man detective"], [["U+1F575", "U+FE0F", "U+200D", "U+2640", "U+FE0F"], "🕵️‍♀️", "woman detective"], [["U+1F482"], "💂", "guard"], [["U+1F482", "U+200D", "U+2642", "U+FE0F"], "💂‍♂️", "man guard"], [["U+1F482", "U+200D", "U+2640", "U+FE0F"], "💂‍♀️", "woman guard"], [["U+1F977"], "🥷", "⊛ ninja"], [["U+1F477"], "👷", "construction worker"], [["U+1F477", "U+200D", "U+2642", "U+FE0F"], "👷‍♂️", "man construction worker"], [["U+1F477", "U+200D", "U+2640", "U+FE0F"], "👷‍♀️", "woman construction worker"], [["U+1F934"], "🤴", "prince"], [["U+1F478"], "👸", "princess"], [["U+1F473"], "👳", "person wearing turban"], [["U+1F473", "U+200D", "U+2642", "U+FE0F"], "👳‍♂️", "man wearing turban"], [["U+1F473", "U+200D", "U+2640", "U+FE0F"], "👳‍♀️", "woman wearing turban"], [["U+1F472"], "👲", "person with skullcap"], [["U+1F9D5"], "🧕", "woman with headscarf"], [["U+1F935"], "🤵", "person in tuxedo"], [["U+1F935", "U+200D", "U+2642", "U+FE0F"], "🤵‍♂️", "⊛ man in tuxedo"], [["U+1F935", "U+200D", "U+2640", "U+FE0F"], "🤵‍♀️", "⊛ woman in tuxedo"], [["U+1F470"], "👰", "person with veil"], [["U+1F930"], "🤰", "pregnant woman"], [["U+1F931"], "🤱", "breast-feeding"]]], ["person-fantasy", [[["U+1F47C"], "👼", "baby angel"], [["U+1F385"], "🎅", "Santa Claus"], [["U+1F936"], "🤶", "Mrs. Claus"], [["U+1F9B8"], "🦸", "superhero"], [["U+1F9B8", "U+200D", "U+2642", "U+FE0F"], "🦸‍♂️", "man superhero"], [["U+1F9B8", "U+200D", "U+2640", "U+FE0F"], "🦸‍♀️", "woman superhero"], [["U+1F9B9"], "🦹", "supervillain"], [["U+1F9B9", "U+200D", "U+2642", "U+FE0F"], "🦹‍♂️", "man supervillain"], [["U+1F9B9", "U+200D", "U+2640", "U+FE0F"], "🦹‍♀️", "woman supervillain"], [["U+1F9D9"], "🧙", "mage"], [["U+1F9D9", "U+200D", "U+2642", "U+FE0F"], "🧙‍♂️", "man mage"], [["U+1F9D9", "U+200D", "U+2640", "U+FE0F"], "🧙‍♀️", "woman mage"], [["U+1F9DA"], "🧚", "fairy"], [["U+1F9DA", "U+200D", "U+2642", "U+FE0F"], "🧚‍♂️", "man fairy"], [["U+1F9DA", "U+200D", "U+2640", "U+FE0F"], "🧚‍♀️", "woman fairy"], [["U+1F9DB"], "🧛", "vampire"], [["U+1F9DB", "U+200D", "U+2642", "U+FE0F"], "🧛‍♂️", "man vampire"], [["U+1F9DB", "U+200D", "U+2640", "U+FE0F"], "🧛‍♀️", "woman vampire"], [["U+1F9DC"], "🧜", "merperson"], [["U+1F9DC", "U+200D", "U+2642", "U+FE0F"], "🧜‍♂️", "merman"], [["U+1F9DC", "U+200D", "U+2640", "U+FE0F"], "🧜‍♀️", "mermaid"], [["U+1F9DD"], "🧝", "elf"], [["U+1F9DD", "U+200D", "U+2642", "U+FE0F"], "🧝‍♂️", "man elf"], [["U+1F9DD", "U+200D", "U+2640", "U+FE0F"], "🧝‍♀️", "woman elf"], [["U+1F9DE"], "🧞", "genie"], [["U+1F9DE", "U+200D", "U+2642", "U+FE0F"], "🧞‍♂️", "man genie"], [["U+1F9DE", "U+200D", "U+2640", "U+FE0F"], "🧞‍♀️", "woman genie"], [["U+1F9DF"], "🧟", "zombie"], [["U+1F9DF", "U+200D", "U+2642", "U+FE0F"], "🧟‍♂️", "man zombie"], [["U+1F9DF", "U+200D", "U+2640", "U+FE0F"], "🧟‍♀️", "woman zombie"]]], ["person-activity", [[["U+1F486"], "💆", "person getting massage"], [["U+1F486", "U+200D", "U+2642", "U+FE0F"], "💆‍♂️", "man getting massage"], [["U+1F486", "U+200D", "U+2640", "U+FE0F"], "💆‍♀️", "woman getting massage"], [["U+1F487"], "💇", "person getting haircut"], [["U+1F487", "U+200D", "U+2642", "U+FE0F"], "💇‍♂️", "man getting haircut"], [["U+1F487", "U+200D", "U+2640", "U+FE0F"], "💇‍♀️", "woman getting haircut"], [["U+1F6B6"], "🚶", "person walking"], [["U+1F6B6", "U+200D", "U+2642", "U+FE0F"], "🚶‍♂️", "man walking"], [["U+1F6B6", "U+200D", "U+2640", "U+FE0F"], "🚶‍♀️", "woman walking"], [["U+1F9CD"], "🧍", "person standing"], [["U+1F9CD", "U+200D", "U+2642", "U+FE0F"], "🧍‍♂️", "man standing"], [["U+1F9CD", "U+200D", "U+2640", "U+FE0F"], "🧍‍♀️", "woman standing"], [["U+1F9CE"], "🧎", "person kneeling"], [["U+1F9CE", "U+200D", "U+2642", "U+FE0F"], "🧎‍♂️", "man kneeling"], [["U+1F9CE", "U+200D", "U+2640", "U+FE0F"], "🧎‍♀️", "woman kneeling"], [["U+1F9D1", "U+200D", "U+1F9AF"], "🧑‍🦯", "person with white cane"], [["U+1F468", "U+200D", "U+1F9AF"], "👨‍🦯", "man with white cane"], [["U+1F469", "U+200D", "U+1F9AF"], "👩‍🦯", "woman with white cane"], [["U+1F9D1", "U+200D", "U+1F9BC"], "🧑‍🦼", "person in motorized wheelchair"], [["U+1F468", "U+200D", "U+1F9BC"], "👨‍🦼", "man in motorized wheelchair"], [["U+1F469", "U+200D", "U+1F9BC"], "👩‍🦼", "woman in motorized wheelchair"], [["U+1F9D1", "U+200D", "U+1F9BD"], "🧑‍🦽", "person in manual wheelchair"], [["U+1F468", "U+200D", "U+1F9BD"], "👨‍🦽", "man in manual wheelchair"], [["U+1F469", "U+200D", "U+1F9BD"], "👩‍🦽", "woman in manual wheelchair"], [["U+1F3C3"], "🏃", "person running"], [["U+1F3C3", "U+200D", "U+2642", "U+FE0F"], "🏃‍♂️", "man running"], [["U+1F3C3", "U+200D", "U+2640", "U+FE0F"], "🏃‍♀️", "woman running"], [["U+1F483"], "💃", "woman dancing"], [["U+1F57A"], "🕺", "man dancing"], [["U+1F574"], "🕴", "person in suit levitating"], [["U+1F46F"], "👯", "people with bunny ears"], [["U+1F46F", "U+200D", "U+2642", "U+FE0F"], "👯‍♂️", "men with bunny ears"], [["U+1F46F", "U+200D", "U+2640", "U+FE0F"], "👯‍♀️", "women with bunny ears"], [["U+1F9D6"], "🧖", "person in steamy room"], [["U+1F9D6", "U+200D", "U+2642", "U+FE0F"], "🧖‍♂️", "man in steamy room"], [["U+1F9D6", "U+200D", "U+2640", "U+FE0F"], "🧖‍♀️", "woman in steamy room"], [["U+1F9D7"], "🧗", "person climbing"], [["U+1F9D7", "U+200D", "U+2642", "U+FE0F"], "🧗‍♂️", "man climbing"], [["U+1F9D7", "U+200D", "U+2640", "U+FE0F"], "🧗‍♀️", "woman climbing"]]], ["person-sport", [[["U+1F93A"], "🤺", "person fencing"], [["U+1F3C7"], "🏇", "horse racing"], [["U+26F7"], "⛷", "skier"], [["U+1F3C2"], "🏂", "snowboarder"], [["U+1F3CC"], "🏌", "person golfing"], [["U+1F3CC", "U+FE0F", "U+200D", "U+2642", "U+FE0F"], "🏌️‍♂️", "man golfing"], [["U+1F3CC", "U+FE0F", "U+200D", "U+2640", "U+FE0F"], "🏌️‍♀️", "woman golfing"], [["U+1F3C4"], "🏄", "person surfing"], [["U+1F3C4", "U+200D", "U+2642", "U+FE0F"], "🏄‍♂️", "man surfing"], [["U+1F3C4", "U+200D", "U+2640", "U+FE0F"], "🏄‍♀️", "woman surfing"], [["U+1F6A3"], "🚣", "person rowing boat"], [["U+1F6A3", "U+200D", "U+2642", "U+FE0F"], "🚣‍♂️", "man rowing boat"], [["U+1F6A3", "U+200D", "U+2640", "U+FE0F"], "🚣‍♀️", "woman rowing boat"], [["U+1F3CA"], "🏊", "person swimming"], [["U+1F3CA", "U+200D", "U+2642", "U+FE0F"], "🏊‍♂️", "man swimming"], [["U+1F3CA", "U+200D", "U+2640", "U+FE0F"], "🏊‍♀️", "woman swimming"], [["U+26F9"], "⛹", "person bouncing ball"], [["U+26F9", "U+FE0F", "U+200D", "U+2642", "U+FE0F"], "⛹️‍♂️", "man bouncing ball"], [["U+26F9", "U+FE0F", "U+200D", "U+2640", "U+FE0F"], "⛹️‍♀️", "woman bouncing ball"], [["U+1F3CB"], "🏋", "person lifting weights"], [["U+1F3CB", "U+FE0F", "U+200D", "U+2642", "U+FE0F"], "🏋️‍♂️", "man lifting weights"], [["U+1F3CB", "U+FE0F", "U+200D", "U+2640", "U+FE0F"], "🏋️‍♀️", "woman lifting weights"], [["U+1F6B4"], "🚴", "person biking"], [["U+1F6B4", "U+200D", "U+2642", "U+FE0F"], "🚴‍♂️", "man biking"], [["U+1F6B4", "U+200D", "U+2640", "U+FE0F"], "🚴‍♀️", "woman biking"], [["U+1F6B5"], "🚵", "person mountain biking"], [["U+1F6B5", "U+200D", "U+2642", "U+FE0F"], "🚵‍♂️", "man mountain biking"], [["U+1F6B5", "U+200D", "U+2640", "U+FE0F"], "🚵‍♀️", "woman mountain biking"], [["U+1F938"], "🤸", "person cartwheeling"], [["U+1F938", "U+200D", "U+2642", "U+FE0F"], "🤸‍♂️", "man cartwheeling"], [["U+1F938", "U+200D", "U+2640", "U+FE0F"], "🤸‍♀️", "woman cartwheeling"], [["U+1F93C"], "🤼", "people wrestling"], [["U+1F93C", "U+200D", "U+2642", "U+FE0F"], "🤼‍♂️", "men wrestling"], [["U+1F93C", "U+200D", "U+2640", "U+FE0F"], "🤼‍♀️", "women wrestling"], [["U+1F93D"], "🤽", "person playing water polo"], [["U+1F93D", "U+200D", "U+2642", "U+FE0F"], "🤽‍♂️", "man playing water polo"], [["U+1F93D", "U+200D", "U+2640", "U+FE0F"], "🤽‍♀️", "woman playing water polo"], [["U+1F93E"], "🤾", "person playing handball"], [["U+1F93E", "U+200D", "U+2642", "U+FE0F"], "🤾‍♂️", "man playing handball"], [["U+1F93E", "U+200D", "U+2640", "U+FE0F"], "🤾‍♀️", "woman playing handball"], [["U+1F939"], "🤹", "person juggling"], [["U+1F939", "U+200D", "U+2642", "U+FE0F"], "🤹‍♂️", "man juggling"], [["U+1F939", "U+200D", "U+2640", "U+FE0F"], "🤹‍♀️", "woman juggling"]]], ["person-resting", [[["U+1F9D8"], "🧘", "person in lotus position"], [["U+1F9D8", "U+200D", "U+2642", "U+FE0F"], "🧘‍♂️", "man in lotus position"], [["U+1F9D8", "U+200D", "U+2640", "U+FE0F"], "🧘‍♀️", "woman in lotus position"], [["U+1F6C0"], "🛀", "person taking bath"], [["U+1F6CC"], "🛌", "person in bed"]]], ["family", [[["U+1F9D1", "U+200D", "U+1F91D", "U+200D", "U+1F9D1"], "🧑‍🤝‍🧑", "people holding hands"], [["U+1F46D"], "👭", "women holding hands"], [["U+1F46B"], "👫", "woman and man holding hands"], [["U+1F46C"], "👬", "men holding hands"], [["U+1F48F"], "💏", "kiss"], [["U+1F469", "U+200D", "U+2764", "U+FE0F", "U+200D", "U+1F48B", "U+200D", "U+1F468"], "👩‍❤️‍💋‍👨", "kiss: woman, man"], [["U+1F468", "U+200D", "U+2764", "U+FE0F", "U+200D", "U+1F48B", "U+200D", "U+1F468"], "👨‍❤️‍💋‍👨", "kiss: man, man"], [["U+1F469", "U+200D", "U+2764", "U+FE0F", "U+200D", "U+1F48B", "U+200D", "U+1F469"], "👩‍❤️‍💋‍👩", "kiss: woman, woman"], [["U+1F491"], "💑", "couple with heart"], [["U+1F469", "U+200D", "U+2764", "U+FE0F", "U+200D", "U+1F468"], "👩‍❤️‍👨", "couple with heart: woman, man"], [["U+1F468", "U+200D", "U+2764", "U+FE0F", "U+200D", "U+1F468"], "👨‍❤️‍👨", "couple with heart: man, man"], [["U+1F469", "U+200D", "U+2764", "U+FE0F", "U+200D", "U+1F469"], "👩‍❤️‍👩", "couple with heart: woman, woman"], [["U+1F46A"], "👪", "family"], [["U+1F468", "U+200D", "U+1F469", "U+200D", "U+1F466"], "👨‍👩‍👦", "family: man, woman, boy"], [["U+1F468", "U+200D", "U+1F469", "U+200D", "U+1F467"], "👨‍👩‍👧", "family: man, woman, girl"], [["U+1F468", "U+200D", "U+1F469", "U+200D", "U+1F467", "U+200D", "U+1F466"], "👨‍👩‍👧‍👦", "family: man, woman, girl, boy"], [["U+1F468", "U+200D", "U+1F469", "U+200D", "U+1F466", "U+200D", "U+1F466"], "👨‍👩‍👦‍👦", "family: man, woman, boy, boy"], [["U+1F468", "U+200D", "U+1F469", "U+200D", "U+1F467", "U+200D", "U+1F467"], "👨‍👩‍👧‍👧", "family: man, woman, girl, girl"], [["U+1F468", "U+200D", "U+1F468", "U+200D", "U+1F466"], "👨‍👨‍👦", "family: man, man, boy"], [["U+1F468", "U+200D", "U+1F468", "U+200D", "U+1F467"], "👨‍👨‍👧", "family: man, man, girl"], [["U+1F468", "U+200D", "U+1F468", "U+200D", "U+1F467", "U+200D", "U+1F466"], "👨‍👨‍👧‍👦", "family: man, man, girl, boy"], [["U+1F468", "U+200D", "U+1F468", "U+200D", "U+1F466", "U+200D", "U+1F466"], "👨‍👨‍👦‍👦", "family: man, man, boy, boy"], [["U+1F468", "U+200D", "U+1F468", "U+200D", "U+1F467", "U+200D", "U+1F467"], "👨‍👨‍👧‍👧", "family: man, man, girl, girl"], [["U+1F469", "U+200D", "U+1F469", "U+200D", "U+1F466"], "👩‍👩‍👦", "family: woman, woman, boy"], [["U+1F469", "U+200D", "U+1F469", "U+200D", "U+1F467"], "👩‍👩‍👧", "family: woman, woman, girl"], [["U+1F469", "U+200D", "U+1F469", "U+200D", "U+1F467", "U+200D", "U+1F466"], "👩‍👩‍👧‍👦", "family: woman, woman, girl, boy"], [["U+1F469", "U+200D", "U+1F469", "U+200D", "U+1F466", "U+200D", "U+1F466"], "👩‍👩‍👦‍👦", "family: woman, woman, boy, boy"], [["U+1F469", "U+200D", "U+1F469", "U+200D", "U+1F467", "U+200D", "U+1F467"], "👩‍👩‍👧‍👧", "family: woman, woman, girl, girl"], [["U+1F468", "U+200D", "U+1F466"], "👨‍👦", "family: man, boy"], [["U+1F468", "U+200D", "U+1F466", "U+200D", "U+1F466"], "👨‍👦‍👦", "family: man, boy, boy"], [["U+1F468", "U+200D", "U+1F467"], "👨‍👧", "family: man, girl"], [["U+1F468", "U+200D", "U+1F467", "U+200D", "U+1F466"], "👨‍👧‍👦", "family: man, girl, boy"], [["U+1F468", "U+200D", "U+1F467", "U+200D", "U+1F467"], "👨‍👧‍👧", "family: man, girl, girl"], [["U+1F469", "U+200D", "U+1F466"], "👩‍👦", "family: woman, boy"], [["U+1F469", "U+200D", "U+1F466", "U+200D", "U+1F466"], "👩‍👦‍👦", "family: woman, boy, boy"], [["U+1F469", "U+200D", "U+1F467"], "👩‍👧", "family: woman, girl"], [["U+1F469", "U+200D", "U+1F467", "U+200D", "U+1F466"], "👩‍👧‍👦", "family: woman, girl, boy"], [["U+1F469", "U+200D", "U+1F467", "U+200D", "U+1F467"], "👩‍👧‍👧", "family: woman, girl, girl"]]], ["person-symbol", [[["U+1F5E3"], "🗣", "speaking head"], [["U+1F464"], "👤", "bust in silhouette"], [["U+1F465"], "👥", "busts in silhouette"], [["U+1FAC2"], "🫂", "⊛ people hugging"], [["U+1F463"], "👣", "footprints"]]]]], ["Component", [["hair-style", [[["U+1F9B0"], "🦰", "red hair"], [["U+1F9B1"], "🦱", "curly hair"], [["U+1F9B3"], "🦳", "white hair"], [["U+1F9B2"], "🦲", "bald"]]]]], ["Animals & Nature", [["animal-mammal", [[["U+1F435"], "🐵", "monkey face"], [["U+1F412"], "🐒", "monkey"], [["U+1F98D"], "🦍", "gorilla"], [["U+1F9A7"], "🦧", "orangutan"], [["U+1F436"], "🐶", "dog face"], [["U+1F415"], "🐕", "dog"], [["U+1F9AE"], "🦮", "guide dog"], [["U+1F415", "U+200D", "U+1F9BA"], "🐕‍🦺", "service dog"], [["U+1F429"], "🐩", "poodle"], [["U+1F43A"], "🐺", "wolf"], [["U+1F98A"], "🦊", "fox"], [["U+1F99D"], "🦝", "raccoon"], [["U+1F431"], "🐱", "cat face"], [["U+1F408"], "🐈", "cat"], [["U+1F981"], "🦁", "lion"], [["U+1F42F"], "🐯", "tiger face"], [["U+1F405"], "🐅", "tiger"], [["U+1F406"], "🐆", "leopard"], [["U+1F434"], "🐴", "horse face"], [["U+1F40E"], "🐎", "horse"], [["U+1F984"], "🦄", "unicorn"], [["U+1F993"], "🦓", "zebra"], [["U+1F98C"], "🦌", "deer"], [["U+1F42E"], "🐮", "cow face"], [["U+1F402"], "🐂", "ox"], [["U+1F403"], "🐃", "water buffalo"], [["U+1F404"], "🐄", "cow"], [["U+1F437"], "🐷", "pig face"], [["U+1F416"], "🐖", "pig"], [["U+1F417"], "🐗", "boar"], [["U+1F43D"], "🐽", "pig nose"], [["U+1F40F"], "🐏", "ram"], [["U+1F411"], "🐑", "ewe"], [["U+1F410"], "🐐", "goat"], [["U+1F42A"], "🐪", "camel"], [["U+1F42B"], "🐫", "two-hump camel"], [["U+1F999"], "🦙", "llama"], [["U+1F992"], "🦒", "giraffe"], [["U+1F418"], "🐘", "elephant"], [["U+1F98F"], "🦏", "rhinoceros"], [["U+1F99B"], "🦛", "hippopotamus"], [["U+1F42D"], "🐭", "mouse face"], [["U+1F401"], "🐁", "mouse"], [["U+1F400"], "🐀", "rat"], [["U+1F439"], "🐹", "hamster"], [["U+1F430"], "🐰", "rabbit face"], [["U+1F407"], "🐇", "rabbit"], [["U+1F43F"], "🐿", "chipmunk"], [["U+1F994"], "🦔", "hedgehog"], [["U+1F987"], "🦇", "bat"], [["U+1F43B"], "🐻", "bear"], [["U+1F43B", "U+200D", "U+2744", "U+FE0F"], "🐻‍❄️", "⊛ polar bear"], [["U+1F428"], "🐨", "koala"], [["U+1F43C"], "🐼", "panda"], [["U+1F9A5"], "🦥", "sloth"], [["U+1F9A6"], "🦦", "otter"], [["U+1F9A8"], "🦨", "skunk"], [["U+1F998"], "🦘", "kangaroo"], [["U+1F9A1"], "🦡", "badger"], [["U+1F43E"], "🐾", "paw prints"]]], ["animal-bird", [[["U+1F983"], "🦃", "turkey"], [["U+1F414"], "🐔", "chicken"], [["U+1F413"], "🐓", "rooster"], [["U+1F423"], "🐣", "hatching chick"], [["U+1F424"], "🐤", "baby chick"], [["U+1F425"], "🐥", "front-facing baby chick"], [["U+1F426"], "🐦", "bird"], [["U+1F427"], "🐧", "penguin"], [["U+1F54A"], "🕊", "dove"], [["U+1F985"], "🦅", "eagle"], [["U+1F986"], "🦆", "duck"], [["U+1F9A2"], "🦢", "swan"], [["U+1F989"], "🦉", "owl"], [["U+1FAB6"], "🪶", "⊛ feather"], [["U+1F9A9"], "🦩", "flamingo"], [["U+1F99A"], "🦚", "peacock"], [["U+1F99C"], "🦜", "parrot"]]], ["animal-amphibian", [[["U+1F438"], "🐸", "frog"]]], ["animal-reptile", [[["U+1F40A"], "🐊", "crocodile"], [["U+1F422"], "🐢", "turtle"], [["U+1F98E"], "🦎", "lizard"], [["U+1F40D"], "🐍", "snake"], [["U+1F432"], "🐲", "dragon face"], [["U+1F409"], "🐉", "dragon"], [["U+1F995"], "🦕", "sauropod"], [["U+1F996"], "🦖", "T-Rex"]]], ["animal-marine", [[["U+1F433"], "🐳", "spouting whale"], [["U+1F40B"], "🐋", "whale"], [["U+1F42C"], "🐬", "dolphin"], [["U+1F41F"], "🐟", "fish"], [["U+1F420"], "🐠", "tropical fish"], [["U+1F421"], "🐡", "blowfish"], [["U+1F988"], "🦈", "shark"], [["U+1F419"], "🐙", "octopus"], [["U+1F41A"], "🐚", "spiral shell"]]], ["animal-bug", [[["U+1F40C"], "🐌", "snail"], [["U+1F98B"], "🦋", "butterfly"], [["U+1F41B"], "🐛", "bug"], [["U+1F41C"], "🐜", "ant"], [["U+1F41D"], "🐝", "honeybee"], [["U+1F41E"], "🐞", "lady beetle"], [["U+1F997"], "🦗", "cricket"], [["U+1F577"], "🕷", "spider"], [["U+1F578"], "🕸", "spider web"], [["U+1F982"], "🦂", "scorpion"], [["U+1F99F"], "🦟", "mosquito"], [["U+1F9A0"], "🦠", "microbe"]]], ["plant-flower", [[["U+1F490"], "💐", "bouquet"], [["U+1F338"], "🌸", "cherry blossom"], [["U+1F4AE"], "💮", "white flower"], [["U+1F3F5"], "🏵", "rosette"], [["U+1F339"], "🌹", "rose"], [["U+1F940"], "🥀", "wilted flower"], [["U+1F33A"], "🌺", "hibiscus"], [["U+1F33B"], "🌻", "sunflower"], [["U+1F33C"], "🌼", "blossom"], [["U+1F337"], "🌷", "tulip"]]], ["plant-other", [[["U+1F331"], "🌱", "seedling"], [["U+1FAB4"], "🪴", "⊛ potted plant"], [["U+1F332"], "🌲", "evergreen tree"], [["U+1F333"], "🌳", "deciduous tree"], [["U+1F334"], "🌴", "palm tree"], [["U+1F335"], "🌵", "cactus"], [["U+1F33E"], "🌾", "sheaf of rice"], [["U+1F33F"], "🌿", "herb"], [["U+2618"], "☘", "shamrock"], [["U+1F340"], "🍀", "four leaf clover"], [["U+1F341"], "🍁", "maple leaf"], [["U+1F342"], "🍂", "fallen leaf"], [["U+1F343"], "🍃", "leaf fluttering in wind"]]]]], ["Food & Drink", [["food-fruit", [[["U+1F347"], "🍇", "grapes"], [["U+1F348"], "🍈", "melon"], [["U+1F349"], "🍉", "watermelon"], [["U+1F34A"], "🍊", "tangerine"], [["U+1F34B"], "🍋", "lemon"], [["U+1F34C"], "🍌", "banana"], [["U+1F34D"], "🍍", "pineapple"], [["U+1F96D"], "🥭", "mango"], [["U+1F34E"], "🍎", "red apple"], [["U+1F34F"], "🍏", "green apple"], [["U+1F350"], "🍐", "pear"], [["U+1F351"], "🍑", "peach"], [["U+1F352"], "🍒", "cherries"], [["U+1F353"], "🍓", "strawberry"], [["U+1FAD0"], "🫐", "⊛ blueberries"], [["U+1F95D"], "🥝", "kiwi fruit"], [["U+1F345"], "🍅", "tomato"], [["U+1FAD2"], "🫒", "⊛ olive"], [["U+1F965"], "🥥", "coconut"]]], ["food-vegetable", [[["U+1F951"], "🥑", "avocado"], [["U+1F346"], "🍆", "eggplant"], [["U+1F954"], "🥔", "potato"], [["U+1F955"], "🥕", "carrot"], [["U+1F33D"], "🌽", "ear of corn"], [["U+1F336"], "🌶", "hot pepper"], [["U+1F952"], "🥒", "cucumber"], [["U+1F96C"], "🥬", "leafy green"], [["U+1F966"], "🥦", "broccoli"], [["U+1F9C4"], "🧄", "garlic"], [["U+1F9C5"], "🧅", "onion"], [["U+1F344"], "🍄", "mushroom"], [["U+1F95C"], "🥜", "peanuts"], [["U+1F330"], "🌰", "chestnut"]]], ["food-prepared", [[["U+1F35E"], "🍞", "bread"], [["U+1F950"], "🥐", "croissant"], [["U+1F956"], "🥖", "baguette bread"], [["U+1FAD3"], "🫓", "⊛ flatbread"], [["U+1F968"], "🥨", "pretzel"], [["U+1F96F"], "🥯", "bagel"], [["U+1F95E"], "🥞", "pancakes"], [["U+1F9C7"], "🧇", "waffle"], [["U+1F9C0"], "🧀", "cheese wedge"], [["U+1F356"], "🍖", "meat on bone"], [["U+1F357"], "🍗", "poultry leg"], [["U+1F969"], "🥩", "cut of meat"], [["U+1F953"], "🥓", "bacon"], [["U+1F354"], "🍔", "hamburger"], [["U+1F35F"], "🍟", "french fries"], [["U+1F355"], "🍕", "pizza"], [["U+1F32D"], "🌭", "hot dog"], [["U+1F96A"], "🥪", "sandwich"], [["U+1F32E"], "🌮", "taco"], [["U+1F32F"], "🌯", "burrito"], [["U+1FAD4"], "🫔", "⊛ tamale"], [["U+1F959"], "🥙", "stuffed flatbread"], [["U+1F9C6"], "🧆", "falafel"], [["U+1F95A"], "🥚", "egg"], [["U+1F373"], "🍳", "cooking"], [["U+1F958"], "🥘", "shallow pan of food"], [["U+1F372"], "🍲", "pot of food"], [["U+1FAD5"], "🫕", "⊛ fondue"], [["U+1F963"], "🥣", "bowl with spoon"], [["U+1F957"], "🥗", "green salad"], [["U+1F37F"], "🍿", "popcorn"], [["U+1F9C8"], "🧈", "butter"], [["U+1F9C2"], "🧂", "salt"], [["U+1F96B"], "🥫", "canned food"]]], ["food-asian", [[["U+1F371"], "🍱", "bento box"], [["U+1F358"], "🍘", "rice cracker"], [["U+1F359"], "🍙", "rice ball"], [["U+1F35A"], "🍚", "cooked rice"], [["U+1F35B"], "🍛", "curry rice"], [["U+1F35C"], "🍜", "steaming bowl"], [["U+1F35D"], "🍝", "spaghetti"], [["U+1F360"], "🍠", "roasted sweet potato"], [["U+1F362"], "🍢", "oden"], [["U+1F363"], "🍣", "sushi"], [["U+1F364"], "🍤", "fried shrimp"], [["U+1F365"], "🍥", "fish cake with swirl"], [["U+1F96E"], "🥮", "moon cake"], [["U+1F361"], "🍡", "dango"], [["U+1F95F"], "🥟", "dumpling"], [["U+1F960"], "🥠", "fortune cookie"], [["U+1F961"], "🥡", "takeout box"]]], ["food-marine", [[["U+1F980"], "🦀", "crab"], [["U+1F99E"], "🦞", "lobster"], [["U+1F990"], "🦐", "shrimp"], [["U+1F991"], "🦑", "squid"], [["U+1F9AA"], "🦪", "oyster"]]], ["food-sweet", [[["U+1F366"], "🍦", "soft ice cream"], [["U+1F367"], "🍧", "shaved ice"], [["U+1F368"], "🍨", "ice cream"], [["U+1F369"], "🍩", "doughnut"], [["U+1F36A"], "🍪", "cookie"], [["U+1F382"], "🎂", "birthday cake"], [["U+1F370"], "🍰", "shortcake"], [["U+1F9C1"], "🧁", "cupcake"], [["U+1F967"], "🥧", "pie"], [["U+1F36B"], "🍫", "chocolate bar"], [["U+1F36C"], "🍬", "candy"], [["U+1F36D"], "🍭", "lollipop"], [["U+1F36E"], "🍮", "custard"], [["U+1F36F"], "🍯", "honey pot"]]], ["drink", [[["U+1F37C"], "🍼", "baby bottle"], [["U+1F95B"], "🥛", "glass of milk"], [["U+2615"], "☕", "hot beverage"], [["U+1F375"], "🍵", "teacup without handle"], [["U+1F376"], "🍶", "sake"], [["U+1F37E"], "🍾", "bottle with popping cork"], [["U+1F377"], "🍷", "wine glass"], [["U+1F378"], "🍸", "cocktail glass"], [["U+1F379"], "🍹", "tropical drink"], [["U+1F37A"], "🍺", "beer mug"], [["U+1F37B"], "🍻", "clinking beer mugs"], [["U+1F942"], "🥂", "clinking glasses"], [["U+1F943"], "🥃", "tumbler glass"], [["U+1F964"], "🥤", "cup with straw"], [["U+1F9CB"], "🧋", "⊛ bubble tea"], [["U+1F9C3"], "🧃", "beverage box"], [["U+1F9C9"], "🧉", "mate"], [["U+1F9CA"], "🧊", "ice"]]], ["dishware", [[["U+1F962"], "🥢", "chopsticks"], [["U+1F37D"], "🍽", "fork and knife with plate"], [["U+1F374"], "🍴", "fork and knife"], [["U+1F944"], "🥄", "spoon"], [["U+1F52A"], "🔪", "kitchen knife"], [["U+1F3FA"], "🏺", "amphora"]]]]], ["Travel & Places", [["place-map", [[["U+1F30D"], "🌍", "globe showing Europe-Africa"], [["U+1F30E"], "🌎", "globe showing Americas"], [["U+1F30F"], "🌏", "globe showing Asia-Australia"], [["U+1F310"], "🌐", "globe with meridians"], [["U+1F5FA"], "🗺", "world map"], [["U+1F5FE"], "🗾", "map of Japan"], [["U+1F9ED"], "🧭", "compass"]]], ["place-geographic", [[["U+1F3D4"], "🏔", "snow-capped mountain"], [["U+26F0"], "⛰", "mountain"], [["U+1F30B"], "🌋", "volcano"], [["U+1F5FB"], "🗻", "mount fuji"], [["U+1F3D5"], "🏕", "camping"], [["U+1F3D6"], "🏖", "beach with umbrella"], [["U+1F3DC"], "🏜", "desert"], [["U+1F3DD"], "🏝", "desert island"], [["U+1F3DE"], "🏞", "national park"]]], ["place-building", [[["U+1F3DF"], "🏟", "stadium"], [["U+1F3DB"], "🏛", "classical building"], [["U+1F3D7"], "🏗", "building construction"], [["U+1F9F1"], "🧱", "brick"], [["U+1FAA8"], "🪨", "⊛ rock"], [["U+1FAB5"], "🪵", "⊛ wood"], [["U+1F3D8"], "🏘", "houses"], [["U+1F3DA"], "🏚", "derelict house"], [["U+1F3E0"], "🏠", "house"], [["U+1F3E1"], "🏡", "house with garden"], [["U+1F3E2"], "🏢", "office building"], [["U+1F3E3"], "🏣", "Japanese post office"], [["U+1F3E4"], "🏤", "post office"], [["U+1F3E5"], "🏥", "hospital"], [["U+1F3E6"], "🏦", "bank"], [["U+1F3E8"], "🏨", "hotel"], [["U+1F3E9"], "🏩", "love hotel"], [["U+1F3EA"], "🏪", "convenience store"], [["U+1F3EB"], "🏫", "school"], [["U+1F3EC"], "🏬", "department store"], [["U+1F3ED"], "🏭", "factory"], [["U+1F3EF"], "🏯", "Japanese castle"], [["U+1F3F0"], "🏰", "castle"], [["U+1F492"], "💒", "wedding"], [["U+1F5FC"], "🗼", "Tokyo tower"], [["U+1F5FD"], "🗽", "Statue of Liberty"]]], ["place-religious", [[["U+26EA"], "⛪", "church"], [["U+1F54C"], "🕌", "mosque"], [["U+1F6D5"], "🛕", "hindu temple"], [["U+1F54D"], "🕍", "synagogue"], [["U+26E9"], "⛩", "shinto shrine"], [["U+1F54B"], "🕋", "kaaba"]]], ["place-other", [[["U+26F2"], "⛲", "fountain"], [["U+26FA"], "⛺", "tent"], [["U+1F301"], "🌁", "foggy"], [["U+1F303"], "🌃", "night with stars"], [["U+1F3D9"], "🏙", "cityscape"], [["U+1F304"], "🌄", "sunrise over mountains"], [["U+1F305"], "🌅", "sunrise"], [["U+1F306"], "🌆", "cityscape at dusk"], [["U+1F307"], "🌇", "sunset"], [["U+1F309"], "🌉", "bridge at night"], [["U+2668"], "♨", "hot springs"], [["U+1F3A0"], "🎠", "carousel horse"], [["U+1F3A1"], "🎡", "ferris wheel"], [["U+1F3A2"], "🎢", "roller coaster"], [["U+1F488"], "💈", "barber pole"], [["U+1F3AA"], "🎪", "circus tent"]]], ["transport-ground", [[["U+1F682"], "🚂", "locomotive"], [["U+1F683"], "🚃", "railway car"], [["U+1F684"], "🚄", "high-speed train"], [["U+1F685"], "🚅", "bullet train"], [["U+1F686"], "🚆", "train"], [["U+1F687"], "🚇", "metro"], [["U+1F688"], "🚈", "light rail"], [["U+1F689"], "🚉", "station"], [["U+1F68A"], "🚊", "tram"], [["U+1F69D"], "🚝", "monorail"], [["U+1F69E"], "🚞", "mountain railway"], [["U+1F68B"], "🚋", "tram car"], [["U+1F68C"], "🚌", "bus"], [["U+1F68D"], "🚍", "oncoming bus"], [["U+1F68E"], "🚎", "trolleybus"], [["U+1F690"], "🚐", "minibus"], [["U+1F691"], "🚑", "ambulance"], [["U+1F692"], "🚒", "fire engine"], [["U+1F693"], "🚓", "police car"], [["U+1F694"], "🚔", "oncoming police car"], [["U+1F695"], "🚕", "taxi"], [["U+1F696"], "🚖", "oncoming taxi"], [["U+1F697"], "🚗", "automobile"], [["U+1F698"], "🚘", "oncoming automobile"], [["U+1F699"], "🚙", "sport utility vehicle"], [["U+1F69A"], "🚚", "delivery truck"], [["U+1F69B"], "🚛", "articulated lorry"], [["U+1F69C"], "🚜", "tractor"], [["U+1F3CE"], "🏎", "racing car"], [["U+1F3CD"], "🏍", "motorcycle"], [["U+1F6F5"], "🛵", "motor scooter"], [["U+1F9BD"], "🦽", "manual wheelchair"], [["U+1F9BC"], "🦼", "motorized wheelchair"], [["U+1F6FA"], "🛺", "auto rickshaw"], [["U+1F6B2"], "🚲", "bicycle"], [["U+1F6F4"], "🛴", "kick scooter"], [["U+1F6F9"], "🛹", "skateboard"], [["U+1F6FC"], "🛼", "⊛ roller skate"], [["U+1F68F"], "🚏", "bus stop"], [["U+1F6E3"], "🛣", "motorway"], [["U+1F6E4"], "🛤", "railway track"], [["U+1F6E2"], "🛢", "oil drum"], [["U+26FD"], "⛽", "fuel pump"], [["U+1F6A8"], "🚨", "police car light"], [["U+1F6A5"], "🚥", "horizontal traffic light"], [["U+1F6A6"], "🚦", "vertical traffic light"], [["U+1F6D1"], "🛑", "stop sign"], [["U+1F6A7"], "🚧", "construction"]]], ["transport-water", [[["U+2693"], "⚓", "anchor"], [["U+26F5"], "⛵", "sailboat"], [["U+1F6F6"], "🛶", "canoe"], [["U+1F6A4"], "🚤", "speedboat"], [["U+1F6F3"], "🛳", "passenger ship"], [["U+26F4"], "⛴", "ferry"], [["U+1F6E5"], "🛥", "motor boat"], [["U+1F6A2"], "🚢", "ship"]]], ["transport-air", [[["U+2708"], "✈", "airplane"], [["U+1F6E9"], "🛩", "small airplane"], [["U+1F6EB"], "🛫", "airplane departure"], [["U+1F6EC"], "🛬", "airplane arrival"], [["U+1FA82"], "🪂", "parachute"], [["U+1F4BA"], "💺", "seat"], [["U+1F681"], "🚁", "helicopter"], [["U+1F69F"], "🚟", "suspension railway"], [["U+1F6A0"], "🚠", "mountain cableway"], [["U+1F6A1"], "🚡", "aerial tramway"], [["U+1F6F0"], "🛰", "satellite"], [["U+1F680"], "🚀", "rocket"], [["U+1F6F8"], "🛸", "flying saucer"]]], ["hotel", [[["U+1F6CE"], "🛎", "bellhop bell"], [["U+1F9F3"], "🧳", "luggage"]]], ["time", [[["U+231B"], "⌛", "hourglass done"], [["U+23F3"], "⏳", "hourglass not done"], [["U+231A"], "⌚", "watch"], [["U+23F0"], "⏰", "alarm clock"], [["U+23F1"], "⏱", "stopwatch"], [["U+23F2"], "⏲", "timer clock"], [["U+1F570"], "🕰", "mantelpiece clock"], [["U+1F55B"], "🕛", "twelve o’clock"], [["U+1F567"], "🕧", "twelve-thirty"], [["U+1F550"], "🕐", "one o’clock"], [["U+1F55C"], "🕜", "one-thirty"], [["U+1F551"], "🕑", "two o’clock"], [["U+1F55D"], "🕝", "two-thirty"], [["U+1F552"], "🕒", "three o’clock"], [["U+1F55E"], "🕞", "three-thirty"], [["U+1F553"], "🕓", "four o’clock"], [["U+1F55F"], "🕟", "four-thirty"], [["U+1F554"], "🕔", "five o’clock"], [["U+1F560"], "🕠", "five-thirty"], [["U+1F555"], "🕕", "six o’clock"], [["U+1F561"], "🕡", "six-thirty"], [["U+1F556"], "🕖", "seven o’clock"], [["U+1F562"], "🕢", "seven-thirty"], [["U+1F557"], "🕗", "eight o’clock"], [["U+1F563"], "🕣", "eight-thirty"], [["U+1F558"], "🕘", "nine o’clock"], [["U+1F564"], "🕤", "nine-thirty"], [["U+1F559"], "🕙", "ten o’clock"], [["U+1F565"], "🕥", "ten-thirty"], [["U+1F55A"], "🕚", "eleven o’clock"], [["U+1F566"], "🕦", "eleven-thirty"]]], ["sky & weather", [[["U+1F311"], "🌑", "new moon"], [["U+1F312"], "🌒", "waxing crescent moon"], [["U+1F313"], "🌓", "first quarter moon"], [["U+1F314"], "🌔", "waxing gibbous moon"], [["U+1F315"], "🌕", "full moon"], [["U+1F316"], "🌖", "waning gibbous moon"], [["U+1F317"], "🌗", "last quarter moon"], [["U+1F318"], "🌘", "waning crescent moon"], [["U+1F319"], "🌙", "crescent moon"], [["U+1F31A"], "🌚", "new moon face"], [["U+1F31B"], "🌛", "first quarter moon face"], [["U+1F31C"], "🌜", "last quarter moon face"], [["U+1F321"], "🌡", "thermometer"], [["U+2600"], "☀", "sun"], [["U+1F31D"], "🌝", "full moon face"], [["U+1F31E"], "🌞", "sun with face"], [["U+1FA90"], "🪐", "ringed planet"], [["U+2B50"], "⭐", "star"], [["U+1F31F"], "🌟", "glowing star"], [["U+1F320"], "🌠", "shooting star"], [["U+1F30C"], "🌌", "milky way"], [["U+2601"], "☁", "cloud"], [["U+26C5"], "⛅", "sun behind cloud"], [["U+26C8"], "⛈", "cloud with lightning and rain"], [["U+1F324"], "🌤", "sun behind small cloud"], [["U+1F325"], "🌥", "sun behind large cloud"], [["U+1F326"], "🌦", "sun behind rain cloud"], [["U+1F327"], "🌧", "cloud with rain"], [["U+1F328"], "🌨", "cloud with snow"], [["U+1F329"], "🌩", "cloud with lightning"], [["U+1F32A"], "🌪", "tornado"], [["U+1F32B"], "🌫", "fog"], [["U+1F32C"], "🌬", "wind face"], [["U+1F300"], "🌀", "cyclone"], [["U+1F308"], "🌈", "rainbow"], [["U+1F302"], "🌂", "closed umbrella"], [["U+2602"], "☂", "umbrella"], [["U+2614"], "☔", "umbrella with rain drops"], [["U+26F1"], "⛱", "umbrella on ground"], [["U+26A1"], "⚡", "high voltage"], [["U+2744"], "❄", "snowflake"], [["U+2603"], "☃", "snowman"], [["U+26C4"], "⛄", "snowman without snow"], [["U+2604"], "☄", "comet"], [["U+1F525"], "🔥", "fire"], [["U+1F4A7"], "💧", "droplet"], [["U+1F30A"], "🌊", "water wave"]]]]], ["Activities", [["event", [[["U+1F383"], "🎃", "jack-o-lantern"], [["U+1F384"], "🎄", "Christmas tree"], [["U+1F386"], "🎆", "fireworks"], [["U+1F387"], "🎇", "sparkler"], [["U+1F9E8"], "🧨", "firecracker"], [["U+2728"], "✨", "sparkles"], [["U+1F388"], "🎈", "balloon"], [["U+1F389"], "🎉", "party popper"], [["U+1F38A"], "🎊", "confetti ball"], [["U+1F38B"], "🎋", "tanabata tree"], [["U+1F38D"], "🎍", "pine decoration"], [["U+1F38E"], "🎎", "Japanese dolls"], [["U+1F38F"], "🎏", "carp streamer"], [["U+1F390"], "🎐", "wind chime"], [["U+1F391"], "🎑", "moon viewing ceremony"], [["U+1F9E7"], "🧧", "red envelope"], [["U+1F380"], "🎀", "ribbon"], [["U+1F381"], "🎁", "wrapped gift"], [["U+1F397"], "🎗", "reminder ribbon"], [["U+1F39F"], "🎟", "admission tickets"], [["U+1F3AB"], "🎫", "ticket"]]], ["award-medal", [[["U+1F396"], "🎖", "military medal"], [["U+1F3C6"], "🏆", "trophy"], [["U+1F3C5"], "🏅", "sports medal"], [["U+1F947"], "🥇", "1st place medal"], [["U+1F948"], "🥈", "2nd place medal"], [["U+1F949"], "🥉", "3rd place medal"]]], ["sport", [[["U+26BD"], "⚽", "soccer ball"], [["U+26BE"], "⚾", "baseball"], [["U+1F94E"], "🥎", "softball"], [["U+1F3C0"], "🏀", "basketball"], [["U+1F3D0"], "🏐", "volleyball"], [["U+1F3C8"], "🏈", "american football"], [["U+1F3C9"], "🏉", "rugby football"], [["U+1F3BE"], "🎾", "tennis"], [["U+1F94F"], "🥏", "flying disc"], [["U+1F3B3"], "🎳", "bowling"], [["U+1F3CF"], "🏏", "cricket game"], [["U+1F3D1"], "🏑", "field hockey"], [["U+1F3D2"], "🏒", "ice hockey"], [["U+1F94D"], "🥍", "lacrosse"], [["U+1F3D3"], "🏓", "ping pong"], [["U+1F3F8"], "🏸", "badminton"], [["U+1F94A"], "🥊", "boxing glove"], [["U+1F94B"], "🥋", "martial arts uniform"], [["U+1F945"], "🥅", "goal net"], [["U+26F3"], "⛳", "flag in hole"], [["U+26F8"], "⛸", "ice skate"], [["U+1F3A3"], "🎣", "fishing pole"], [["U+1F93F"], "🤿", "diving mask"], [["U+1F3BD"], "🎽", "running shirt"], [["U+1F3BF"], "🎿", "skis"], [["U+1F6F7"], "🛷", "sled"], [["U+1F94C"], "🥌", "curling stone"]]], ["game", [[["U+1F3AF"], "🎯", "direct hit"], [["U+1FA80"], "🪀", "yo-yo"], [["U+1FA81"], "🪁", "kite"], [["U+1F3B1"], "🎱", "pool 8 ball"], [["U+1F52E"], "🔮", "crystal ball"], [["U+1FA84"], "🪄", "⊛ magic wand"], [["U+1F9FF"], "🧿", "nazar amulet"], [["U+1F3AE"], "🎮", "video game"], [["U+1F579"], "🕹", "joystick"], [["U+1F3B0"], "🎰", "slot machine"], [["U+1F3B2"], "🎲", "game die"], [["U+1F9E9"], "🧩", "puzzle piece"], [["U+1F9F8"], "🧸", "teddy bear"], [["U+1FA85"], "🪅", "⊛ piñata"], [["U+1FA86"], "🪆", "⊛ nesting dolls"], [["U+2660"], "♠", "spade suit"], [["U+2665"], "♥", "heart suit"], [["U+2666"], "♦", "diamond suit"], [["U+2663"], "♣", "club suit"], [["U+265F"], "♟", "chess pawn"], [["U+1F0CF"], "🃏", "joker"], [["U+1F004"], "🀄", "mahjong red dragon"], [["U+1F3B4"], "🎴", "flower playing cards"]]], ["arts & crafts", [[["U+1F3AD"], "🎭", "performing arts"], [["U+1F5BC"], "🖼", "framed picture"], [["U+1F3A8"], "🎨", "artist palette"], [["U+1F9F5"], "🧵", "thread"], [["U+1FAA1"], "🪡", "⊛ sewing needle"], [["U+1F9F6"], "🧶", "yarn"], [["U+1FAA2"], "🪢", "⊛ knot"]]]]], ["Objects", [["clothing", [[["U+1F453"], "👓", "glasses"], [["U+1F576"], "🕶", "sunglasses"], [["U+1F97D"], "🥽", "goggles"], [["U+1F97C"], "🥼", "lab coat"], [["U+1F9BA"], "🦺", "safety vest"], [["U+1F454"], "👔", "necktie"], [["U+1F455"], "👕", "t-shirt"], [["U+1F456"], "👖", "jeans"], [["U+1F9E3"], "🧣", "scarf"], [["U+1F9E4"], "🧤", "gloves"], [["U+1F9E5"], "🧥", "coat"], [["U+1F9E6"], "🧦", "socks"], [["U+1F457"], "👗", "dress"], [["U+1F458"], "👘", "kimono"], [["U+1F97B"], "🥻", "sari"], [["U+1FA71"], "🩱", "one-piece swimsuit"], [["U+1FA72"], "🩲", "briefs"], [["U+1FA73"], "🩳", "shorts"], [["U+1F459"], "👙", "bikini"], [["U+1F45A"], "👚", "woman’s clothes"], [["U+1F45B"], "👛", "purse"], [["U+1F45C"], "👜", "handbag"], [["U+1F45D"], "👝", "clutch bag"], [["U+1F6CD"], "🛍", "shopping bags"], [["U+1F392"], "🎒", "backpack"], [["U+1FA74"], "🩴", "⊛ thong sandal"], [["U+1F45E"], "👞", "man’s shoe"], [["U+1F45F"], "👟", "running shoe"], [["U+1F97E"], "🥾", "hiking boot"], [["U+1F97F"], "🥿", "flat shoe"], [["U+1F460"], "👠", "high-heeled shoe"], [["U+1F461"], "👡", "woman’s sandal"], [["U+1FA70"], "🩰", "ballet shoes"], [["U+1F462"], "👢", "woman’s boot"], [["U+1F451"], "👑", "crown"], [["U+1F452"], "👒", "woman’s hat"], [["U+1F3A9"], "🎩", "top hat"], [["U+1F393"], "🎓", "graduation cap"], [["U+1F9E2"], "🧢", "billed cap"], [["U+1FA96"], "🪖", "⊛ military helmet"], [["U+26D1"], "⛑", "rescue worker’s helmet"], [["U+1F4FF"], "📿", "prayer beads"], [["U+1F484"], "💄", "lipstick"], [["U+1F48D"], "💍", "ring"], [["U+1F48E"], "💎", "gem stone"]]], ["sound", [[["U+1F507"], "🔇", "muted speaker"], [["U+1F508"], "🔈", "speaker low volume"], [["U+1F509"], "🔉", "speaker medium volume"], [["U+1F50A"], "🔊", "speaker high volume"], [["U+1F4E2"], "📢", "loudspeaker"], [["U+1F4E3"], "📣", "megaphone"], [["U+1F4EF"], "📯", "postal horn"], [["U+1F514"], "🔔", "bell"], [["U+1F515"], "🔕", "bell with slash"]]], ["music", [[["U+1F3BC"], "🎼", "musical score"], [["U+1F3B5"], "🎵", "musical note"], [["U+1F3B6"], "🎶", "musical notes"], [["U+1F399"], "🎙", "studio microphone"], [["U+1F39A"], "🎚", "level slider"], [["U+1F39B"], "🎛", "control knobs"], [["U+1F3A4"], "🎤", "microphone"], [["U+1F3A7"], "🎧", "headphone"], [["U+1F4FB"], "📻", "radio"]]], ["musical-instrument", [[["U+1F3B7"], "🎷", "saxophone"], [["U+1FA97"], "🪗", "⊛ accordion"], [["U+1F3B8"], "🎸", "guitar"], [["U+1F3B9"], "🎹", "musical keyboard"], [["U+1F3BA"], "🎺", "trumpet"], [["U+1F3BB"], "🎻", "violin"], [["U+1FA95"], "🪕", "banjo"], [["U+1F941"], "🥁", "drum"], [["U+1FA98"], "🪘", "⊛ long drum"]]], ["phone", [[["U+1F4F1"], "📱", "mobile phone"], [["U+1F4F2"], "📲", "mobile phone with arrow"], [["U+260E"], "☎", "telephone"], [["U+1F4DE"], "📞", "telephone receiver"], [["U+1F4DF"], "📟", "pager"], [["U+1F4E0"], "📠", "fax machine"]]], ["computer", [[["U+1F50B"], "🔋", "battery"], [["U+1F50C"], "🔌", "electric plug"], [["U+1F4BB"], "💻", "laptop"], [["U+1F5A5"], "🖥", "desktop computer"], [["U+1F5A8"], "🖨", "printer"], [["U+2328"], "⌨", "keyboard"], [["U+1F5B1"], "🖱", "computer mouse"], [["U+1F5B2"], "🖲", "trackball"], [["U+1F4BD"], "💽", "computer disk"], [["U+1F4BE"], "💾", "floppy disk"], [["U+1F4BF"], "💿", "optical disk"], [["U+1F4C0"], "📀", "dvd"], [["U+1F9EE"], "🧮", "abacus"]]], ["light & video", [[["U+1F3A5"], "🎥", "movie camera"], [["U+1F39E"], "🎞", "film frames"], [["U+1F4FD"], "📽", "film projector"], [["U+1F3AC"], "🎬", "clapper board"], [["U+1F4FA"], "📺", "television"], [["U+1F4F7"], "📷", "camera"], [["U+1F4F8"], "📸", "camera with flash"], [["U+1F4F9"], "📹", "video camera"], [["U+1F4FC"], "📼", "videocassette"], [["U+1F50D"], "🔍", "magnifying glass tilted left"], [["U+1F50E"], "🔎", "magnifying glass tilted right"], [["U+1F56F"], "🕯", "candle"], [["U+1F4A1"], "💡", "light bulb"], [["U+1F526"], "🔦", "flashlight"], [["U+1F3EE"], "🏮", "red paper lantern"], [["U+1FA94"], "🪔", "diya lamp"]]], ["book-paper", [[["U+1F4D4"], "📔", "notebook with decorative cover"], [["U+1F4D5"], "📕", "closed book"], [["U+1F4D6"], "📖", "open book"], [["U+1F4D7"], "📗", "green book"], [["U+1F4D8"], "📘", "blue book"], [["U+1F4D9"], "📙", "orange book"], [["U+1F4DA"], "📚", "books"], [["U+1F4D3"], "📓", "notebook"], [["U+1F4D2"], "📒", "ledger"], [["U+1F4C3"], "📃", "page with curl"], [["U+1F4DC"], "📜", "scroll"], [["U+1F4C4"], "📄", "page facing up"], [["U+1F4F0"], "📰", "newspaper"], [["U+1F5DE"], "🗞", "rolled-up newspaper"], [["U+1F4D1"], "📑", "bookmark tabs"], [["U+1F516"], "🔖", "bookmark"], [["U+1F3F7"], "🏷", "label"]]], ["money", [[["U+1F4B0"], "💰", "money bag"], [["U+1FA99"], "🪙", "⊛ coin"], [["U+1F4B4"], "💴", "yen banknote"], [["U+1F4B5"], "💵", "dollar banknote"], [["U+1F4B6"], "💶", "euro banknote"], [["U+1F4B7"], "💷", "pound banknote"], [["U+1F4B8"], "💸", "money with wings"], [["U+1F4B3"], "💳", "credit card"], [["U+1F9FE"], "🧾", "receipt"], [["U+1F4B9"], "💹", "chart increasing with yen"]]], ["mail", [[["U+2709"], "✉", "envelope"], [["U+1F4E7"], "📧", "e-mail"], [["U+1F4E8"], "📨", "incoming envelope"], [["U+1F4E9"], "📩", "envelope with arrow"], [["U+1F4E4"], "📤", "outbox tray"], [["U+1F4E5"], "📥", "inbox tray"], [["U+1F4E6"], "📦", "package"], [["U+1F4EB"], "📫", "closed mailbox with raised flag"], [["U+1F4EA"], "📪", "closed mailbox with lowered flag"], [["U+1F4EC"], "📬", "open mailbox with raised flag"], [["U+1F4ED"], "📭", "open mailbox with lowered flag"], [["U+1F4EE"], "📮", "postbox"], [["U+1F5F3"], "🗳", "ballot box with ballot"]]], ["writing", [[["U+270F"], "✏", "pencil"], [["U+2712"], "✒", "black nib"], [["U+1F58B"], "🖋", "fountain pen"], [["U+1F58A"], "🖊", "pen"], [["U+1F58C"], "🖌", "paintbrush"], [["U+1F58D"], "🖍", "crayon"], [["U+1F4DD"], "📝", "memo"]]], ["office", [[["U+1F4BC"], "💼", "briefcase"], [["U+1F4C1"], "📁", "file folder"], [["U+1F4C2"], "📂", "open file folder"], [["U+1F5C2"], "🗂", "card index dividers"], [["U+1F4C5"], "📅", "calendar"], [["U+1F4C6"], "📆", "tear-off calendar"], [["U+1F5D2"], "🗒", "spiral notepad"], [["U+1F5D3"], "🗓", "spiral calendar"], [["U+1F4C7"], "📇", "card index"], [["U+1F4C8"], "📈", "chart increasing"], [["U+1F4C9"], "📉", "chart decreasing"], [["U+1F4CA"], "📊", "bar chart"], [["U+1F4CB"], "📋", "clipboard"], [["U+1F4CC"], "📌", "pushpin"], [["U+1F4CD"], "📍", "round pushpin"], [["U+1F4CE"], "📎", "paperclip"], [["U+1F587"], "🖇", "linked paperclips"], [["U+1F4CF"], "📏", "straight ruler"], [["U+1F4D0"], "📐", "triangular ruler"], [["U+2702"], "✂", "scissors"], [["U+1F5C3"], "🗃", "card file box"], [["U+1F5C4"], "🗄", "file cabinet"], [["U+1F5D1"], "🗑", "wastebasket"]]], ["lock", [[["U+1F512"], "🔒", "locked"], [["U+1F513"], "🔓", "unlocked"], [["U+1F50F"], "🔏", "locked with pen"], [["U+1F510"], "🔐", "locked with key"], [["U+1F511"], "🔑", "key"], [["U+1F5DD"], "🗝", "old key"]]], ["tool", [[["U+1F528"], "🔨", "hammer"], [["U+1FA93"], "🪓", "axe"], [["U+26CF"], "⛏", "pick"], [["U+2692"], "⚒", "hammer and pick"], [["U+1F6E0"], "🛠", "hammer and wrench"], [["U+1F5E1"], "🗡", "dagger"], [["U+2694"], "⚔", "crossed swords"], [["U+1F52B"], "🔫", "pistol"], [["U+1FA83"], "🪃", "⊛ boomerang"], [["U+1F3F9"], "🏹", "bow and arrow"], [["U+1F6E1"], "🛡", "shield"], [["U+1F527"], "🔧", "wrench"], [["U+1FA9B"], "🪛", "⊛ screwdriver"], [["U+1F529"], "🔩", "nut and bolt"], [["U+2699"], "⚙", "gear"], [["U+1F5DC"], "🗜", "clamp"], [["U+2696"], "⚖", "balance scale"], [["U+1F9AF"], "🦯", "white cane"], [["U+1F517"], "🔗", "link"], [["U+26D3"], "⛓", "chains"], [["U+1FA9D"], "🪝", "⊛ hook"], [["U+1F9F0"], "🧰", "toolbox"], [["U+1F9F2"], "🧲", "magnet"], [["U+1FA9C"], "🪜", "⊛ ladder"]]], ["science", [[["U+2697"], "⚗", "alembic"], [["U+1F9EA"], "🧪", "test tube"], [["U+1F9EB"], "🧫", "petri dish"], [["U+1F9EC"], "🧬", "dna"], [["U+1F52C"], "🔬", "microscope"], [["U+1F52D"], "🔭", "telescope"], [["U+1F4E1"], "📡", "satellite antenna"]]], ["medical", [[["U+1F489"], "💉", "syringe"], [["U+1FA78"], "🩸", "drop of blood"], [["U+1F48A"], "💊", "pill"], [["U+1FA79"], "🩹", "adhesive bandage"], [["U+1FA7A"], "🩺", "stethoscope"]]], ["household", [[["U+1F6AA"], "🚪", "door"], [["U+1F6D7"], "🛗", "⊛ elevator"], [["U+1F6CF"], "🛏", "bed"], [["U+1F6CB"], "🛋", "couch and lamp"], [["U+1FA91"], "🪑", "chair"], [["U+1F6BD"], "🚽", "toilet"], [["U+1FAA0"], "🪠", "⊛ plunger"], [["U+1F6BF"], "🚿", "shower"], [["U+1F6C1"], "🛁", "bathtub"], [["U+1FA92"], "🪒", "razor"], [["U+1F9F4"], "🧴", "lotion bottle"], [["U+1F9F7"], "🧷", "safety pin"], [["U+1F9F9"], "🧹", "broom"], [["U+1F9FA"], "🧺", "basket"], [["U+1F9FB"], "🧻", "roll of paper"], [["U+1FAA3"], "🪣", "⊛ bucket"], [["U+1F9FC"], "🧼", "soap"], [["U+1FAA5"], "🪥", "⊛ toothbrush"], [["U+1F9FD"], "🧽", "sponge"], [["U+1F9EF"], "🧯", "fire extinguisher"], [["U+1F6D2"], "🛒", "shopping cart"]]], ["other-object", [[["U+1F6AC"], "🚬", "cigarette"], [["U+26B0"], "⚰", "coffin"], [["U+26B1"], "⚱", "funeral urn"], [["U+1F5FF"], "🗿", "moai"], [["U+1FAA7"], "🪧", "⊛ placard"]]]]], ["Symbols", [["transport-sign", [[["U+1F3E7"], "🏧", "ATM sign"], [["U+1F6AE"], "🚮", "litter in bin sign"], [["U+1F6B0"], "🚰", "potable water"], [["U+267F"], "♿", "wheelchair symbol"], [["U+1F6B9"], "🚹", "men’s room"], [["U+1F6BA"], "🚺", "women’s room"], [["U+1F6BB"], "🚻", "restroom"], [["U+1F6BC"], "🚼", "baby symbol"], [["U+1F6BE"], "🚾", "water closet"], [["U+1F6C2"], "🛂", "passport control"], [["U+1F6C3"], "🛃", "customs"], [["U+1F6C4"], "🛄", "baggage claim"], [["U+1F6C5"], "🛅", "left luggage"]]], ["warning", [[["U+26A0"], "⚠", "warning"], [["U+1F6B8"], "🚸", "children crossing"], [["U+26D4"], "⛔", "no entry"], [["U+1F6AB"], "🚫", "prohibited"], [["U+1F6B3"], "🚳", "no bicycles"], [["U+1F6AD"], "🚭", "no smoking"], [["U+1F6AF"], "🚯", "no littering"], [["U+1F6B1"], "🚱", "non-potable water"], [["U+1F6B7"], "🚷", "no pedestrians"], [["U+1F4F5"], "📵", "no mobile phones"], [["U+1F51E"], "🔞", "no one under eighteen"], [["U+2622"], "☢", "radioactive"], [["U+2623"], "☣", "biohazard"]]], ["arrow", [[["U+2B06"], "⬆", "up arrow"], [["U+2197"], "↗", "up-right arrow"], [["U+27A1"], "➡", "right arrow"], [["U+2198"], "↘", "down-right arrow"], [["U+2B07"], "⬇", "down arrow"], [["U+2199"], "↙", "down-left arrow"], [["U+2B05"], "⬅", "left arrow"], [["U+2196"], "↖", "up-left arrow"], [["U+2195"], "↕", "up-down arrow"], [["U+2194"], "↔", "left-right arrow"], [["U+21A9"], "↩", "right arrow curving left"], [["U+21AA"], "↪", "left arrow curving right"], [["U+2934"], "⤴", "right arrow curving up"], [["U+2935"], "⤵", "right arrow curving down"], [["U+1F503"], "🔃", "clockwise vertical arrows"], [["U+1F504"], "🔄", "counterclockwise arrows button"], [["U+1F519"], "🔙", "BACK arrow"], [["U+1F51A"], "🔚", "END arrow"], [["U+1F51B"], "🔛", "ON! arrow"], [["U+1F51C"], "🔜", "SOON arrow"], [["U+1F51D"], "🔝", "TOP arrow"]]], ["religion", [[["U+1F6D0"], "🛐", "place of worship"], [["U+269B"], "⚛", "atom symbol"], [["U+1F549"], "🕉", "om"], [["U+2721"], "✡", "star of David"], [["U+2638"], "☸", "wheel of dharma"], [["U+262F"], "☯", "yin yang"], [["U+271D"], "✝", "latin cross"], [["U+2626"], "☦", "orthodox cross"], [["U+262A"], "☪", "star and crescent"], [["U+262E"], "☮", "peace symbol"], [["U+1F54E"], "🕎", "menorah"], [["U+1F52F"], "🔯", "dotted six-pointed star"]]], ["zodiac", [[["U+2648"], "♈", "Aries"], [["U+2649"], "♉", "Taurus"], [["U+264A"], "♊", "Gemini"], [["U+264B"], "♋", "Cancer"], [["U+264C"], "♌", "Leo"], [["U+264D"], "♍", "Virgo"], [["U+264E"], "♎", "Libra"], [["U+264F"], "♏", "Scorpio"], [["U+2650"], "♐", "Sagittarius"], [["U+2651"], "♑", "Capricorn"], [["U+2652"], "♒", "Aquarius"], [["U+2653"], "♓", "Pisces"], [["U+26CE"], "⛎", "Ophiuchus"]]], ["av-symbol", [[["U+1F500"], "🔀", "shuffle tracks button"], [["U+1F501"], "🔁", "repeat button"], [["U+1F502"], "🔂", "repeat single button"], [["U+25B6"], "▶", "play button"], [["U+23E9"], "⏩", "fast-forward button"], [["U+23ED"], "⏭", "next track button"], [["U+23EF"], "⏯", "play or pause button"], [["U+25C0"], "◀", "reverse button"], [["U+23EA"], "⏪", "fast reverse button"], [["U+23EE"], "⏮", "last track button"], [["U+1F53C"], "🔼", "upwards button"], [["U+23EB"], "⏫", "fast up button"], [["U+1F53D"], "🔽", "downwards button"], [["U+23EC"], "⏬", "fast down button"], [["U+23F8"], "⏸", "pause button"], [["U+23F9"], "⏹", "stop button"], [["U+23FA"], "⏺", "record button"], [["U+23CF"], "⏏", "eject button"], [["U+1F3A6"], "🎦", "cinema"], [["U+1F505"], "🔅", "dim button"], [["U+1F506"], "🔆", "bright button"], [["U+1F4F6"], "📶", "antenna bars"], [["U+1F4F3"], "📳", "vibration mode"], [["U+1F4F4"], "📴", "mobile phone off"]]], ["gender", [[["U+2640"], "♀", "female sign"], [["U+2642"], "♂", "male sign"], [["U+26A7"], "⚧", "⊛ transgender symbol"]]], ["math", [[["U+2716"], "✖", "multiply"], [["U+2795"], "➕", "plus"], [["U+2796"], "➖", "minus"], [["U+2797"], "➗", "divide"], [["U+267E"], "♾", "infinity"]]], ["punctuation", [[["U+203C"], "‼", "double exclamation mark"], [["U+2049"], "⁉", "exclamation question mark"], [["U+2753"], "❓", "question mark"], [["U+2754"], "❔", "white question mark"], [["U+2755"], "❕", "white exclamation mark"], [["U+2757"], "❗", "exclamation mark"], [["U+3030"], "〰", "wavy dash"]]], ["currency", [[["U+1F4B1"], "💱", "currency exchange"], [["U+1F4B2"], "💲", "heavy dollar sign"]]], ["other-symbol", [[["U+2695"], "⚕", "medical symbol"], [["U+267B"], "♻", "recycling symbol"], [["U+269C"], "⚜", "fleur-de-lis"], [["U+1F531"], "🔱", "trident emblem"], [["U+1F4DB"], "📛", "name badge"], [["U+1F530"], "🔰", "Japanese symbol for beginner"], [["U+2B55"], "⭕", "hollow red circle"], [["U+2705"], "✅", "check mark button"], [["U+2611"], "☑", "check box with check"], [["U+2714"], "✔", "check mark"], [["U+274C"], "❌", "cross mark"], [["U+274E"], "❎", "cross mark button"], [["U+27B0"], "➰", "curly loop"], [["U+27BF"], "➿", "double curly loop"], [["U+303D"], "〽", "part alternation mark"], [["U+2733"], "✳", "eight-spoked asterisk"], [["U+2734"], "✴", "eight-pointed star"], [["U+2747"], "❇", "sparkle"], [["U+00A9"], "©", "copyright"], [["U+00AE"], "®", "registered"], [["U+2122"], "™", "trade mark"]]], ["keycap", [[["U+0023", "U+FE0F", "U+20E3"], "#️⃣", "keycap: #"], [["U+002A", "U+FE0F", "U+20E3"], "*️⃣", "keycap: *"], [["U+0030", "U+FE0F", "U+20E3"], "0️⃣", "keycap: 0"], [["U+0031", "U+FE0F", "U+20E3"], "1️⃣", "keycap: 1"], [["U+0032", "U+FE0F", "U+20E3"], "2️⃣", "keycap: 2"], [["U+0033", "U+FE0F", "U+20E3"], "3️⃣", "keycap: 3"], [["U+0034", "U+FE0F", "U+20E3"], "4️⃣", "keycap: 4"], [["U+0035", "U+FE0F", "U+20E3"], "5️⃣", "keycap: 5"], [["U+0036", "U+FE0F", "U+20E3"], "6️⃣", "keycap: 6"], [["U+0037", "U+FE0F", "U+20E3"], "7️⃣", "keycap: 7"], [["U+0038", "U+FE0F", "U+20E3"], "8️⃣", "keycap: 8"], [["U+0039", "U+FE0F", "U+20E3"], "9️⃣", "keycap: 9"], [["U+1F51F"], "🔟", "keycap: 10"]]], ["alphanum", [[["U+1F520"], "🔠", "input latin uppercase"], [["U+1F521"], "🔡", "input latin lowercase"], [["U+1F522"], "🔢", "input numbers"], [["U+1F523"], "🔣", "input symbols"], [["U+1F524"], "🔤", "input latin letters"], [["U+1F170"], "🅰", "A button (blood type)"], [["U+1F18E"], "🆎", "AB button (blood type)"], [["U+1F171"], "🅱", "B button (blood type)"], [["U+1F191"], "🆑", "CL button"], [["U+1F192"], "🆒", "COOL button"], [["U+1F193"], "🆓", "FREE button"], [["U+2139"], "ℹ", "information"], [["U+1F194"], "🆔", "ID button"], [["U+24C2"], "Ⓜ", "circled M"], [["U+1F195"], "🆕", "NEW button"], [["U+1F196"], "🆖", "NG button"], [["U+1F17E"], "🅾", "O button (blood type)"], [["U+1F197"], "🆗", "OK button"], [["U+1F17F"], "🅿", "P button"], [["U+1F198"], "🆘", "SOS button"], [["U+1F199"], "🆙", "UP! button"], [["U+1F19A"], "🆚", "VS button"], [["U+1F201"], "🈁", "Japanese “here” button"], [["U+1F202"], "🈂", "Japanese “service charge” button"], [["U+1F237"], "🈷", "Japanese “monthly amount” button"], [["U+1F236"], "🈶", "Japanese “not free of charge” button"], [["U+1F22F"], "🈯", "Japanese “reserved” button"], [["U+1F250"], "🉐", "Japanese “bargain” button"], [["U+1F239"], "🈹", "Japanese “discount” button"], [["U+1F21A"], "🈚", "Japanese “free of charge” button"], [["U+1F232"], "🈲", "Japanese “prohibited” button"], [["U+1F251"], "🉑", "Japanese “acceptable” button"], [["U+1F238"], "🈸", "Japanese “application” button"], [["U+1F234"], "🈴", "Japanese “passing grade” button"], [["U+1F233"], "🈳", "Japanese “vacancy” button"], [["U+3297"], "㊗", "Japanese “congratulations” button"], [["U+3299"], "㊙", "Japanese “secret” button"], [["U+1F23A"], "🈺", "Japanese “open for business” button"], [["U+1F235"], "🈵", "Japanese “no vacancy” button"]]], ["geometric", [[["U+1F534"], "🔴", "red circle"], [["U+1F7E0"], "🟠", "orange circle"], [["U+1F7E1"], "🟡", "yellow circle"], [["U+1F7E2"], "🟢", "green circle"], [["U+1F535"], "🔵", "blue circle"], [["U+1F7E3"], "🟣", "purple circle"], [["U+1F7E4"], "🟤", "brown circle"], [["U+26AB"], "⚫", "black circle"], [["U+26AA"], "⚪", "white circle"], [["U+1F7E5"], "🟥", "red square"], [["U+1F7E7"], "🟧", "orange square"], [["U+1F7E8"], "🟨", "yellow square"], [["U+1F7E9"], "🟩", "green square"], [["U+1F7E6"], "🟦", "blue square"], [["U+1F7EA"], "🟪", "purple square"], [["U+1F7EB"], "🟫", "brown square"], [["U+2B1B"], "⬛", "black large square"], [["U+2B1C"], "⬜", "white large square"], [["U+25FC"], "◼", "black medium square"], [["U+25FB"], "◻", "white medium square"], [["U+25FE"], "◾", "black medium-small square"], [["U+25FD"], "◽", "white medium-small square"], [["U+25AA"], "▪", "black small square"], [["U+25AB"], "▫", "white small square"], [["U+1F536"], "🔶", "large orange diamond"], [["U+1F537"], "🔷", "large blue diamond"], [["U+1F538"], "🔸", "small orange diamond"], [["U+1F539"], "🔹", "small blue diamond"], [["U+1F53A"], "🔺", "red triangle pointed up"], [["U+1F53B"], "🔻", "red triangle pointed down"], [["U+1F4A0"], "💠", "diamond with a dot"], [["U+1F518"], "🔘", "radio button"], [["U+1F533"], "🔳", "white square button"], [["U+1F532"], "🔲", "black square button"]]]]], ["Flags", [["flag", [[["U+1F3C1"], "🏁", "chequered flag"], [["U+1F6A9"], "🚩", "triangular flag"], [["U+1F38C"], "🎌", "crossed flags"], [["U+1F3F4"], "🏴", "black flag"], [["U+1F3F3"], "🏳", "white flag"], [["U+1F3F3", "U+FE0F", "U+200D", "U+1F308"], "🏳️‍🌈", "rainbow flag"], [["U+1F3F3", "U+FE0F", "U+200D", "U+26A7", "U+FE0F"], "🏳️‍⚧️", "⊛ transgender flag"], [["U+1F3F4", "U+200D", "U+2620", "U+FE0F"], "🏴‍☠️", "pirate flag"]]], ["country-flag", [[["U+1F1E6", "U+1F1E8"], "🇦🇨", "flag: Ascension Island"], [["U+1F1E6", "U+1F1E9"], "🇦🇩", "flag: Andorra"], [["U+1F1E6", "U+1F1EA"], "🇦🇪", "flag: United Arab Emirates"], [["U+1F1E6", "U+1F1EB"], "🇦🇫", "flag: Afghanistan"], [["U+1F1E6", "U+1F1EC"], "🇦🇬", "flag: Antigua & Barbuda"], [["U+1F1E6", "U+1F1EE"], "🇦🇮", "flag: Anguilla"], [["U+1F1E6", "U+1F1F1"], "🇦🇱", "flag: Albania"], [["U+1F1E6", "U+1F1F2"], "🇦🇲", "flag: Armenia"], [["U+1F1E6", "U+1F1F4"], "🇦🇴", "flag: Angola"], [["U+1F1E6", "U+1F1F6"], "🇦🇶", "flag: Antarctica"], [["U+1F1E6", "U+1F1F7"], "🇦🇷", "flag: Argentina"], [["U+1F1E6", "U+1F1F8"], "🇦🇸", "flag: American Samoa"], [["U+1F1E6", "U+1F1F9"], "🇦🇹", "flag: Austria"], [["U+1F1E6", "U+1F1FA"], "🇦🇺", "flag: Australia"], [["U+1F1E6", "U+1F1FC"], "🇦🇼", "flag: Aruba"], [["U+1F1E6", "U+1F1FD"], "🇦🇽", "flag: Åland Islands"], [["U+1F1E6", "U+1F1FF"], "🇦🇿", "flag: Azerbaijan"], [["U+1F1E7", "U+1F1E6"], "🇧🇦", "flag: Bosnia & Herzegovina"], [["U+1F1E7", "U+1F1E7"], "🇧🇧", "flag: Barbados"], [["U+1F1E7", "U+1F1E9"], "🇧🇩", "flag: Bangladesh"], [["U+1F1E7", "U+1F1EA"], "🇧🇪", "flag: Belgium"], [["U+1F1E7", "U+1F1EB"], "🇧🇫", "flag: Burkina Faso"], [["U+1F1E7", "U+1F1EC"], "🇧🇬", "flag: Bulgaria"], [["U+1F1E7", "U+1F1ED"], "🇧🇭", "flag: Bahrain"], [["U+1F1E7", "U+1F1EE"], "🇧🇮", "flag: Burundi"], [["U+1F1E7", "U+1F1EF"], "🇧🇯", "flag: Benin"], [["U+1F1E7", "U+1F1F1"], "🇧🇱", "flag: St. Barthélemy"], [["U+1F1E7", "U+1F1F2"], "🇧🇲", "flag: Bermuda"], [["U+1F1E7", "U+1F1F3"], "🇧🇳", "flag: Brunei"], [["U+1F1E7", "U+1F1F4"], "🇧🇴", "flag: Bolivia"], [["U+1F1E7", "U+1F1F6"], "🇧🇶", "flag: Caribbean Netherlands"], [["U+1F1E7", "U+1F1F7"], "🇧🇷", "flag: Brazil"], [["U+1F1E7", "U+1F1F8"], "🇧🇸", "flag: Bahamas"], [["U+1F1E7", "U+1F1F9"], "🇧🇹", "flag: Bhutan"], [["U+1F1E7", "U+1F1FB"], "🇧🇻", "flag: Bouvet Island"], [["U+1F1E7", "U+1F1FC"], "🇧🇼", "flag: Botswana"], [["U+1F1E7", "U+1F1FE"], "🇧🇾", "flag: Belarus"], [["U+1F1E7", "U+1F1FF"], "🇧🇿", "flag: Belize"], [["U+1F1E8", "U+1F1E6"], "🇨🇦", "flag: Canada"], [["U+1F1E8", "U+1F1E8"], "🇨🇨", "flag: Cocos (Keeling) Islands"], [["U+1F1E8", "U+1F1E9"], "🇨🇩", "flag: Congo - Kinshasa"], [["U+1F1E8", "U+1F1EB"], "🇨🇫", "flag: Central African Republic"], [["U+1F1E8", "U+1F1EC"], "🇨🇬", "flag: Congo - Brazzaville"], [["U+1F1E8", "U+1F1ED"], "🇨🇭", "flag: Switzerland"], [["U+1F1E8", "U+1F1EE"], "🇨🇮", "flag: Côte d’Ivoire"], [["U+1F1E8", "U+1F1F0"], "🇨🇰", "flag: Cook Islands"], [["U+1F1E8", "U+1F1F1"], "🇨🇱", "flag: Chile"], [["U+1F1E8", "U+1F1F2"], "🇨🇲", "flag: Cameroon"], [["U+1F1E8", "U+1F1F3"], "🇨🇳", "flag: China"], [["U+1F1E8", "U+1F1F4"], "🇨🇴", "flag: Colombia"], [["U+1F1E8", "U+1F1F5"], "🇨🇵", "flag: Clipperton Island"], [["U+1F1E8", "U+1F1F7"], "🇨🇷", "flag: Costa Rica"], [["U+1F1E8", "U+1F1FA"], "🇨🇺", "flag: Cuba"], [["U+1F1E8", "U+1F1FB"], "🇨🇻", "flag: Cape Verde"], [["U+1F1E8", "U+1F1FC"], "🇨🇼", "flag: Curaçao"], [["U+1F1E8", "U+1F1FD"], "🇨🇽", "flag: Christmas Island"], [["U+1F1E8", "U+1F1FE"], "🇨🇾", "flag: Cyprus"], [["U+1F1E8", "U+1F1FF"], "🇨🇿", "flag: Czechia"], [["U+1F1E9", "U+1F1EA"], "🇩🇪", "flag: Germany"], [["U+1F1E9", "U+1F1EC"], "🇩🇬", "flag: Diego Garcia"], [["U+1F1E9", "U+1F1EF"], "🇩🇯", "flag: Djibouti"], [["U+1F1E9", "U+1F1F0"], "🇩🇰", "flag: Denmark"], [["U+1F1E9", "U+1F1F2"], "🇩🇲", "flag: Dominica"], [["U+1F1E9", "U+1F1F4"], "🇩🇴", "flag: Dominican Republic"], [["U+1F1E9", "U+1F1FF"], "🇩🇿", "flag: Algeria"], [["U+1F1EA", "U+1F1E6"], "🇪🇦", "flag: Ceuta & Melilla"], [["U+1F1EA", "U+1F1E8"], "🇪🇨", "flag: Ecuador"], [["U+1F1EA", "U+1F1EA"], "🇪🇪", "flag: Estonia"], [["U+1F1EA", "U+1F1EC"], "🇪🇬", "flag: Egypt"], [["U+1F1EA", "U+1F1ED"], "🇪🇭", "flag: Western Sahara"], [["U+1F1EA", "U+1F1F7"], "🇪🇷", "flag: Eritrea"], [["U+1F1EA", "U+1F1F8"], "🇪🇸", "flag: Spain"], [["U+1F1EA", "U+1F1F9"], "🇪🇹", "flag: Ethiopia"], [["U+1F1EA", "U+1F1FA"], "🇪🇺", "flag: European Union"], [["U+1F1EB", "U+1F1EE"], "🇫🇮", "flag: Finland"], [["U+1F1EB", "U+1F1EF"], "🇫🇯", "flag: Fiji"], [["U+1F1EB", "U+1F1F0"], "🇫🇰", "flag: Falkland Islands"], [["U+1F1EB", "U+1F1F2"], "🇫🇲", "flag: Micronesia"], [["U+1F1EB", "U+1F1F4"], "🇫🇴", "flag: Faroe Islands"], [["U+1F1EB", "U+1F1F7"], "🇫🇷", "flag: France"], [["U+1F1EC", "U+1F1E6"], "🇬🇦", "flag: Gabon"], [["U+1F1EC", "U+1F1E7"], "🇬🇧", "flag: United Kingdom"], [["U+1F1EC", "U+1F1E9"], "🇬🇩", "flag: Grenada"], [["U+1F1EC", "U+1F1EA"], "🇬🇪", "flag: Georgia"], [["U+1F1EC", "U+1F1EB"], "🇬🇫", "flag: French Guiana"], [["U+1F1EC", "U+1F1EC"], "🇬🇬", "flag: Guernsey"], [["U+1F1EC", "U+1F1ED"], "🇬🇭", "flag: Ghana"], [["U+1F1EC", "U+1F1EE"], "🇬🇮", "flag: Gibraltar"], [["U+1F1EC", "U+1F1F1"], "🇬🇱", "flag: Greenland"], [["U+1F1EC", "U+1F1F2"], "🇬🇲", "flag: Gambia"], [["U+1F1EC", "U+1F1F3"], "🇬🇳", "flag: Guinea"], [["U+1F1EC", "U+1F1F5"], "🇬🇵", "flag: Guadeloupe"], [["U+1F1EC", "U+1F1F6"], "🇬🇶", "flag: Equatorial Guinea"], [["U+1F1EC", "U+1F1F7"], "🇬🇷", "flag: Greece"], [["U+1F1EC", "U+1F1F8"], "🇬🇸", "flag: South Georgia & South Sandwich Islands"], [["U+1F1EC", "U+1F1F9"], "🇬🇹", "flag: Guatemala"], [["U+1F1EC", "U+1F1FA"], "🇬🇺", "flag: Guam"], [["U+1F1EC", "U+1F1FC"], "🇬🇼", "flag: Guinea-Bissau"], [["U+1F1EC", "U+1F1FE"], "🇬🇾", "flag: Guyana"], [["U+1F1ED", "U+1F1F0"], "🇭🇰", "flag: Hong Kong SAR China"], [["U+1F1ED", "U+1F1F2"], "🇭🇲", "flag: Heard & McDonald Islands"], [["U+1F1ED", "U+1F1F3"], "🇭🇳", "flag: Honduras"], [["U+1F1ED", "U+1F1F7"], "🇭🇷", "flag: Croatia"], [["U+1F1ED", "U+1F1F9"], "🇭🇹", "flag: Haiti"], [["U+1F1ED", "U+1F1FA"], "🇭🇺", "flag: Hungary"], [["U+1F1EE", "U+1F1E8"], "🇮🇨", "flag: Canary Islands"], [["U+1F1EE", "U+1F1E9"], "🇮🇩", "flag: Indonesia"], [["U+1F1EE", "U+1F1EA"], "🇮🇪", "flag: Ireland"], [["U+1F1EE", "U+1F1F1"], "🇮🇱", "flag: Israel"], [["U+1F1EE", "U+1F1F2"], "🇮🇲", "flag: Isle of Man"], [["U+1F1EE", "U+1F1F3"], "🇮🇳", "flag: India"], [["U+1F1EE", "U+1F1F4"], "🇮🇴", "flag: British Indian Ocean Territory"], [["U+1F1EE", "U+1F1F6"], "🇮🇶", "flag: Iraq"], [["U+1F1EE", "U+1F1F7"], "🇮🇷", "flag: Iran"], [["U+1F1EE", "U+1F1F8"], "🇮🇸", "flag: Iceland"], [["U+1F1EE", "U+1F1F9"], "🇮🇹", "flag: Italy"], [["U+1F1EF", "U+1F1EA"], "🇯🇪", "flag: Jersey"], [["U+1F1EF", "U+1F1F2"], "🇯🇲", "flag: Jamaica"], [["U+1F1EF", "U+1F1F4"], "🇯🇴", "flag: Jordan"], [["U+1F1EF", "U+1F1F5"], "🇯🇵", "flag: Japan"], [["U+1F1F0", "U+1F1EA"], "🇰🇪", "flag: Kenya"], [["U+1F1F0", "U+1F1EC"], "🇰🇬", "flag: Kyrgyzstan"], [["U+1F1F0", "U+1F1ED"], "🇰🇭", "flag: Cambodia"], [["U+1F1F0", "U+1F1EE"], "🇰🇮", "flag: Kiribati"], [["U+1F1F0", "U+1F1F2"], "🇰🇲", "flag: Comoros"], [["U+1F1F0", "U+1F1F3"], "🇰🇳", "flag: St. Kitts & Nevis"], [["U+1F1F0", "U+1F1F5"], "🇰🇵", "flag: North Korea"], [["U+1F1F0", "U+1F1F7"], "🇰🇷", "flag: South Korea"], [["U+1F1F0", "U+1F1FC"], "🇰🇼", "flag: Kuwait"], [["U+1F1F0", "U+1F1FE"], "🇰🇾", "flag: Cayman Islands"], [["U+1F1F0", "U+1F1FF"], "🇰🇿", "flag: Kazakhstan"], [["U+1F1F1", "U+1F1E6"], "🇱🇦", "flag: Laos"], [["U+1F1F1", "U+1F1E7"], "🇱🇧", "flag: Lebanon"], [["U+1F1F1", "U+1F1E8"], "🇱🇨", "flag: St. Lucia"], [["U+1F1F1", "U+1F1EE"], "🇱🇮", "flag: Liechtenstein"], [["U+1F1F1", "U+1F1F0"], "🇱🇰", "flag: Sri Lanka"], [["U+1F1F1", "U+1F1F7"], "🇱🇷", "flag: Liberia"], [["U+1F1F1", "U+1F1F8"], "🇱🇸", "flag: Lesotho"], [["U+1F1F1", "U+1F1F9"], "🇱🇹", "flag: Lithuania"], [["U+1F1F1", "U+1F1FA"], "🇱🇺", "flag: Luxembourg"], [["U+1F1F1", "U+1F1FB"], "🇱🇻", "flag: Latvia"], [["U+1F1F1", "U+1F1FE"], "🇱🇾", "flag: Libya"], [["U+1F1F2", "U+1F1E6"], "🇲🇦", "flag: Morocco"], [["U+1F1F2", "U+1F1E8"], "🇲🇨", "flag: Monaco"], [["U+1F1F2", "U+1F1E9"], "🇲🇩", "flag: Moldova"], [["U+1F1F2", "U+1F1EA"], "🇲🇪", "flag: Montenegro"], [["U+1F1F2", "U+1F1EB"], "🇲🇫", "flag: St. Martin"], [["U+1F1F2", "U+1F1EC"], "🇲🇬", "flag: Madagascar"], [["U+1F1F2", "U+1F1ED"], "🇲🇭", "flag: Marshall Islands"], [["U+1F1F2", "U+1F1F0"], "🇲🇰", "flag: North Macedonia"], [["U+1F1F2", "U+1F1F1"], "🇲🇱", "flag: Mali"], [["U+1F1F2", "U+1F1F2"], "🇲🇲", "flag: Myanmar (Burma)"], [["U+1F1F2", "U+1F1F3"], "🇲🇳", "flag: Mongolia"], [["U+1F1F2", "U+1F1F4"], "🇲🇴", "flag: Macao SAR China"], [["U+1F1F2", "U+1F1F5"], "🇲🇵", "flag: Northern Mariana Islands"], [["U+1F1F2", "U+1F1F6"], "🇲🇶", "flag: Martinique"], [["U+1F1F2", "U+1F1F7"], "🇲🇷", "flag: Mauritania"], [["U+1F1F2", "U+1F1F8"], "🇲🇸", "flag: Montserrat"], [["U+1F1F2", "U+1F1F9"], "🇲🇹", "flag: Malta"], [["U+1F1F2", "U+1F1FA"], "🇲🇺", "flag: Mauritius"], [["U+1F1F2", "U+1F1FB"], "🇲🇻", "flag: Maldives"], [["U+1F1F2", "U+1F1FC"], "🇲🇼", "flag: Malawi"], [["U+1F1F2", "U+1F1FD"], "🇲🇽", "flag: Mexico"], [["U+1F1F2", "U+1F1FE"], "🇲🇾", "flag: Malaysia"], [["U+1F1F2", "U+1F1FF"], "🇲🇿", "flag: Mozambique"], [["U+1F1F3", "U+1F1E6"], "🇳🇦", "flag: Namibia"], [["U+1F1F3", "U+1F1E8"], "🇳🇨", "flag: New Caledonia"], [["U+1F1F3", "U+1F1EA"], "🇳🇪", "flag: Niger"], [["U+1F1F3", "U+1F1EB"], "🇳🇫", "flag: Norfolk Island"], [["U+1F1F3", "U+1F1EC"], "🇳🇬", "flag: Nigeria"], [["U+1F1F3", "U+1F1EE"], "🇳🇮", "flag: Nicaragua"], [["U+1F1F3", "U+1F1F1"], "🇳🇱", "flag: Netherlands"], [["U+1F1F3", "U+1F1F4"], "🇳🇴", "flag: Norway"], [["U+1F1F3", "U+1F1F5"], "🇳🇵", "flag: Nepal"], [["U+1F1F3", "U+1F1F7"], "🇳🇷", "flag: Nauru"], [["U+1F1F3", "U+1F1FA"], "🇳🇺", "flag: Niue"], [["U+1F1F3", "U+1F1FF"], "🇳🇿", "flag: New Zealand"], [["U+1F1F4", "U+1F1F2"], "🇴🇲", "flag: Oman"], [["U+1F1F5", "U+1F1E6"], "🇵🇦", "flag: Panama"], [["U+1F1F5", "U+1F1EA"], "🇵🇪", "flag: Peru"], [["U+1F1F5", "U+1F1EB"], "🇵🇫", "flag: French Polynesia"], [["U+1F1F5", "U+1F1EC"], "🇵🇬", "flag: Papua New Guinea"], [["U+1F1F5", "U+1F1ED"], "🇵🇭", "flag: Philippines"], [["U+1F1F5", "U+1F1F0"], "🇵🇰", "flag: Pakistan"], [["U+1F1F5", "U+1F1F1"], "🇵🇱", "flag: Poland"], [["U+1F1F5", "U+1F1F2"], "🇵🇲", "flag: St. Pierre & Miquelon"], [["U+1F1F5", "U+1F1F3"], "🇵🇳", "flag: Pitcairn Islands"], [["U+1F1F5", "U+1F1F7"], "🇵🇷", "flag: Puerto Rico"], [["U+1F1F5", "U+1F1F8"], "🇵🇸", "flag: Palestinian Territories"], [["U+1F1F5", "U+1F1F9"], "🇵🇹", "flag: Portugal"], [["U+1F1F5", "U+1F1FC"], "🇵🇼", "flag: Palau"], [["U+1F1F5", "U+1F1FE"], "🇵🇾", "flag: Paraguay"], [["U+1F1F6", "U+1F1E6"], "🇶🇦", "flag: Qatar"], [["U+1F1F7", "U+1F1EA"], "🇷🇪", "flag: Réunion"], [["U+1F1F7", "U+1F1F4"], "🇷🇴", "flag: Romania"], [["U+1F1F7", "U+1F1F8"], "🇷🇸", "flag: Serbia"], [["U+1F1F7", "U+1F1FA"], "🇷🇺", "flag: Russia"], [["U+1F1F7", "U+1F1FC"], "🇷🇼", "flag: Rwanda"], [["U+1F1F8", "U+1F1E6"], "🇸🇦", "flag: Saudi Arabia"], [["U+1F1F8", "U+1F1E7"], "🇸🇧", "flag: Solomon Islands"], [["U+1F1F8", "U+1F1E8"], "🇸🇨", "flag: Seychelles"], [["U+1F1F8", "U+1F1E9"], "🇸🇩", "flag: Sudan"], [["U+1F1F8", "U+1F1EA"], "🇸🇪", "flag: Sweden"], [["U+1F1F8", "U+1F1EC"], "🇸🇬", "flag: Singapore"], [["U+1F1F8", "U+1F1ED"], "🇸🇭", "flag: St. Helena"], [["U+1F1F8", "U+1F1EE"], "🇸🇮", "flag: Slovenia"], [["U+1F1F8", "U+1F1EF"], "🇸🇯", "flag: Svalbard & Jan Mayen"], [["U+1F1F8", "U+1F1F0"], "🇸🇰", "flag: Slovakia"], [["U+1F1F8", "U+1F1F1"], "🇸🇱", "flag: Sierra Leone"], [["U+1F1F8", "U+1F1F2"], "🇸🇲", "flag: San Marino"], [["U+1F1F8", "U+1F1F3"], "🇸🇳", "flag: Senegal"], [["U+1F1F8", "U+1F1F4"], "🇸🇴", "flag: Somalia"], [["U+1F1F8", "U+1F1F7"], "🇸🇷", "flag: Suriname"], [["U+1F1F8", "U+1F1F8"], "🇸🇸", "flag: South Sudan"], [["U+1F1F8", "U+1F1F9"], "🇸🇹", "flag: São Tomé & Príncipe"], [["U+1F1F8", "U+1F1FB"], "🇸🇻", "flag: El Salvador"], [["U+1F1F8", "U+1F1FD"], "🇸🇽", "flag: Sint Maarten"], [["U+1F1F8", "U+1F1FE"], "🇸🇾", "flag: Syria"], [["U+1F1F8", "U+1F1FF"], "🇸🇿", "flag: Eswatini"], [["U+1F1F9", "U+1F1E6"], "🇹🇦", "flag: Tristan da Cunha"], [["U+1F1F9", "U+1F1E8"], "🇹🇨", "flag: Turks & Caicos Islands"], [["U+1F1F9", "U+1F1E9"], "🇹🇩", "flag: Chad"], [["U+1F1F9", "U+1F1EB"], "🇹🇫", "flag: French Southern Territories"], [["U+1F1F9", "U+1F1EC"], "🇹🇬", "flag: Togo"], [["U+1F1F9", "U+1F1ED"], "🇹🇭", "flag: Thailand"], [["U+1F1F9", "U+1F1EF"], "🇹🇯", "flag: Tajikistan"], [["U+1F1F9", "U+1F1F0"], "🇹🇰", "flag: Tokelau"], [["U+1F1F9", "U+1F1F1"], "🇹🇱", "flag: Timor-Leste"], [["U+1F1F9", "U+1F1F2"], "🇹🇲", "flag: Turkmenistan"], [["U+1F1F9", "U+1F1F3"], "🇹🇳", "flag: Tunisia"], [["U+1F1F9", "U+1F1F4"], "🇹🇴", "flag: Tonga"], [["U+1F1F9", "U+1F1F7"], "🇹🇷", "flag: Turkey"], [["U+1F1F9", "U+1F1F9"], "🇹🇹", "flag: Trinidad & Tobago"], [["U+1F1F9", "U+1F1FB"], "🇹🇻", "flag: Tuvalu"], [["U+1F1F9", "U+1F1FC"], "🇹🇼", "flag: Taiwan"], [["U+1F1F9", "U+1F1FF"], "🇹🇿", "flag: Tanzania"], [["U+1F1FA", "U+1F1E6"], "🇺🇦", "flag: Ukraine"], [["U+1F1FA", "U+1F1EC"], "🇺🇬", "flag: Uganda"], [["U+1F1FA", "U+1F1F2"], "🇺🇲", "flag: U.S. Outlying Islands"], [["U+1F1FA", "U+1F1F3"], "🇺🇳", "flag: United Nations"], [["U+1F1FA", "U+1F1F8"], "🇺🇸", "flag: United States"], [["U+1F1FA", "U+1F1FE"], "🇺🇾", "flag: Uruguay"], [["U+1F1FA", "U+1F1FF"], "🇺🇿", "flag: Uzbekistan"], [["U+1F1FB", "U+1F1E6"], "🇻🇦", "flag: Vatican City"], [["U+1F1FB", "U+1F1E8"], "🇻🇨", "flag: St. Vincent & Grenadines"], [["U+1F1FB", "U+1F1EA"], "🇻🇪", "flag: Venezuela"], [["U+1F1FB", "U+1F1EC"], "🇻🇬", "flag: British Virgin Islands"], [["U+1F1FB", "U+1F1EE"], "🇻🇮", "flag: U.S. Virgin Islands"], [["U+1F1FB", "U+1F1F3"], "🇻🇳", "flag: Vietnam"], [["U+1F1FB", "U+1F1FA"], "🇻🇺", "flag: Vanuatu"], [["U+1F1FC", "U+1F1EB"], "🇼🇫", "flag: Wallis & Futuna"], [["U+1F1FC", "U+1F1F8"], "🇼🇸", "flag: Samoa"], [["U+1F1FD", "U+1F1F0"], "🇽🇰", "flag: Kosovo"], [["U+1F1FE", "U+1F1EA"], "🇾🇪", "flag: Yemen"], [["U+1F1FE", "U+1F1F9"], "🇾🇹", "flag: Mayotte"], [["U+1F1FF", "U+1F1E6"], "🇿🇦", "flag: South Africa"], [["U+1F1FF", "U+1F1F2"], "🇿🇲", "flag: Zambia"], [["U+1F1FF", "U+1F1FC"], "🇿🇼", "flag: Zimbabwe"]]], ["subdivision-flag", [[["U+1F3F4", "U+E0067", "U+E0062", "U+E0065", "U+E006E", "U+E0067", "U+E007F"], "🏴󠁧󠁢󠁥󠁮󠁧󠁿", "flag: England"], [["U+1F3F4", "U+E0067", "U+E0062", "U+E0073", "U+E0063", "U+E0074", "U+E007F"], "🏴󠁧󠁢󠁳󠁣󠁴󠁿", "flag: Scotland"], [["U+1F3F4", "U+E0067", "U+E0062", "U+E0077", "U+E006C", "U+E0073", "U+E007F"], "🏴󠁧󠁢󠁷󠁬󠁳󠁿", "flag: Wales"]]]]]];
var _default = EmojiChars;
exports["default"] = _default;

/***/ }),

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

"use strict";


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;
__webpack_require__(79047);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _EmojiPickerTooltip = _interopRequireDefault(__webpack_require__(64911));
var _EmojiPicker = _interopRequireDefault(__webpack_require__(24169));
var _Tooltip = _interopRequireWildcard(__webpack_require__(54946));
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _Dom = __webpack_require__(64821);
var _EmojiUserListTooltip = _interopRequireDefault(__webpack_require__(21854));
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
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 }; }
var $ = _ACore["default"].$;
var _ = _ACore["default"]._;
var isMobile = _BrowserDetector["default"].isMobile;

/***
 * @extends AElement
 * @constructor
 */
function EmojiCounter() {
  /***
   *
   * @type {Sprite}
   */
  this.$sprite = $('sprite', this);
  this.$num = $('.as-emoji-counter-num', this);
  this.$numText = this.$num.firstChild;
  this._text = '(heart)';
  this.text = this._text;
  this._count = 0;
  this.count = 0;
  this._checkInterval = -1;
  if (isMobile) {
    this.attr('tabindex', '1');
    this.on('focus', this.eventHandler.mouseEnter);
  } else {
    this.on('mouseenter', this.eventHandler.mouseEnter);
  }
  this._tooltipSession = null;
  this._tooltipFinishTimeout = -1;
}
EmojiCounter.tag = 'EmojiCounter'.toLowerCase();
EmojiCounter.render = function () {
  var icon = _EmojiPickerTooltip["default"].emojiDict['(heart)'];
  var url = _EmojiPicker["default"].assetRoot + '/anim/x40/' + icon.imageFileName;
  return _({
    "class": 'as-emoji-counter',
    child: [{
      tag: 'sprite',
      "class": 'as-emoji-counter-sprite',
      props: {
        src: url,
        loop: true,
        fps: 30,
        debug: true
      },
      on: {
        ready: function ready() {
          this.frames = {
            type: 'grid',
            col: 1,
            row: this.texture.naturalHeight / this.texture.naturalWidth
          };
          this.frameIndex = 0;
        }
      }
    }, {
      tag: 'span',
      "class": 'as-emoji-counter-num',
      child: {
        text: '0'
      }
    }]
  });
};
EmojiCounter.property = {};
EmojiCounter.property.text = {
  set: function set(value) {
    var icon = _EmojiPickerTooltip["default"].emojiDict[value];
    if (!icon) return;
    if (this._text === value) return;
    this.$sprite.src = _EmojiPicker["default"].assetRoot + '/anim/x40/' + icon.imageFileName;
    this._text = value;
  },
  get: function get() {
    return this._text;
  }
};
EmojiCounter.property.count = {
  set: function set(value) {
    this.$numText.data = value + '';
    if (value === 1 && this._count != 1) {
      this.$numText.remove();
    } else if (value != 1 && this._count == 1) {
      this.$num.addChild(this.$numText);
    }
    if (value == 0) this.addClass('as-zero');else this.removeClass('as-zero');
    this._count = value;
  },
  get: function get() {
    return this._count;
  }
};
_ACore["default"].install(EmojiCounter);
EmojiCounter.eventHandler = {};
EmojiCounter.eventHandler.loop = function () {
  if (!this.isDescendantOf(document.body)) this.eventHandler.finishHover();
  if (this.getBoundingClientRect().width === 0) this.eventHandler.finishHover();
};
EmojiCounter.eventHandler.mouseEnter = function () {
  if (this._tooltipFinishTimeout > 0) {
    clearTimeout(this._tooltipFinishTimeout);
  }
  if (this._checkInterval > 0) return;
  this.$sprite.play();
  this._checkInterval = setInterval(this.eventHandler.loop, 1000);
  this.on('mouseleave', this.eventHandler.finishHover);
  if (this.users && this.users.length > 0) {
    prepare();
    EmojiCounter._session = Math.random() * 10000000000 >> 0;
    this._tooltipSession = EmojiCounter._session;
    EmojiCounter.$element = this;
    EmojiCounter.$holder.addTo(this);
    EmojiCounter.$tooltip.text = this.text;
    EmojiCounter.$tooltip.users = this.users;
    EmojiCounter.$tooltip.playEmoji();
    (0, _Tooltip.updateTooltipPosition)(EmojiCounter);
  }
};
EmojiCounter.eventHandler.finishHover = function () {
  if (this._tooltipFinishTimeout > 0) {
    clearTimeout(this._tooltipFinishTimeout);
  }
  this._tooltipFinishTimeout = setTimeout(function () {
    this._tooltipFinishTimeout = -1;
    this.$sprite.stop();
    this.off('mouseleave', this.eventHandler.finishHover);
    if (this._checkInterval > 0) {
      clearInterval(this._checkInterval);
      this._checkInterval = -1;
    }
    if (this._tooltipSession === EmojiCounter._session) {
      EmojiCounter._session = Math.random() * 10000000000 >> 0;
      EmojiCounter.$holder.remove();
      EmojiCounter.$tooltip.stopEmoji();
    }
  }.bind(this), 500);
};
function prepare() {
  if (EmojiCounter.$holder) return;
  EmojiCounter.$holder = _('.absol-tooltip-root-holder');
  EmojiCounter.$tooltip = _('EmojiUserListTooltip.top'.toLowerCase()).addTo(EmojiCounter.$holder);
  EmojiCounter._scrollOutListener = undefined;
  EmojiCounter._orientation = 'top';
  EmojiCounter._session = Math.random() * 10000000000 >> 0;
  _EmojiPickerTooltip["default"]._listener = undefined;
  EmojiCounter.$element = null;
  EmojiCounter.$tooltip.$arrow.updateSize = EmojiCounter.updatePosition;
}
EmojiCounter.updatePosition = function () {
  if (!EmojiCounter.$element) return;
  var outBound = _Rectangle["default"].fromClientRect((0, _Dom.traceOutBoundingClientRect)(EmojiCounter.$element));
  var eBound = _Rectangle["default"].fromClientRect(EmojiCounter.$element.getBoundingClientRect());
  if (!outBound.isCollapse(eBound, 0)) {
    _EmojiPickerTooltip["default"]._scrollOutListener && EmojiCounter._scrollOutListener();
  }
  (0, _Tooltip.updateTooltipPosition)(EmojiCounter);
};
EmojiCounter.updatePosition = EmojiCounter.updatePosition.bind(EmojiCounter);
var _default = EmojiCounter;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _EmojiPickerTooltip = _interopRequireDefault(__webpack_require__(64911));
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); }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function EmojiCounterList() {
  this._counters = [];
  this.counters = [];
}
EmojiCounterList.tag = 'EmojiCounterList'.toLowerCase();
EmojiCounterList.render = function () {
  return _({
    "class": 'as-emoji-counter-list'
  });
};
EmojiCounterList.iconOrdering = _EmojiPickerTooltip["default"].defaultIcons.reduce(function (ac, cr, idx) {
  ac[cr] = idx + 1;
  return ac;
}, {});
EmojiCounterList.prototype._updateCounters = function () {
  var newCounters = this._counters;
  var newCounterNameArr = Object.keys(newCounters);
  newCounterNameArr.sort(function (a, b) {
    return (EmojiCounterList.iconOrdering[a] || 1000) - (EmojiCounterList.iconOrdering[b] || 1000);
  });
  var counterElements = Array.prototype.filter.call(this.childNodes, function (e) {
    return e.hasClass && e.hasClass('as-emoji-counter');
  });
  var newCounterElements = [];
  var elt, name;
  var oe, on;
  while (counterElements.length > 0 || newCounterNameArr.length > 0) {
    elt = counterElements[0];
    name = newCounterNameArr[0];
    if (elt && name) {
      if (elt.text === name) {
        newCounterElements.push(elt);
        counterElements.shift();
        newCounterNameArr.shift();
      } else {
        oe = EmojiCounterList.iconOrdering[elt.text];
        on = EmojiCounterList.iconOrdering[name];
        if (oe < on) {
          newCounterElements.push(elt);
          counterElements.shift();
        } else {
          newCounterElements.push(name);
          newCounterNameArr.shift();
        }
      }
    } else if (elt) {
      newCounterElements.push(elt);
      counterElements.shift();
    } else {
      newCounterElements.push(name);
      newCounterNameArr.shift();
    }
  }
  var cElt, prevElt;
  while (newCounterElements.length > 0) {
    cElt = newCounterElements.pop();
    if (typeof cElt === "string") {
      cElt = _({
        tag: 'emojicounter',
        props: {
          text: cElt,
          users: newCounters[cElt].users || [],
          count: newCounters[cElt].count
        }
      });
      if (!prevElt) {
        this.addChild(cElt);
      } else {
        this.addChildBefore(cElt, prevElt);
      }
      prevElt = cElt;
    } else {
      if (newCounters[cElt.text]) {
        cElt.count = newCounters[cElt.text].count;
        cElt.users = newCounters[cElt.text].users || [];
        prevElt = cElt;
      } else {
        cElt.remove();
      }
    }
  }
};
EmojiCounterList.property = {};
EmojiCounterList.property.counters = {
  set: function set(counters) {
    this._counters = Object.keys(counters || {}).reduce(function (ac, key) {
      var counter = counters[key];
      if (_typeof(counter) === "object") {
        if (counter.count > 0 && _EmojiPickerTooltip["default"].emojiDict[key]) {
          ac[key] = counter;
        }
      }
      return ac;
    }, {});
    this._updateCounters();
  },
  get: function get() {
    return this._counters;
  }
};
_ACore["default"].install(EmojiCounterList);
var _default = EmojiCounterList;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(28395);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _EmojiAnims = _interopRequireDefault(__webpack_require__(98541));
var _Sprite = _interopRequireDefault(__webpack_require__(29464));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function EmojiPicker() {
  var thisPicker = this;
  this._aliveTimeout = 90;
  this._assetRoot = this.attr('data-asset-root');
  /***
   *
   * @type {Sprite}
   */
  this.$previewAnim = $('sprite.as-emoji-picker-preview-anim', this).on('ready', this.eventHandler.previewAnimReady).on('frame', this.eventHandler.previewAnimFrame);
  this.$previewAnim.loop = true;
  this.$previewAnim.src = this._assetRoot + '/anim/x120/' + _EmojiAnims["default"][0][1];
  this.$previewAnim.fps = 30;
  this.$desc = $('.as-emoji-picker-preview-desc', this);
  this.$shortcut = $('.as-emoji-picker-preview-shortcut', this);
  this.$desc.clearChild().addChild(_({
    text: _EmojiAnims["default"][0][2]
  }));
  this.$shortcut.clearChild().addChild(_({
    text: _EmojiAnims["default"][0][0]
  }));
  this.$list = $('.as-emoji-picker-list', this);
  this.$items = _EmojiAnims["default"].reduce(function (ac, it) {
    var itemElt = _({
      tag: 'img',
      "class": 'as-emoji-picker-item',
      props: {
        src: thisPicker._assetRoot + '/static/x20/' + it[1]
      }
    }).addTo(thisPicker.$list);
    itemElt.on('mouseenter', thisPicker.eventHandler.mouseenterItem.bind(thisPicker, it, itemElt));
    itemElt.on('click', thisPicker.eventHandler.clickItem.bind(thisPicker, it));
    ac[it[0]] = itemElt;
    return ac;
  }, {});
  this.$attachook = _('attachhook').addTo(this).on('error', this.eventHandler.attach);
}
EmojiPicker.assetRoot = function () {
  if (location.hostname.match(/^.*(\.?absol\.cf|absol\.ddns\.net)$/) || location.hostname.match(/^localhost$/)) return 'https://absol.cf/emoji';
  return '/emoji';
}();
EmojiPicker.tag = 'EmojiPicker'.toLowerCase();
EmojiPicker.render = function (data) {
  data = data || {};
  data.assetRoot = data.assetRoot || EmojiPicker.assetRoot;
  return _({
    "class": 'as-emoji-picker',
    extendEvent: 'pick',
    attr: {
      'data-asset-root': data.assetRoot
    },
    child: [{
      "class": 'as-emoji-picker-preview',
      child: [{
        "class": '.as-emoji-picker-preview-anim-ctn',
        child: 'sprite.as-emoji-picker-preview-anim'
      }, '.as-emoji-picker-preview-desc', '.as-emoji-picker-preview-shortcut']
    }, {
      tag: 'bscroller',
      "class": 'as-emoji-picker-list'
    }]
  });
};

/**
 * @type {EmojiPicker}
 */
EmojiPicker.eventHandler = {};
EmojiPicker.eventHandler.attach = function () {
  this._aliveTimeout = 90;
  setTimeout(this.$previewAnim.play.bind(this.$previewAnim), 1);
};
EmojiPicker.eventHandler.previewAnimReady = function () {
  this.$previewAnim.frames = {
    type: 'grid',
    col: 1,
    row: this.$previewAnim.texture.naturalHeight / this.$previewAnim.texture.naturalWidth
  };
  this.$previewAnim.play();
};
EmojiPicker.eventHandler.previewAnimFrame = function () {
  if (this._aliveTimeout == 0) {
    var bound = this.getBoundingClientRect();
    if (bound.width == 0) {
      this.$previewAnim.stop();
    } else {
      this._aliveTimeout = 90;
    }
  }
  this._aliveTimeout--;
};
EmojiPicker.eventHandler.mouseenterItem = function (itemData, itemElt, event) {
  if (this.$lastHoverItem == itemElt) return;
  this.$lastHoverItem = itemElt;
  this.$previewAnim.src = this._assetRoot + '/anim/x120/' + itemData[1];
  this.$desc.clearChild().addChild(_({
    text: itemData[2]
  }));
  this.$shortcut.clearChild().addChild(_({
    text: itemData[0]
  }));
};
EmojiPicker.eventHandler.clickItem = function (itemData, event) {
  this.emit('pick', {
    name: 'pick',
    key: itemData[0],
    target: this
  }, this);
};
_ACore["default"].install(EmojiPicker);
var _default = EmojiPicker;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(51922);
var _Tooltip = __webpack_require__(54946);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _EmojiPicker = _interopRequireDefault(__webpack_require__(24169));
var _EmojiAnims = _interopRequireDefault(__webpack_require__(98541));
var _PositionTracker = _interopRequireDefault(__webpack_require__(97252));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _Dom = __webpack_require__(64821);
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _EventEmitter = __webpack_require__(46833);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _PageIndicator = _interopRequireDefault(__webpack_require__(18549));
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var isMobile = _BrowserDetector["default"].isMobile;

/***
 * @augments Tooltip
 * @augments AElement
 * @augments Hanger
 * @constructor
 */
function EmojiPickerTooltip() {
  if (isMobile) {
    _({
      tag: _Hanger["default"].tag,
      elt: this,
      on: {
        predrag: this.eventHandler.preDragTT,
        dragstart: this.eventHandler.dragStartTT,
        drag: this.eventHandler.dragTT,
        dragend: this.eventHandler.dragEndTT
      }
    });
  }
  this.$iconList = $('.as-emoji-picker-tooltip-icon-list', this);
  this.$leftBtn = $('.as-emoji-picker-tooltip-left-btn', this).on('click', this.eventHandler.clickLeft);
  this.$scroller = $('.as-emoji-picker-tooltip-scroller', this);
  this.$rightBtn = $('.as-emoji-picker-tooltip-right-btn', this).on('click', this.eventHandler.clickRight);
  this.$removeBtn = $('.as-emoji-picker-tooltip-remove-btn', this).on('click', this.eventHandler.clickRemove);
  this.$pageIndicatior = $('pageindicator', this);
  this._iconButtonCache = {};
  this._icons = [];
  this.icons = EmojiPickerTooltip.defaultIcons;
}
EmojiPickerTooltip.tag = 'EmojiPickerTooltip'.toLowerCase();
EmojiPickerTooltip.defaultIcons = [';(', '(sarcastic)', ':O', '(cwl)', '(heart)', '(y)', '(n)', '(rock)', '(facepalm)', '(xd)', ':$', '(waiting)', '(headbang)', '(ghost)', '(clap)', '(punch)', '(ok)', '(angry)'];
EmojiPickerTooltip.emojiDict = _EmojiAnims["default"].reduce(function (ac, cr) {
  ac[cr[0]] = {
    imageFileName: cr[1],
    text: cr[0],
    desc: cr[2]
  };
  return ac;
}, {});
EmojiPickerTooltip.render = function () {
  return _({
    tag: 'tooltip',
    extendEvent: ['pick'],
    "class": ['as-emoji-picker-tooltip'].concat(isMobile ? ['as-mobile'] : []),
    child: [{
      tag: 'button',
      "class": 'as-emoji-picker-tooltip-left-btn',
      child: 'span.mdi.mdi-chevron-left'
    }, {
      "class": 'as-emoji-picker-tooltip-scroller',
      child: {
        "class": 'as-emoji-picker-tooltip-icon-list'
      }
    }, {
      tag: 'button',
      "class": 'as-emoji-picker-tooltip-right-btn',
      child: 'span.mdi.mdi-chevron-right'
    }, {
      tag: 'button',
      attr: {
        title: 'Remove Emoji'
      },
      "class": 'as-emoji-picker-tooltip-remove-btn',
      child: 'span.mdi.mdi-close'
    }, {
      tag: 'pageindicator',
      "class": 'as-emoji-picker-tooltip-page-indicator',
      props: {
        length: 3,
        idx: 0
      }
    }]
  }, true);
};

/*var */

EmojiPickerTooltip.prototype._makeIconBtn = function (iconText) {
  var icon = EmojiPickerTooltip.emojiDict[iconText];
  var url = _EmojiPicker["default"].assetRoot + '/anim/x40/' + icon.imageFileName;
  var spriteElt = _({
    tag: 'sprite',
    "class": 'as-emoji-picker-tooltip-icon',
    attr: {
      title: icon.desc
    },
    props: {
      src: url,
      loop: true,
      fps: 30,
      debug: true
    },
    on: {
      ready: function ready() {
        this.frames = {
          type: 'grid',
          col: 1,
          row: this.texture.naturalHeight / this.texture.naturalWidth
        };
        this.frameIndex = 0;
      }
    }
  });
  var buttonElt = _({
    tag: 'button',
    "class": 'as-emoji-picker-tooltip-icon-btn',
    child: spriteElt,
    on: {
      click: this.eventHandler.clickIconBtn.bind(null, icon)
    }
  });
  buttonElt.on('mouseenter', function () {
    spriteElt.play();
  }).on('mouseleave', function () {
    spriteElt.stop();
    spriteElt.frameIndex = 0;
  });
  return buttonElt;
};
EmojiPickerTooltip.prototype._updateIconList = function () {
  this.$iconList.clearChild();
  var iconText;
  for (var i = 0; i < this._icons.length; ++i) {
    iconText = this._icons[i];
    this._iconButtonCache[iconText] = this._iconButtonCache[iconText] || this._makeIconBtn(iconText);
    this.$iconList.addChild(this._iconButtonCache[iconText]);
  }
};
EmojiPickerTooltip.property = {};
EmojiPickerTooltip.property.icons = {
  set: function set(icons) {
    this._icons = icons || [];
    this._updateIconList();
    this.viewOffset = 0;
    this.$pageIndicatior.length = Math.ceil(this._icons.length / 6);
  },
  get: function get() {
    return this._icons;
  }
};
EmojiPickerTooltip.property.viewOffset = {
  set: function set(value) {
    this._viewOffset = Math.max(0, Math.min(value, this._icons.length - 6));
    this.$iconList.addStyle('left', -(100 * this._viewOffset / 6) + '%');
    this.$leftBtn.disabled = this._viewOffset === 0;
    this.$rightBtn.disabled = this._viewOffset === this._icons.length - 6;
    this.$pageIndicatior.idx = Math.floor(this._viewOffset / 6);
  },
  get: function get() {
    return this._viewOffset;
  }
};
EmojiPickerTooltip.eventHandler = {};
EmojiPickerTooltip.eventHandler.clickLeft = function () {
  this.viewOffset -= 6;
};
EmojiPickerTooltip.eventHandler.clickRight = function () {
  this.viewOffset += 6;
};
EmojiPickerTooltip.eventHandler.clickIconBtn = function (icon) {
  if (this._preventClick) return;
  this.emit('pick', Object.assign({
    type: 'pick',
    icon: icon,
    target: this
  }, icon), this);
};
EmojiPickerTooltip.eventHandler.clickRemove = function () {
  this.emit('pick', Object.assign({
    type: 'pressremove',
    icon: "REMOVE",
    target: this
  }), this);
};
EmojiPickerTooltip.eventHandler.preDragTT = function (event) {
  var scrollerBound = this.$scroller.getBoundingClientRect();
  var listBound = this.$iconList.getBoundingClientRect();
  this._scrollData = {
    left: listBound.left - scrollerBound.left,
    scrollerWidth: scrollerBound.width,
    newLeft: listBound.left - scrollerBound.left
  };
};
EmojiPickerTooltip.eventHandler.dragStartTT = function () {
  this.addClass('as-scrolling');
  this._preventClick = true;
};
EmojiPickerTooltip.eventHandler.dragTT = function (event) {
  event.preventDefault();
  var dx = event.currentPoint.sub(event.startingPoint).x;
  var newLeft = Math.min(0, Math.max(-this._scrollData.scrollerWidth * 2, this._scrollData.left + dx));
  this._scrollData.newLeft = newLeft;
  this.$iconList.addStyle('left', newLeft + 'px');
};
EmojiPickerTooltip.eventHandler.dragEndTT = function (event) {
  event.preventDefault();
  this.removeClass('as-scrolling');
  var dOffset = (this._scrollData.left - this._scrollData.newLeft) / this._scrollData.scrollerWidth;
  if (dOffset > 0.25) {
    dOffset = 1;
  } else if (dOffset < -0.25) {
    dOffset = -1;
  } else {
    dOffset = 0;
  }
  this.viewOffset += dOffset * 6;
  setTimeout(function () {
    this._preventClick = false;
  }.bind(this), 5);
};
_ACore["default"].install(EmojiPickerTooltip);
EmojiPickerTooltip._session = Math.random() * 10000000000 >> 0;
function prepare() {
  if (EmojiPickerTooltip.$holder) return;
  EmojiPickerTooltip.$holder = _('.absol-tooltip-root-holder');
  EmojiPickerTooltip.$tooltip = _('emojipickertooltip.top').addTo(EmojiPickerTooltip.$holder).on('pick', function (event) {
    EmojiPickerTooltip._listener && EmojiPickerTooltip._listener(event.icon);
  });
  /***
   *
   * @type {PositionTracker|undefined}
   */
  EmojiPickerTooltip.$element = undefined;
  EmojiPickerTooltip.$content = undefined;
  EmojiPickerTooltip._orientation = 'auto';
  EmojiPickerTooltip._session = Math.random() * 10000000000 >> 0;
  EmojiPickerTooltip._listener = undefined;
  EmojiPickerTooltip._scrollOutListener = undefined;
  EmojiPickerTooltip.$tooltip.$arrow.updateSize = EmojiPickerTooltip.updatePosition;
}
EmojiPickerTooltip.updatePosition = function () {
  if (!EmojiPickerTooltip.$element) return;
  var outBound = _Rectangle["default"].fromClientRect((0, _Dom.traceOutBoundingClientRect)(EmojiPickerTooltip.$element));
  var eBound = _Rectangle["default"].fromClientRect(EmojiPickerTooltip.$element.getBoundingClientRect());
  if (!outBound.isCollapse(eBound, 0)) {
    EmojiPickerTooltip._scrollOutListener && EmojiPickerTooltip._scrollOutListener();
  }
  (0, _Tooltip.updateTooltipPosition)(EmojiPickerTooltip);
};
EmojiPickerTooltip.updatePosition = EmojiPickerTooltip.updatePosition.bind(EmojiPickerTooltip);
EmojiPickerTooltip.show = function (element, menuListener, orientation) {
  prepare();
  if (EmojiPickerTooltip.$element) {
    EmojiPickerTooltip.$element.stopTrackPosition();
    EmojiPickerTooltip.$element.off('positionchange', EmojiPickerTooltip.updatePosition);
  }
  if (!element.startTrackPosition) {
    _({
      tag: _PositionTracker["default"].tag,
      elt: element
    });
  }
  element.startTrackPosition();
  EmojiPickerTooltip.$element = element;
  EmojiPickerTooltip.$element.on('positionchange', EmojiPickerTooltip.updatePosition);
  EmojiPickerTooltip._listener = menuListener;
  EmojiPickerTooltip._session = Math.random() * 10000000000 >> 0;
  EmojiPickerTooltip._orientation = orientation || 'auto';
  EmojiPickerTooltip.$holder.addTo(document.body);
  _ResizeSystem["default"].add(EmojiPickerTooltip.$tooltip.$arrow);
  EmojiPickerTooltip.$tooltip.viewOffset = 0;
  EmojiPickerTooltip.$tooltip.addClass('top').removeClass('left').removeClass('right').removeClass('bottom').removeClass('ne').removeClass('nw').removeClass('auto');
  EmojiPickerTooltip.updatePosition();
  return EmojiPickerTooltip._session;
};
EmojiPickerTooltip.close = function (token) {
  if (EmojiPickerTooltip._session !== token) return;
  if (EmojiPickerTooltip.$element) {
    EmojiPickerTooltip.$element.stopTrackPosition();
    EmojiPickerTooltip.$element.off('positionchange', EmojiPickerTooltip.updatePosition);
  }
  EmojiPickerTooltip.$element = undefined;
  EmojiPickerTooltip._listener = undefined;
  EmojiPickerTooltip._session = Math.random() * 10000000000 >> 0;
  EmojiPickerTooltip.$holder.remove();
};
EmojiPickerTooltip.toggleWhenClick = function (trigger, adaptor) {
  var res = {
    trigger: trigger,
    adaptor: adaptor,
    currentSession: undefined
  };
  function clickHandler(event) {
    if (res.currentSession === EmojiPickerTooltip._session) return;
    res.currentSession = EmojiPickerTooltip.show(res.adaptor.getFlowedElement ? res.adaptor.getFlowedElement() : trigger, res.adaptor.onSelect, res.adaptor.orientation || 'auto');
    if (res.adaptor.onOpen) res.adaptor.onOpen();
    var finish = function finish(event) {
      if (event && ((0, _EventEmitter.hitElement)(EmojiPickerTooltip.$tooltip.$leftBtn, event) || (0, _EventEmitter.hitElement)(EmojiPickerTooltip.$tooltip.$rightBtn, event)) || event && event.target && event.target.classList.contains('absol-tooltip-content')) return;
      document.body.removeEventListener('click', finish, false);
      EmojiPickerTooltip.close(res.currentSession);
      if (adaptor.onClose) adaptor.onClose();
      res.currentSession = undefined;
      if (EmojiPickerTooltip._scrollOutListener === EmojiPickerTooltip) EmojiPickerTooltip._scrollOutListener = undefined;
    };
    EmojiPickerTooltip._scrollOutListener = finish;
    setTimeout(function () {
      document.body.addEventListener('click', finish, false);
    }, 10);
  }
  res.remove = function () {
    trigger.removeEventListener('click', clickHandler, false);
    trigger.classList.remove('as-emoji-picker-tooltip-trigger');
  };
  trigger.addEventListener('click', clickHandler, false);
  trigger.classList.add('as-emoji-picker-tooltip-trigger');
  return res;
};
var _default = EmojiPickerTooltip;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(76974);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Tooltip = _interopRequireDefault(__webpack_require__(54946));
var _EmojiPicker = _interopRequireDefault(__webpack_require__(24169));
var _EmojiPickerTooltip = _interopRequireDefault(__webpack_require__(64911));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @augments ToolTip
 * @augments AElement
 * @constructor
 */
function EmojiUserListTooltip() {
  this._text = null;
  this._users = [];
  this.$sprite = _({
    tag: 'sprite',
    "class": 'as-emoji-user-list-tooltip-emoji',
    props: {
      fps: 30,
      loop: true
    },
    on: {
      ready: function ready() {
        this.frames = {
          type: 'grid',
          col: 1,
          row: this.texture.naturalHeight / this.texture.naturalWidth
        };
      }
    }
  });
  this.appendChild(this.$sprite);
  this.text = '(heart)';
  this.user = [];
}
EmojiUserListTooltip.tag = 'EmojiUserListTooltip'.toLowerCase();
EmojiUserListTooltip.render = function () {
  return _({
    tag: 'tooltip',
    "class": 'as-emoji-user-list-tooltip'
  }, true);
};
EmojiUserListTooltip.prototype._updateUsers = function () {
  var thisT = this;
  this.$content.clearChild();
  this._users.forEach(function (user) {
    var elt = _({
      "class": 'as-emoji-user-list-tooltip-user',
      child: [{
        "class": 'as-emoji-user-list-tooltip-avatar',
        style: {
          backgroundImage: 'url(' + user.avatar + ')'
        }
      }, {
        "class": 'as-emoji-user-list-tooltip-name',
        child: {
          text: user.name
        }
      }]
    });
    if (user.onclick) {
      elt.addClass('as-clickable');
      elt.on('click', user.onclick.bind(user));
    }
    thisT.$content.addChild(elt);
  });
};
EmojiUserListTooltip.prototype.playEmoji = function () {
  this.$sprite.afterReady().then(this.$sprite.play.bind(this.$sprite));
};
EmojiUserListTooltip.prototype.stopEmoji = function () {
  this.$sprite.stop();
};
EmojiUserListTooltip.property = {};
EmojiUserListTooltip.property.users = {
  set: function set(users) {
    this._users = users || [];
    this._updateUsers();
  },
  get: function get() {
    return this._users;
  }
};
EmojiUserListTooltip.property.text = {
  set: function set(value) {
    if (value === this._text) return;
    var icon = _EmojiPickerTooltip["default"].emojiDict[value];
    if (!value) return;
    var url = _EmojiPicker["default"].assetRoot + '/anim/x60/' + icon.imageFileName;
    this._text = value;
    this.$sprite.src = url;
  },
  get: function get() {
    return this._text;
  }
};
_ACore["default"].install(EmojiUserListTooltip);
var _default = EmojiUserListTooltip;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.ExpGroup = ExpGroup;
exports.ExpNode = ExpNode;
exports.ExpTree = ExpTree;
exports["default"] = void 0;
__webpack_require__(68687);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _utils = __webpack_require__(84512);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _EventEmitter = _interopRequireWildcard(__webpack_require__(46833));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
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 }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
_ACore["default"].install('toggler-ico', function () {
  var res = _('<svg class="toggler-ico" width="14" height="14" version="1.1" viewBox="0 0 3.7042 3.7042" xmlns="http://www.w3.org/2000/svg" >' + '    <rect style="fill: transparent; stroke: none" x="0" y="0" width="3.7042" height="3.7042"></rect>' + '    <g transform="translate(0 -293.3)" class="toggle-close">' + '        <path d="m0.52917 293.82v2.6458l2.6458-1.3229z" />' + '    </g>' + '    <g transform="translate(0 -293.3)" class="toggle-open">' + '        <path d="m3.175 294.09-2.6458 2.1167h2.6458z"/>' + '    </g>' + '</svg>');
  return res;
});
_ACore["default"].install('remove-ico', function () {
  return _('<svg class="remove-ico" width="24" height="24" viewBox="0 0 24 24">\
                <rect style="fill: transparent; stroke: none" x="0" y="0" width="24" height="24"></rect>\
                <path class="close" d="M3,16.74L7.76,12L3,7.26L7.26,3L12,7.76L16.74,3L21,7.26L16.24,12L21,16.74L16.74,21L12,16.24L7.26,21L3,16.74" />\
                <circle class="modified" cx="12" cy="12" r="10" />\
            </svg>');
});

/***
 * @extends AElement
 * @constructor
 */
function ExpNode() {
  var _this = this;
  var thisEN = this;
  this.$level = $('.absol-exp-node-level', this);
  this.$removeIcon = $('remove-ico', this).on('click', function (event) {
    thisEN.emit('pressremove', {
      target: thisEN,
      type: 'pressremove'
    }, this);
  });
  this.on('keydown', this.eventHandler.buttonKeydown);
  this.$toggleIcon = $('toggler-ico', this);
  this.on('click', function (event) {
    var toggleBound = _this.$toggleIcon.getBoundingClientRect();
    if (toggleBound.width > 0 && event.clientX <= toggleBound.right) {
      _this.emit('presstoggle', (0, _EventEmitter.copyEvent)(event, {
        target: thisEN,
        type: 'pressremove'
      }), _this);
    } else if (!_EventEmitter["default"].hitElement(thisEN.$removeIcon, event)) {
      _this.emit('press', (0, _EventEmitter.copyEvent)(event, {
        target: thisEN,
        type: 'press'
      }), _this);
    }
  });
  this.$iconCtn = $('div.absol-exp-node-ext-icon', this);
  this.$extIcon = $('img.absol-exp-node-ext-icon', this);
  this.$name = $('span.absol-exp-node-name', this);
  this.$desc = $('span.absol-exp-node-desc', this);
  (0, _utils.contenteditableTextOnly)(this.$name, function (text) {
    return text.replace(/[\\\/\|\?\:\<\>\*\r\n]/, '').trim();
  });
  _OOP["default"].drillProperty(thisEN, thisEN.$extIcon, 'extSrc', 'src');
  this._level = 0;
  this.__isExpNode__ = true;
  return thisEN;
}
ExpNode.tag = 'expnode';
ExpNode.render = function () {
  return _({
    tag: 'button',
    extendEvent: ['pressremove', 'press', 'presstoggle'],
    "class": 'absol-exp-node',
    child: ['.absol-exp-node-level', 'remove-ico', 'toggler-ico', 'img.absol-exp-node-ext-icon', 'div.absol-exp-node-ext-icon', 'span.absol-exp-node-name', 'span.absol-exp-node-desc']
  });
};
ExpNode.property = {};
ExpNode.property.icon = {
  set: function set(value) {
    if (this.$iconP) {
      this.$iconP.remove();
      this.$iconP = undefined;
    }
    if (value) {
      var newE;
      if (_Dom["default"].isDomNode(value)) {
        newE = value;
      } else {
        newE = _(value);
      }
      this.$iconP = newE;
      this.$iconCtn.addChild(newE);
      this._icon = value;
    } else {
      this._icon = undefined;
    }
  },
  get: function get() {
    return this._icon;
  }
};
ExpNode.property.level = {
  set: function set(value) {
    value = value || 0;
    if (value !== this.level) {
      this._level = value || 0;
      this.$level.innerHTML = '&nbsp;'.repeat(this._level * 6);
    }
  },
  get: function get() {
    return this._level || 0;
  }
};
ExpNode.property.name = {
  set: function set(value) {
    value = value + '';
    this._name = value;
    this.$name.clearChild();
    if (value && value.length > 0) this.$name.addChild(_({
      text: value
    }));
  },
  get: function get() {
    return this._name || '';
  }
};
ExpNode.property.desc = {
  set: function set(value) {
    this._desc = (value || '') + '';
    this.$desc.clearChild();
    this.$desc.addChild(_({
      text: this._desc
    }));
  },
  get: function get() {
    return this._desc || '';
  }
};
ExpNode.property.status = {
  set: function set(value) {
    this.removeClass('status-open').removeClass('status-close').removeClass('status-modified').removeClass('status-removable');
    if (!value || value == 'none') {
      //todo
    } else if (value == 'close') {
      this.addClass('status-close');
    } else if (value == 'open') {
      this.addClass('status-open');
    } else if (value == 'removable') {
      this.addClass('status-removable');
    } else if (value == 'modified') {
      this.addClass('status-modified');
    } else {
      throw new Error('Invalid status ' + value);
    }
    this._status = value;
  },
  get: function get() {
    return this._status;
  }
};
ExpNode.property.active = {
  set: function set(value) {
    if (value) {
      this.addClass('as-active');
      this.addClass('active');
    } else {
      this.removeClass('as-active');
      this.removeClass('active');
    }
  },
  get: function get() {
    return this.hasClass('as-active');
  }
};
ExpNode.prototype.rename = function (resolveCallback, rejectCallback) {
  var self = this;
  var span = this.$name;
  var lastName = span.innerHTML;
  span.attr('contenteditable', 'true');
  span.focus();
  document.execCommand('selectAll', false, null);
  function keydowEventHandle(event) {
    var key = event.key;
    if (key == 'Enter') {
      event.preventDefault();
      span.blur();
      span.attr('contenteditable', undefined);
    } else if (key == "ESC") {
      event.preventDefault();
      span.innerHTML = lastName;
      span.blur();
      span.attr('contenteditable', undefined);
    }
  }
  function blurEventHandle(event) {
    finish();
    var curentName = span.innerHTML.replace(/[\\\/\|\?\:\<\>\*\r\n]/, '').trim();
    if (curentName == lastName) {
      rejectCallback && rejectCallback();
    } else {
      if (curentName.length == 0) {
        span.innerHTML = lastName;
        rejectCallback && rejectCallback();
      } else {
        var res = resolveCallback && resolveCallback(curentName);
        if (res === false) {
          span.innerHTML = lastName;
        } else if (res && res.then) {
          res.then(function (result) {
            if (result === false) {
              span.innerHTML = lastName;
              //faile
            } else {
              //success
            }
          }, function () {
            //reject value
            span.innerHTML = lastName;
          });
        } else {
          //success
        }
      }
    }
  }
  function finish() {
    span.off('keydown', keydowEventHandle);
    span.off('blur', blurEventHandle);
    $(document.body).once('click', function () {
      setTimeout(function () {
        span.attr('contenteditable', undefined);
      }, 2);
    });
  }
  span.on('keydown', keydowEventHandle);
  span.on('blur', blurEventHandle);
};
ExpNode.prototype.findNodeBefore = function () {
  var tree = this.parentElement;
  var root;
  var prevTree;
  var res = null;
  if (tree.__isExpTree__) {
    root = tree.getRoot();
    root.visitRecursive(function (cTree) {
      if (cTree === tree) {
        res = prevTree;
      }
      prevTree = cTree;
    });
  }
  return res && res.getNode();
};
ExpNode.prototype.findNodeAfter = function () {
  var tree = this.parentElement;
  var root;
  var prevTree;
  var res = null;
  if (tree.__isExpTree__) {
    root = tree.getRoot();
    root.visitRecursive(function (cTree) {
      if (prevTree === tree) {
        res = cTree;
      }
      prevTree = cTree;
    });
  }
  return res && res.getNode();
};
ExpNode.eventHandler = {};

/****
 *
 * @param {KeyboardEvent} event
 */
ExpNode.eventHandler.buttonKeydown = function (event) {
  if (event.target === this) {
    if (!event.metaKey && !event.shiftKey && !event.ctrlKey && !event.altKey) {
      var destNode;
      var tree = this.parentElement;
      var parentTree = tree && tree.getParent();
      switch (event.key) {
        case 'ArrowLeft':
          if (tree.status === 'open') {
            tree.status = 'close';
            tree.notifyStatusChange();
          } else {
            destNode = parentTree && parentTree.getNode();
          }
          break;
        case 'ArrowRight':
          if (tree.status === 'close') {
            tree.status = 'open';
            tree.notifyStatusChange();
          } else {
            destNode = this.findNodeAfter();
          }
          break;
        case 'ArrowUp':
          destNode = this.findNodeBefore();
          break;
        case 'ArrowDown':
          destNode = this.findNodeAfter();
          break;
        case 'Space':
          this.click();
          break;
      }
      if (destNode) {
        destNode.focus();
        event.preventDefault();
      }
    }
  }
};

/***
 * @extends AElement
 * @constructor
 */
function ExpTree() {
  var thisET = this;
  this.$node = $('expnode', this).on('press', function (event) {
    thisET.emit('press', Object.assign({}, {
      target: thisET,
      node: this,
      type: 'press'
    }, event), this);
  }).on('pressremove', function (event) {
    thisET.emit('pressremove', Object.assign({}, {
      target: thisET,
      node: this,
      type: 'pressremove'
    }, event), this);
  }).on('presstoggle', this.eventHandler.nodePressToggle);
  this.$itemsContainer = $('.absol-exp-items', thisET);
  _OOP["default"].drillProperty(this, this.$node, ['desc', 'name', 'title', 'extSrc', 'active', 'icon']);
  this.__isExpTree__ = true;
  this._level = 0;
}
ExpTree.tag = 'ExpTree'.toLowerCase();
ExpTree.render = function () {
  return _({
    "class": 'absol-exp-tree',
    extendEvent: ['press', 'pressremove', 'statuschange'],
    child: ['expnode', '.absol-exp-items']
  });
};
ExpTree.property = {};
ExpTree.property.level = {
  set: function set(value) {
    value = value || 0;
    if (value != this.level) {
      this.$node.level = value;
      Array.prototype.forEach.call(this.$itemsContainer.childNodes, function (e) {
        e.level = value + 1;
      });
    }
  },
  get: function get() {
    return this.$node.level;
  }
};
ExpTree.property.status = {
  set: function set(value) {
    this.$node.status = value;
    if (value != 'open') {
      this.addClass('hide-children');
    } else {
      this.removeClass('hide-children');
    }
  },
  get: function get() {
    return this.$node.status;
  }
};
['findChildBefore', 'findChildAfter', 'removeChild', 'clearChild'].forEach(function (key) {
  ExpTree.prototype[key] = function () {
    this.$itemsContainer[key].apply(this.$itemsContainer, arguments);
  };
});
ExpTree.prototype.addChild = function (child) {
  if (!child.__isExpTree__) throw new Error('Child node must be a ExpTree');
  child.level = this.level + 1;
  this.$itemsContainer.addChild(child);
};
ExpTree.prototype.addChildBefore = function (child, at) {
  child.level = this.level + 1;
  this.$itemsContainer.addChildBefore(child, at);
};
ExpTree.prototype.addChildAfter = function (child, at) {
  child.level = this.level + 1;
  this.$itemsContainer.addChildAfter(child, at);
};

/****
 *
 * @return {ExpTree}
 */
ExpTree.prototype.getParent = function () {
  var current = this.parentNode;
  while (current) {
    if (current.__isExpTree__) break;
    current = current.parentNode;
  }
  return current;
};

/***
 *
 * @return {ExpTree}
 */
ExpTree.prototype.getRoot = function () {
  var parent = this.getParent();
  if (!parent) return this;
  return parent.getRoot();
};
ExpTree.prototype.getNode = function () {
  return this.$node;
};
ExpTree.prototype.getChildren = function () {
  return Array.apply(null, this.$itemsContainer.childNodes);
};

/***
 *
 * @param {function(tree: ExpTree): void} cb
 */
ExpTree.prototype.visitRecursive = function (cb) {
  cb(this);
  if (this.status === 'open') Array.prototype.forEach.call(this.$itemsContainer.childNodes, function (child) {
    child.visitRecursive(cb);
  });
};
ExpTree.prototype.getPath = function () {
  var path = [];
  var current = this;
  while (current) {
    path.push(current.name);
    current = current.getParent();
  }
  return path.reverse();
};
ExpTree.prototype.accessByPath = function (path) {
  if (path.length == 0) return this;
  var childs = this.getChildren();
  var res;
  for (var i = 0; i < childs.length; ++i) {
    if (childs[i].name == path[0]) {
      res = childs[i].accessByPath(path.slice(1));
      break;
    }
  }
  return res;
};
ExpTree.prototype.toggle = function () {
  switch (this.status) {
    case 'close':
      this.status = 'open';
      break;
    case 'open':
      this.status = 'close';
      break;
  }
};
ExpTree.prototype.notifyStatusChange = function (props) {
  this.emit('statuschange', Object.assign({
    type: 'statuschange',
    target: this
  }, props), this);
};
ExpTree.eventHandler = {};
ExpTree.eventHandler.nodePressToggle = function (event) {
  this.toggle();
  this.notifyStatusChange({
    originEvent: event
  });
};

/***
 * @extends ExpTree
 * @constructor
 */
function ExpGroup() {
  this.addClass('as-exp-group');
  this.__isExpTree__ = true;
  this.name = '';
}
ExpGroup.tag = 'ExpGroup'.toLowerCase();
ExpGroup.render = function () {
  return _('div');
};

/***
 *
 * @param {function(tree: ExpTree): void} cb
 */
ExpGroup.prototype.visitRecursive = function (cb) {
  Array.prototype.forEach.call(this.childNodes, function (child) {
    child.visitRecursive(cb);
  });
};
ExpGroup.prototype.getParent = function () {
  return null;
};
ExpGroup.prototype.getRoot = function () {
  return this;
};
ExpGroup.prototype.getNode = function () {
  return null;
};
_ACore["default"].install(ExpNode);
_ACore["default"].install(ExpTree);
_ACore["default"].install(ExpGroup);
var _default = ExpTree;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(37959);
var _DelaySignal = _interopRequireDefault(__webpack_require__(81809));
var _keyboard = __webpack_require__(95141);
var _stringMatching = __webpack_require__(59163);
var _PositionTracker = _interopRequireDefault(__webpack_require__(97252));
var _utils = __webpack_require__(84512);
var _Dom = __webpack_require__(64821);
var _SCGrammar = _interopRequireDefault(__webpack_require__(43480));
var _DPParser = _interopRequireDefault(__webpack_require__(7679));
var _DPParseInstance = __webpack_require__(36093);
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _EventEmitter = __webpack_require__(46833);
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _Array = __webpack_require__(40411);
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 _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); }
/***
 * @extends PositionTracker
 * @constructor
 */
function ExpressionInput() {
  this.domSignal = new _DelaySignal["default"]();
  this.$rangeCtn = (0, _ACore.$)('.as-expression-input-range-ctn', this);
  this.$content = (0, _ACore.$)('.as-expression-input-content', this);
  this.$iconCtn = (0, _ACore.$)('.as-expression-input-icon-ctn', this);
  // this.$forground = $('.as-expression-input-foreground', this);

  /**
   *
   * @type {null|AElement}
   */
  this.$icon = null;
  this.$alertIcon = (0, _ACore.$)('.mdi.mdi-alert-circle', this.$iconCtn);
  this.engine = new EIEngine(this);
  this.userActionCtrl = new EIUserActionController(this);
  // this.selection = new EISelection(this);

  this.autoCompleteCtrl = new EIAutoCompleteController(this);
  this.undoMgn = new EIUndoManager(this);
  this.cmdTool = new EICommandTool(this);
  this._icon = null;

  /****
   * @name value
   * @type {string}
   * @memberOf ExpressionInput#
   */

  /**
   * @type {{variables: string[], functions: string[], sampleJS?:{getFunctions: function(): string[], getVariables: function(): string[]}}}
   * @memberOf ExpressionInput#
   * @name autocomplete
   */
  /**
   * @type {*}
   * @memberOf ExpressionInput#
   * @name icon
   */
}

ExpressionInput.tag = 'ExpressionInput'.toLowerCase();
ExpressionInput.render = function () {
  return (0, _ACore._)({
    tag: _PositionTracker["default"],
    extendEvent: ['stopchange', 'blur', 'focus'],
    "class": ['as-expression-input'],
    child: [{
      "class": 'as-expression-input-icon-ctn',
      child: ['span.mdi.mdi-alert-circle']
    }, {
      "class": 'as-expression-input-content',
      attr: {
        contenteditable: 'true',
        spellcheck: 'false'
      }
    } //,
    // { class: 'as-expression-input-range-ctn' },
    ]
  });
};

ExpressionInput.prototype.requestUpdateSize = function () {
  if (this.cmdTool && this.cmdTool.$ctn && this.cmdTool.$ctn.parentElement) {
    this.cmdTool.$ctn.updatePosition();
  }
};
ExpressionInput.prototype.notifySizeCanBeChanged = function () {
  var bound = this.getBoundingClientRect();
  if (!this._prevSize || this._prevSize.width !== bound.width || this._prevSize.height !== bound.height) {
    _ResizeSystem["default"].updateUp(this, true);
  }
  this._prevSize = {
    width: bound.width,
    height: bound.height
  };
};
ExpressionInput.prototype.revokeResource = function () {
  (0, _utils.revokeResource)(this.engine);
  (0, _utils.revokeResource)(this.autoCompleteCtrl);
  (0, _utils.revokeResource)(this.undoMgn);
  (0, _utils.revokeResource)(this.cmdTool);
  (0, _utils.revokeResource)(this.domSignal);
};
ExpressionInput.prototype.focus = function () {
  this.$content.focus();
  this.engine.setSelectedPosition(this.engine.value.length);
};
ExpressionInput.property = {};
ExpressionInput.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
      this.$content.removeAttribute('contenteditable');
    } else {
      this.removeClass('as-read-only');
      if (!this.hasClass('as-disabled')) {
        this.$content.setAttribute('contenteditable', 'true');
      }
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
ExpressionInput.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
      this.$content.removeAttribute('contenteditable');
    } else {
      this.removeClass('as-disabled');
      if (!this.hasClass('as-read-only')) {
        this.$content.setAttribute('contenteditable', 'true');
      }
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
ExpressionInput.property.value = {
  get: function get() {
    return this.engine.value;
  },
  set: function set(value) {
    this.engine.value = value;
    this.undoMgn.reset();
  }
};
ExpressionInput.property.icon = {
  /**
   * @this ExpressionInput
   * @param value
   */
  set: function set(value) {
    if (this.$icon) this.$icon.remove();
    this.$iconCtn.clearChild();
    var elt;
    if ((0, _Dom.isDomNode)(value)) {
      if (value.parentElt) value = value.cloneNode(true);
      elt = value;
    } else if (value && (typeof value === 'string' || _typeof(value) === 'object')) {
      if (value === 'default') value = 'span.mdi.mdi-equal';
      elt = (0, _ACore._)(value);
    }
    if (elt) {
      this.$iconCtn.addChild(elt);
      this.$icon = elt;
      this.addClass('as-has-icon');
    } else {
      this.$icon = null;
      value = null;
      this.removeClass('as-has-icon');
    }
    this._icon = value;
  },
  get: function get() {
    return this._icon;
  }
};

/***
 * @memberOf ExpressionInput#
 * @type {{}}
 */
ExpressionInput.eventHandler = {};
_ACore["default"].install(ExpressionInput);
var _default = ExpressionInput;
/**
 *
 * @param {ExpressionInput} elt
 * @constructor
 */
exports["default"] = _default;
function EIUserActionController(elt) {
  var _this = this;
  this.elt = elt;
  this.$content = elt.$content;
  this._stopChangeTO = -1;
  /**
   *
   * @type {EIEngine}
   */
  this.engine = elt.engine;
  for (var key in this) {
    if (key.startsWith('ev_')) {
      this[key] = this[key].bind(this);
    }
  }
  this.elt.on('stopchange', function () {
    _this.elt.undoMgn.commit();
    _this.elt.engine.highlightError();
  });
  this.$content.on({
    cut: this.ev_cut,
    blur: this.ev_blur,
    focus: this.ev_focus,
    paste: this.ev_paste,
    keydown: this.ev_keydown
  });
}
EIUserActionController.prototype.delayNotifyStopChange = function () {
  if (this._stopChangeTO > 0) {
    clearTimeout(this._stopChangeTO);
  }
  this._stopChangeTO = setTimeout(function () {
    this._stopChangeTO = -1;
    this.elt.emit('stopchange', {}, this.elt);
  }.bind(this), 200);
};
EIUserActionController.prototype.ev_keydown = function (event) {
  var _this2 = this;
  var key = (0, _keyboard.keyboardEventToKeyBindingIdent)(event);
  if (key.match(/^[a-zA-Z0-9]$/)) {
    this.elt.engine.requestRedrawTokens();
    setTimeout(function () {
      _this2.elt.autoCompleteCtrl.openDropdownIfNeed();
      if (_this2.elt.autoCompleteCtrl.isOpen) {
        _this2.elt.autoCompleteCtrl.updateDropDownContent();
      }
    }, 200);
  } else if (key === 'enter') {
    event.preventDefault();
    if (this.elt.autoCompleteCtrl.isSelecting()) {
      this.elt.autoCompleteCtrl.applySelectingSuggestion();
    } else {
      this.engine.breakLine();
    }
  } else if (key === 'arrowleft' || key === 'arrowright' || key.match(/^[^a-zA-Z0-9]$/)) {
    this.elt.autoCompleteCtrl.closeDropdownIfNeed();
  } else if (key === 'arrowup' || key === 'arrowdown') {
    if (this.elt.autoCompleteCtrl.isSelecting()) {
      event.preventDefault();
      this.elt.autoCompleteCtrl.moveSelectingSuggestion(key === 'arrowup' ? 'up' : 'down');
    }
  } else if (key === 'ctrl-space') {
    this.engine.redrawTokens();
    this.elt.autoCompleteCtrl.openDropdown();
  } else if (key === 'escape') {
    if (this.elt.autoCompleteCtrl.isOpen) {
      this.elt.autoCompleteCtrl.closeDropdown();
      event.preventDefault();
    }
  } else if (key === 'ctrl-z') {
    event.preventDefault();
    this.elt.undoMgn.undo();
  } else if (key === 'ctrl-y') {
    event.preventDefault();
    this.elt.undoMgn.redo();
  } else if (event.ctrlKey && event.key === 'X' || !event.ctrlKey && event.key.length === 1 || event.key === 'Delete' || event.key === 'Backspace') {
    this.elt.engine.requestRedrawTokens();
    setTimeout(function () {
      _this2.elt.autoCompleteCtrl.openDropdownIfNeed();
      if (_this2.elt.autoCompleteCtrl.isOpen) {
        _this2.elt.autoCompleteCtrl.updateDropDownContent();
      }
    }, 200);
  }
  this.delayNotifyStopChange();
  setTimeout(function () {
    _this2.elt.notifySizeCanBeChanged();
  }, 1);
};
EIUserActionController.prototype.ev_paste = function (event) {
  var paste = (event.clipboardData || window.clipboardData).getData('text');
  paste = paste.replace(/[\r\n]+/g, ' ');
  event.preventDefault();
  var pos = this.elt.engine.getSelectPosition();
  if (!pos || !paste) return;
  var value = this.elt.value;
  this.elt.engine.value = value.substring(0, pos.start) + paste + value.substring(pos.end);
  this.elt.engine.setSelectedPosition(pos.start + paste.length);
  this.elt.engine.highlightError();
  this.elt.notifySizeCanBeChanged();
};
EIUserActionController.prototype.ev_cut = function (event) {
  this.elt.domSignal.emit('redrawTokens');
  this.delayNotifyStopChange();
  this.elt.notifySizeCanBeChanged();
};
EIUserActionController.prototype.ev_focus = function (event) {
  this.elt.engine.clearErrorHighlight();
  setTimeout(function () {
    //todo
    this.elt.engine.getSelectPosition();
  }.bind(this), 100);
};
EIUserActionController.prototype.ev_blur = function (event) {
  this.elt.engine.highlightError();
};
EIUserActionController.prototype.ev_dragInit = function (event) {};

/**
 *
 * @param {ExpressionInput} elt
 * @constructor
 */
function EIEngine(elt) {
  this.elt = elt;
  this.lastSelectedPosition = {
    start: 0,
    end: 0,
    direction: 'forward'
  };
  this.$content = elt.$content;
  /**
   *
   * @type {null|Range}
   */
  this.range = null;
  this.elt.domSignal.on('redrawTokens', this.redrawTokens.bind(this));
  for (var key in this) {
    if (key.startsWith('ev_')) {
      this[key] = this[key].bind(this);
    }
  }
  this._isListenSelectionChange = false;
  this.$content.on('focus', this.ev_focus);
}
EIEngine.prototype.ev_focus = function () {
  if (!this._isListenSelectionChange) {
    document.addEventListener('selectionchange', this.ev_range);
    this._isListenSelectionChange = true;
  }
};
EIEngine.prototype.ev_range = function () {
  if (!this.elt.isDescendantOf(document.body)) {
    document.removeEventListener('selectionchange', this.ev_range);
    this._isListenSelectionChange = false;
  }
  this.updateRange();
};
EIEngine.prototype.revokeResource = function () {
  if (this._isListenSelectionChange) {
    document.removeEventListener('selectionchange', this.ev_range);
    this._isListenSelectionChange = false;
  }
};
EIEngine.prototype.requestRedrawTokens = function () {
  this.elt.domSignal.emit('redrawTokens');
};
EIEngine.prototype.highlightError = function () {
  var elt = this.elt;
  var contentElt = this.$content;
  var value = elt.value.trim();
  var it = EIParser.parse(value, 'exp');
  var i,
    notSkipCount = 0;
  var tokenErrorIdx = -1;
  if (value && it.error) {
    elt.addClass('as-error');
    elt.attr('title', it.error.message);
    tokenErrorIdx = it.error.tokenIdx;
  } else {
    elt.removeClass('as-error');
  }
  for (i = 0; i < contentElt.childNodes.length; ++i) {
    //todo: fix conflict (run before redraw)
    if (contentElt.childNodes[i].getAttribute && contentElt.childNodes[i].classList.contains('as-token') && contentElt.childNodes[i].getAttribute('data-type') !== 'skip') {
      if (notSkipCount === tokenErrorIdx) {
        contentElt.childNodes[i].classList.add('as-unexpected-token');
      } else {
        contentElt.childNodes[i].classList.remove('as-unexpected-token');
      }
      notSkipCount++;
    }
  }
};
EIEngine.prototype.clearErrorHighlight = function () {
  var contentElt = this.$content;
  for (var i = 0; i < contentElt.length; ++i) {
    if (contentElt.childNodes[i].classList.contains('as-token') && contentElt.childNodes[i].getAttribute('data-type') !== 'skip') {
      contentElt.childNodes[i].classList.remove('as-unexpected-token');
    }
  }
};
EIEngine.prototype.drawTokensContent = function () {
  var selectedPos = this.getSelectPosition();
  var value = this.value;
  var tokens = EIParser.tokenizer.tokenize(value);
  var tokenEltChain = Array.prototype.slice.call(this.$content.childNodes);
  while (tokenEltChain[tokenEltChain.length - 1] && tokenEltChain[tokenEltChain.length - 1].tagName === 'BR') {
    tokenEltChain.pop();
  }
  var leftPassed = 0;
  while (leftPassed < tokenEltChain.length && leftPassed < tokens.length) {
    if (!tokenEltChain[leftPassed].firstChild || !tokenEltChain[leftPassed].classList.contains('as-token') || tokens[leftPassed].content !== tokenEltChain[leftPassed].firstChild.data) break;
    if (!tokenEltChain[leftPassed].token || tokenEltChain[leftPassed].getAttribute('data-type') !== tokens[leftPassed].type) {
      tokenEltChain[leftPassed].setAttribute('data-type', tokens[leftPassed].type);
    }
    leftPassed++;
  }
  var rightPassed = 0;
  while (rightPassed < tokenEltChain.length && rightPassed < tokens.length) {
    if (!tokenEltChain[tokenEltChain.length - 1 - rightPassed].firstChild || !tokenEltChain[tokenEltChain.length - 1 - rightPassed].classList.contains('as-token') || tokens[tokens.length - 1 - rightPassed].content !== tokenEltChain[tokenEltChain.length - 1 - rightPassed].firstChild.data) break;
    if (tokenEltChain[tokenEltChain.length - 1 - rightPassed].getAttribute('data-type') !== tokens[tokens.length - 1 - rightPassed].type) {
      tokenEltChain[tokenEltChain.length - 1 - rightPassed].setAttribute('data-type', tokens[tokens.length - 1 - rightPassed].type);
    }
    rightPassed++;
  }
  var beforeToken;
  if (leftPassed + rightPassed < Math.max(tokenEltChain.length, tokens.length)) {
    beforeToken = tokenEltChain[tokenEltChain.length - rightPassed];
    tokenEltChain.splice(leftPassed, tokenEltChain.length - leftPassed - rightPassed).forEach(function (elt) {
      elt.remove();
    });
    tokens.slice(leftPassed, tokens.length - rightPassed).forEach(function (token) {
      var tokenElt = this.makeTokenElt(token);
      if (beforeToken) {
        this.$content.addChildBefore(tokenElt, beforeToken);
      } else {
        this.$content.addChild(tokenElt);
      }
    }.bind(this));
  }
  if (selectedPos) this.setSelectedPosition(selectedPos);
};
EIEngine.prototype.updateTokenExType = function () {
  /**
   * @type {HTMLElement[]}
   */

  var tokenEltChain = Array.prototype.slice.call(this.$content.childNodes);
  var token, nextToken;
  var i, j;
  for (i = 0; i < tokenEltChain.length; ++i) {
    token = tokenEltChain[i];
    if (this.isTextNode(token)) continue;
    if (token.innerText === "true" || token.innerText === "false") {
      token.setAttribute('data-ex-type', 'boolean');
    } else if (token.getAttribute('data-type') === 'word') {
      j = i + 1;
      nextToken = tokenEltChain[i + 1];
      while (nextToken) {
        if (nextToken.getAttribute('data-type') === 'symbol' && nextToken.innerText === '(') {
          token.setAttribute('data-ex-type', 'function');
          break;
        } else if (nextToken.getAttribute('data-type') === 'skip') {
          nextToken = tokenEltChain[++j];
        } else {
          break;
        }
      }
    } else {
      token.removeAttribute('data-ex-type');
    }
  }
};
EIEngine.prototype.redrawTokens = function () {
  this.drawTokensContent();
  this.updateTokenExType();
  this.elt.notifySizeCanBeChanged();
};

/**
 *
 * @param {{type: string, content: string}} token
 * @returns {*}
 */
EIEngine.prototype.makeTokenElt = function (token) {
  if (token.content === '\n') return (0, _ACore._)('br');
  return (0, _ACore._)({
    tag: 'span',
    "class": ['as-token'],
    attr: {
      'data-type': token.type
    },
    child: {
      text: token.content
    }
  });
};
EIEngine.prototype.insertText = function (text) {
  var lastPos = this.getSelectPosition();
  var value;
  if (this.lastSelectedPosition) {
    value = this.elt.value;
    this.value = value.substring(0, lastPos.start) + text + value.substring(lastPos.end);
    this.lastSelectedPosition = Object.assign({
      direction: 'forward',
      start: lastPos.start + text.length,
      end: lastPos.start + text.length
    });
    if (document.activeElement === this.elt.$content) {
      this.setSelectedPosition(this.lastSelectedPosition);
    }
  } else this.appendText(text);
  this.elt.userActionCtrl.delayNotifyStopChange();
};
EIEngine.prototype.appendText = function (text) {
  var newValue = this.value + text;
  this.value = newValue;
  if (document.activeElement === this.$content) {
    this.setSelectedPosition(newValue.length);
  }
  this.elt.userActionCtrl.delayNotifyStopChange();
};
EIEngine.prototype.isValidRange = function (range) {
  return _AElement["default"].prototype.isDescendantOf.call(range.startContainer, this.$content) && _AElement["default"].prototype.isDescendantOf.call(range.endContainer, this.$content);
};
EIEngine.prototype.updateRange = function () {
  var sel = window.getSelection();
  var range;
  for (var i = 0; i < sel.rangeCount; ++i) {
    range = sel.getRangeAt(i);
    if (this.isValidRange(range)) this.range = range;
  }
};
EIEngine.prototype.isTextNode = function (node) {
  return node.nodeType === Node.TEXT_NODE;
};
EIEngine.prototype.isWordToken = function (node) {
  if (this.isTextNode(node)) return false;
  return node.getAttribute('data-type') === 'word';
};
EIEngine.prototype.isSymbolToken = function (node) {
  if (this.isTextNode(node)) return false;
  return node.getAttribute('data-type') === 'symbol';
};
EIEngine.prototype.isMemberSymbolToken = function (node) {
  return this.isSymbolToken(node) && node.innerText === '->';
};
EIEngine.prototype.isSkipToken = function (node) {
  if (this.isTextNode(node)) return false;
  return node.getAttribute('data-type') === 'skip';
};
EIEngine.prototype.getRange = function () {
  this.updateRange();
  return this.range;
};

/**
 *
 * @param {Range} range
 */
EIEngine.prototype.setRange = function (range) {
  this.range = range;
  var sel = window.getSelection();
  sel.removeAllRanges();
  sel.addRange(range);
};
EIEngine.prototype.childIndexOf = function (node) {
  if (!node.parentElement) return 0;
  return Array.prototype.indexOf.call(node.parentElement.childNodes, node);
};
EIEngine.prototype.lcaOf = function (nd1, nd2) {
  var track1 = [];
  var track2 = [];
  var rootNode = this.elt;
  while (nd1 && nd1 !== rootNode) {
    track1.unshift(nd1);
    nd1 = nd1.parentElement;
  }
  while (nd2 && nd2 !== rootNode) {
    track2.unshift(nd2);
    nd2 = nd2.parentElement;
  }
  var res = null;
  for (var i = 0; i < track1.length && i < track2.length; ++i) {
    if (track1[i] === track2[i]) res = track1[i];else break;
  }
  return res;
};
EIEngine.prototype.trimLeft = function (nd, ofs) {
  if (this.isTextNode(nd)) {
    nd.data = nd.data.substring(ofs);
  } else {
    for (var i = 0; i < ofs; ++i) {
      nd.removeChild(nd.firstChild);
    }
  }
};
EIEngine.prototype.trimRight = function (nd, ofs) {
  if (this.isTextNode(nd)) {
    nd.data = nd.data.substring(0, ofs);
  } else {
    while (nd.childNodes.length > ofs) {
      nd.removeChild(nd.lastChild);
    }
  }
};
EIEngine.prototype.breakTextNode = function (textNode, offset) {
  var parent = (0, _ACore.$)(textNode.parentElement);
  var text = textNode.data;
  var newTextNode = (0, _ACore._)({
    text: text.substring(offset)
  });
  textNode.data = text.substring(0, offset);
  parent.addChildAfter(newTextNode, textNode);
  return newTextNode;
};
EIEngine.prototype.breakElement = function (elt, offset) {
  var parent = (0, _ACore.$)(elt.parentElement);
  var newElt = elt.cloneNode(false);
  var rightChildren = Array.prototype.slice.call(elt.childNodes, offset);
  for (var i = 0; i < rightChildren.length; ++i) {
    newElt.appendChild(rightChildren[i]);
  }
  parent.addChildAfter(newElt, elt);
  return newElt;
};
EIEngine.prototype.breakNode = function (node, offset) {
  if (this.isTextNode(node)) {
    return this.breakTextNode(node, offset);
  } else {
    return this.breakElement(node, offset);
  }
};
EIEngine.prototype.breakLine = function () {
  var range = this.getRange();
  if (!range) return;
  var startCtn = range.startContainer;
  var endCtn = range.endContainer;
  var startOfs = range.startOffset;
  var endOfs = range.endOffset;
  var newNd;
  var lcaNd = this.lcaOf(startCtn, endCtn);
  while (startCtn !== lcaNd) {
    this.trimRight(startCtn, startOfs);
    startOfs = this.childIndexOf(startCtn) + 1;
    startCtn = startCtn.parentElement;
  }
  while (endCtn !== lcaNd) {
    this.trimLeft(endCtn, endOfs);
    endOfs = this.childIndexOf(endCtn);
    endCtn = endCtn.parentElement;
  }
  if (this.isTextNode(startCtn)) {
    newNd = startCtn.parentElement.cloneNode(false);
    newNd.appendChild((0, _ACore._)({
      text: startCtn.data.substring(0, startOfs)
    }));
    startCtn.parentElement.parentElement.insertBefore(newNd, startCtn.parentElement);
    startCtn.data = startCtn.data.substring(endOfs);
    newNd = (0, _ACore._)('br');
    startCtn.parentElement.parentElement.insertBefore(newNd, startCtn.parentElement);
    startCtn = newNd.parentElement;
    startOfs = this.childIndexOf(newNd) + 1;
    endCtn = startCtn;
    endOfs = startOfs;
  } else if (startCtn === this.$content) {
    Array.prototype.slice.call(startCtn.childNodes, startOfs, endOfs - 1).forEach(function (nd) {
      return nd.remove();
    });
    newNd = (0, _ACore._)('br');
    startCtn.insertBefore(newNd, startCtn.childNodes[startOfs]);
    endOfs = startOfs + 1;
    startOfs = endOfs;
  } else {
    endCtn = this.breakElement(startCtn, startOfs);
    endOfs -= startCtn;
    if (endOfs >= 0) {
      newNd = this.breakElement(endCtn, endOfs);
      endCtn.remove();
      endCtn = newNd;
      endOfs = 0;
    }
    newNd = (0, _ACore._)('br');
    endCtn.parentElement.insertBefore(newNd, endCtn);
    startCtn = newNd.parentElement;
    startOfs = this.childIndexOf(newNd) + 1;
    endCtn = startCtn;
    endOfs = startOfs;
  }
  var childNodes = Array.prototype.slice.call(this.$content.childNodes);
  var nd;
  for (var i = 0; i < childNodes.length; ++i) {
    nd = childNodes[i];
    if (nd.tagName === 'BR') continue;
    if (this.stringOf(nd).length === 0) {
      if (_AElement["default"].prototype.isDescendantOf.call(startCtn, nd)) {
        startCtn = this.$content;
        startOfs = this.childIndexOf(nd);
      }
      if (_AElement["default"].prototype.isDescendantOf.call(endCtn, nd)) {
        endCtn = this.$content;
        endOfs = this.childIndexOf(nd);
      }
      nd.remove();
    }
  }
  range = document.createRange();
  range.setStart(startCtn, startOfs);
  range.setEnd(endCtn, endOfs);
  this.setRange(range);
};
EIEngine.prototype.domRange2SelectPosition = function (range) {
  var sel = window.getSelection();
  if (!range) return null;
  var direction = 'forward';
  if (!range) return null;
  var cmpPosition = sel.anchorNode.compareDocumentPosition(sel.focusNode);
  if (cmpPosition === 4) {
    direction = 'forward';
  } else if (cmpPosition === 2) {
    direction = 'backward';
  } else if (!cmpPosition && sel.anchorOffset > sel.focusOffset || cmpPosition === Node.DOCUMENT_POSITION_PRECEDING) {
    direction = 'backward';
  }
  var startOffset = this.getPosition(range.startContainer, range.startOffset);
  var endOffset = this.getPosition(range.endContainer, range.endOffset);
  if (isNaN(startOffset)) return null;
  return {
    start: startOffset,
    end: endOffset,
    direction: direction,
    startCtn: range.startContainer,
    startOffset: range.startOffset,
    endCtn: range.endContainer,
    endOffset: range.endOffset
  };
};
EIEngine.prototype.getSelectPosition = function () {
  var range = this.getRange();
  this.lastSelectedPosition = this.domRange2SelectPosition(range) || this.lastSelectedPosition;
  return this.lastSelectedPosition;
};

/**
 *
 * @param  {null|number|{start: number, end: number}=}pos
 */
EIEngine.prototype.setSelectedPosition = function (pos) {
  var _this3 = this;
  var start;
  var end;
  if (typeof pos === "number") {
    start = pos;
    end = pos;
  } else if (pos === null) {
    return;
  } else {
    start = pos.start;
    end = pos.end;
  }
  var startCtn, startOfs, endCtn, endOfs;
  var text;
  text = '';
  var visit = function visit(nd) {
    var prevText = text;
    var parent = nd.parentElement;
    if (_this3.isTextNode(nd)) {
      text += nd.data;
      if (text.length > start && prevText.length <= start) {
        startCtn = nd;
        startOfs = start - prevText.length;
      }
      if (text.length > end && prevText.length <= end) {
        endCtn = nd;
        endOfs = end - prevText.length;
      }
    } else if (nd.tagName === 'BR' && parent && parent.lastChild !== nd) {
      text += '\n';
      if (text.length > start && prevText.length <= start) {
        startCtn = parent;
        startOfs = _this3.childIndexOf(nd);
      }
      if (text.length > end && prevText.length <= end) {
        endCtn = parent;
        endOfs = _this3.childIndexOf(nd);
      }
    } else {
      for (var i = 0; i < nd.childNodes.length; ++i) {
        visit(nd.childNodes[i]);
      }
    }
  };
  visit(this.$content);
  if (!startCtn) {
    startCtn = this.$content;
    startOfs = this.$content.childNodes.length;
  }
  if (!endCtn) {
    endCtn = startCtn;
    endOfs = startOfs;
  }
  var range = document.createRange();
  range.setStart(startCtn, startOfs);
  range.setEnd(endCtn, endOfs);
  this.setRange(range);
};
EIEngine.prototype.getPosition = function (node, offset) {
  var _this4 = this;
  var text = '';
  var found = false;
  var visit = function visit(nd) {
    var i;
    if (found) return;
    if (nd === node) {
      if (_this4.isTextNode(nd)) {
        text += nd.data.substring(0, offset);
      } else {
        for (i = 0; i < nd.childNodes.length && i < offset; ++i) {
          visit(nd.childNodes[i]);
        }
      }
      found = true;
      return;
    }
    var parent = nd.parentElement;
    if (nd.tagName === 'BR' && parent && parent.lastChild !== nd) {
      text += '\n';
    }
    if (_this4.isTextNode(nd)) {
      text += nd.data;
    } else {
      for (i = 0; i < nd.childNodes.length && !found; ++i) {
        visit(nd.childNodes[i]);
      }
    }
  };
  visit(this.$content);
  return text.length;
};
EIEngine.prototype.stringOf = function (node) {
  var _this5 = this;
  if (!node) return '';
  if (node.nodeType === 3) {
    return node.data;
  }
  var res = '';
  var parent = node.parentElement;
  if ((node.tagName === 'BR' || node.tagName === 'br') && parent && parent.lastChild !== node) {
    return '\n';
  } else if ((node.tagName === 'DIV' || node.tagName === 'div') && parent && parent.firstChild !== node) {
    res += '\n';
  }
  return res + Array.prototype.map.call(node.childNodes, function (cNode, index, arr) {
    return _this5.stringOf(cNode, node);
  }).join('');
};

/**
 *
 * @param offset
 * @returns {AElement}
 */
EIEngine.prototype.tokenAt = function (offset) {
  var l = 0;
  var res = null;
  var nd, i;
  for (i = 0; i < this.$content.childNodes.length; ++i) {
    nd = this.$content.childNodes[i];
    l += this.stringOf(nd).length;
    if (l > offset || i + 1 === this.$content.childNodes.length && l === offset) {
      res = nd;
      break;
    }
  }
  return res;
};

/**
 *
 * @param {AElement}token
 * @returns {AElement}
 */
EIEngine.prototype.findPrefixWordTokenOf = function (token) {
  if (!token) return null;
  if (!this.isWordToken(token) && this.stringOf(token) !== '->') return null;
  var temp = token;
  var prefixStartElt = null;
  var state = this.isWordToken(temp) ? 0 : 1; //0: after is word, 1: symbol
  temp = temp.previousSibling;
  while (temp) {
    if (this.isSkipToken(temp)) {
      temp = temp.previousSibling;
      continue;
    }
    if (state === 0) {
      if (this.stringOf(temp) === '->') {
        state = 1;
      } else break;
    } else {
      if (this.isWordToken(temp)) {
        prefixStartElt = temp;
        state = 0;
      } else break;
    }
    temp = temp.previousSibling;
  }
  return prefixStartElt || null;
};

//
// EIEngine.prototype.selectCurrentMemberExpression = function () {
//     var rage = this.getRange();
//     if (!rage) return;
//     var startCtn = rage.startContainer;
//     var endCtn = rage.endContainer;
//     var startOfs = rage.startOffset;
//     var endOfs = rage.endOffset;
//
// };

Object.defineProperty(EIEngine.prototype, 'value', {
  get: function get() {
    var _this6 = this;
    return Array.prototype.map.call(this.$content.childNodes, function (nd) {
      return _this6.stringOf(nd);
    }).join('');
  },
  set: function set(value) {
    var tokens = EIParser.tokenizer.tokenize(value || '');
    this.$content.clearChild().addChild(tokens.map(function (token) {
      return this.makeTokenElt(token);
    }.bind(this)));
    this.updateTokenExType();
    this.lastSelectedPosition = {
      start: value.length,
      end: value.length,
      direction: 'forward'
    };
  }
});

/**
 *
 * @param {ExpressionInput} elt
 * @constructor
 */
function EIUndoManager(elt) {
  this.elt = elt;
  this.reset();
}

/**
 *
 * @returns {boolean} is changed value and commit success
 */
EIUndoManager.prototype.commit = function () {
  var text = this.elt.value;
  var range = this.elt.engine.getSelectPosition() || {
    start: text.length,
    end: text.length
  };
  var curValue = this.stack[this.idx].value;
  if (curValue === text) return false;
  var newItem = {
    value: text,
    range: {
      start: range.start,
      end: range.end,
      direction: range.direction || 'forward'
    }
  };
  while (this.stack.length > this.idx + 1) {
    this.stack.pop();
  }
  this.idx = this.stack.length;
  this.stack.push(newItem);
  return true;
};
EIUndoManager.prototype.reset = function () {
  var value = this.elt.value;
  this.stack = [{
    value: value,
    range: {
      start: value.length,
      end: value.length,
      direction: "forward"
    }
  }];
  this.idx = 0;
};
EIUndoManager.prototype.undo = function () {
  if (this.idx <= 0) return;
  this.idx--;
  var item = this.stack[this.idx];
  this.elt.engine.value = item.value;
  this.elt.engine.setSelectedPosition(item.range);
};
EIUndoManager.prototype.redo = function () {
  if (this.idx + 1 >= this.stack.length) return;
  this.idx++;
  var item = this.stack[this.idx];
  this.elt.engine.value = item.value;
  this.elt.engine.setSelectedPosition(item.range);
};

/**
 *
 * @param {ExpressionInput} elt
 * @constructor
 */
function EIAutoCompleteController(elt) {
  this.elt = elt;
  this.$content = elt.$content;
  this.$tokenTarget = null;
  for (var key in this) {
    if (key.startsWith('ev_')) {
      this[key] = this[key].bind(this);
    }
  }
  this.rawSuggestionCache = {
    value: null,
    time: 0
  };

  /**
   *
   * @type {EISuggestionList |null}
   */
  this.$suggestionList = null;
  this.query = null;
  this.isOpen = false;
  this.dropIsDown = true;
}
EIAutoCompleteController.prototype.revokeResource = function () {};
EIAutoCompleteController.prototype.openDropdownIfNeed = function () {
  if (this.isOpen) return;
  var query = this.getCurrentSearch();
  if (query && query.value && query.value.trim()) {
    this.openDropdown();
  }
};

/**
 *
 */
EIAutoCompleteController.prototype.openDropdown = function () {
  var _this7 = this;
  if (this.isOpen) {
    this.updateDropDownContent();
    return;
  }
  if (!this.hasSuggestions()) return;
  this.isOpen = true;
  this.dropIsDown = true;
  if (!this.$suggestionList) {
    this.$suggestionList = (0, _ACore._)({
      tag: EISuggestionList,
      style: {
        top: '10px',
        left: '10px',
        position: 'fixed'
      },
      on: {
        select: function select(event) {
          _this7.applySuggestion(event.data);
          _this7.closeDropdown();
        }
      }
    });
  }
  this.$suggestionList.addTo(this.elt);
  var zIndex = (0, _utils.findMaxZIndex)(this.elt) + 1;
  this.$suggestionList.addStyle('z-index', zIndex + '');
  this.$suggestionList.reset();
  this.elt.startTrackPosition();

  // this.$dropDown.addTo(this.elt);

  this.$tokenTarget = null;
  this.updateDropDownContent();
  this.updateDropDownPosition();
  setTimeout(function () {
    document.addEventListener('click', _this7.ev_clickOut);
  }, 200);
};
EIAutoCompleteController.prototype.closeDropdown = function () {
  if (!this.isOpen) return;
  this.isOpen = false;
  this.elt.stopTrackPosition();
  this.$suggestionList.remove();
  document.removeEventListener('click', this.ev_clickOut);
};

/**
 *
 * @returns {null|{prefix: string, value, tokenElt: HTMLElement, prefixStartElt: HTMLElement}}
 */
EIAutoCompleteController.prototype.getCurrentSearch = function () {
  var engine = this.elt.engine;
  var pos = this.elt.engine.getSelectPosition();
  if (!pos) return null; //all
  var tokenElt = this.elt.engine.tokenAt(pos.start);
  if (!tokenElt) return null;
  if (!engine.isWordToken(tokenElt)) {
    tokenElt = tokenElt.previousSibling;
  }
  if (!tokenElt) return null;
  var temp = tokenElt;
  while (temp) {
    if (engine.isSymbolToken(temp)) {
      if (engine.stringOf(temp) === '->') {
        tokenElt = temp;
      } else {
        break;
      }
    } else if (engine.isSkipToken(temp)) {} else if (engine.isWordToken(temp)) {
      tokenElt = temp;
    }
    temp = temp.nextSibling;
  }
  if (!engine.isWordToken(tokenElt) && !engine.isMemberSymbolToken(tokenElt)) return null;
  var res = {
    prefix: '',
    value: '',
    tokenElt: null,
    prefixStartElt: null
  };
  temp = tokenElt;
  var prefixStartElt = engine.findPrefixWordTokenOf(tokenElt);
  res.value = engine.stringOf(tokenElt);
  res.tokenElt = tokenElt;
  if (prefixStartElt) {
    res.prefixStartElt = prefixStartElt;
    temp = prefixStartElt;
    while (temp !== tokenElt) {
      if (engine.isSkipToken(temp)) {
        temp = temp.nextSibling;
        continue;
      }
      res.prefix += engine.stringOf(temp);
      temp = temp.nextSibling;
    }
  }
  return res;
};
EIAutoCompleteController.prototype.getCurrentText = function () {
  var pos = this.elt.engine.getSelectPosition();
  if (!pos) return '';
  var res = {
    value: '',
    tokenElt: null
  };
  var tokenElt = this.elt.engine.tokenAt(pos.start);
  if (!tokenElt || !tokenElt.getAttribute || tokenElt.getAttribute('data-type') !== 'word') {
    res.tokenElt = tokenElt;
    res.value = '';
    tokenElt = null;
  }
  if (!tokenElt && pos && pos.start > 0) {
    tokenElt = this.elt.engine.tokenAt(pos.start - 1);
  }
  if (tokenElt && tokenElt.getAttribute && tokenElt.getAttribute('data-type') === 'word') {
    res.value = tokenElt.innerText;
    res.tokenElt = tokenElt;
  }
  console.log(res);
  return res;
};
EIAutoCompleteController.prototype.updateDropDownContent = function () {
  if (!this.isOpen) return;
  this.query = this.getCurrentSearch();
  this.$suggestionList.data = this.getSuggestionTree(this.query);
  this.$suggestionList.selectMaxScoreItem();
  this.updateDropDownPosition();
};
EIAutoCompleteController.prototype.updateDropDownPosition = function () {
  if (!this.isOpen) return;
  var bound;
  var targetELt = this.query && this.query.tokenElt;
  var range = this.elt.engine.getRange();
  var selected = this.elt.engine.getSelectPosition();
  var dropBound = this.$suggestionList.getBoundingClientRect();
  if (targetELt) {
    bound = targetELt.getBoundingClientRect();
  }
  if (!bound) {
    bound = range.getBoundingClientRect();
    if (!bound.width || !bound.height) bound = null;
  }
  if (!bound && selected) {
    targetELt = this.elt.engine.tokenAt(selected.start);
    if (targetELt) {
      bound = targetELt.getBoundingClientRect();
    }
  }
  if (!bound) {
    bound = this.elt.$content.getBoundingClientRect();
  }
  var screenHeight = (0, _Dom.getScreenSize)().height;
  var aTop = bound.top - 10;
  var aBottom = screenHeight - bound.bottom - 10;
  var contentHeight = this.$suggestionList.scrollHeight;
  if (this.dropIsDown) {
    if (aBottom < contentHeight && aBottom <= aTop) {
      this.dropIsDown = false;
    }
  } else {
    if (aTop < contentHeight && aTop <= aBottom) {
      this.dropIsDown = true;
    }
  }
  var screenSize = (0, _Dom.getScreenSize)();
  this.$suggestionList.addStyle('left', Math.max(0, Math.min(bound.left, screenSize.width - dropBound.width)) + 'px');
  this.$suggestionList.addStyle('max-height', this.dropIsDown ? aBottom + 'px' : aTop + 'px');
  var listBound;
  if (this.dropIsDown) {
    this.$suggestionList.addStyle('top', bound.bottom + 'px');
  } else {
    listBound = this.$suggestionList.getBoundingClientRect();
    this.$suggestionList.addStyle('top', bound.top - listBound.height + 'px');
  }
};
EIAutoCompleteController.prototype.getRawSuggestion = function () {
  var now = Date.now();
  if (now - this.rawSuggestionCache.time < 3000) {
    return this.rawSuggestionCache.value;
  }
  var variables = [];
  var functions = [];
  var temp;
  if (this.elt.autocomplete) {
    temp = this.elt.autocomplete.variables;
    if (typeof temp === "function") temp = temp();
    if (Array.isArray(temp)) {
      temp = temp.filter(function (x) {
        return typeof x === 'string';
      });
      variables = variables.concat(temp);
    }
    temp = this.elt.autocomplete.functions;
    if (typeof temp === "function") temp = temp();
    if (Array.isArray(temp)) {
      temp = temp.filter(function (x) {
        return typeof x === 'string';
      });
      functions = functions.concat(temp);
    }
    if (this.elt.sampleJS && typeof this.elt.sampleJS.getFunctions === "function") {
      temp = this.elt.sampleJS.getFunctions();
      if (Array.isArray(temp)) {
        temp = temp.filter(function (x) {
          return typeof x === 'string';
        });
        functions = functions.concat(temp);
      }
    }
  }
  variables = (0, _Array.arrayUnique)(variables);
  functions = (0, _Array.arrayUnique)(functions);
  this.rawSuggestionCache.value = {
    variables: variables,
    functions: functions
  };
  this.rawSuggestionCache.time = now;
  return this.rawSuggestionCache.value;
};
EIAutoCompleteController.prototype.hasSuggestions = function () {
  var rawSuggestions = this.getRawSuggestion();
  return rawSuggestions.variables.length > 0 || rawSuggestions.functions.length > 0;
};

/**
 *
 * @param {string} text
 * @param {string} prefix
 */
EIAutoCompleteController.prototype.getSuggestionList = function (text, prefix) {
  var res = [];
  prefix = prefix || '';
  text = text || '';
  text = text.toLowerCase();
  var rawSuggestion = this.getRawSuggestion();
  var variables = rawSuggestion.variables;
  var functions = rawSuggestion.functions;
  var i;
  var itemText, score;
  for (i = 0; i < variables.length; ++i) {
    itemText = variables[i];
    score = (0, _stringMatching.phraseMatch)(itemText.toLowerCase(), text);
    res.push({
      text: itemText,
      score: score,
      type: 'variable'
    });
  }
  for (i = 0; i < functions.length; ++i) {
    itemText = functions[i];
    score = (0, _stringMatching.phraseMatch)(itemText.toLowerCase(), text);
    res.push({
      text: itemText,
      score: score,
      type: 'function'
    });
  }
  res.sort(function (a, b) {
    if (a.score === b.score) {
      return a.text > b.text ? 1 : -1;
    }
    return b.score - a.score;
  });
  if (text) res = res.filter(function (x) {
    return x.score > 0;
  });
  return res;
};
EIAutoCompleteController.prototype.computeScore = function (queryWords, itemWords) {
  if (queryWords.length === 0) return 1;
  queryWords = queryWords.map(function (x) {
    return x.toLowerCase();
  });
  itemWords = itemWords.map(function (x) {
    return x.toLowerCase();
  });
  var score = 0;
  var wordScore = 1 / queryWords.length;
  var i, j;
  for (i = 0; i < queryWords.length && i < itemWords.length; ++i) {
    if (queryWords[i] === itemWords[i]) {
      score += wordScore;
    } else {
      score += wordScore * (0, _stringMatching.wordLike)(queryWords[i], itemWords[i]);
    }
  }
  var qDict = queryWords.reduce(function (ac, cr) {
    ac[cr] = true;
    return ac;
  }, {});
  var iDict = itemWords.reduce(function (ac, cr) {
    ac[cr] = true;
    return ac;
  }, {});
  var bestMatch, bestWord, curWordScore;
  queryWords = Object.keys(qDict);
  itemWords = Object.keys(iDict);
  for (i = 0; i < queryWords.length; ++i) {
    bestMatch = 0;
    bestWord = '';
    for (j = 0; j < itemWords.length; ++j) {
      if (queryWords[i] === itemWords[j]) {
        bestMatch = wordScore;
        bestWord = itemWords[j];
        break;
      } else {
        curWordScore = wordScore * (0, _stringMatching.wordLike)(queryWords[i], itemWords[j]);
        if (curWordScore > bestMatch) {
          bestMatch = curWordScore;
          bestWord = itemWords[j];
        }
      }
    }
    if (bestWord) {
      iDict[bestWord] = false;
      score += bestMatch;
    }
  }
  return score;
};
EIAutoCompleteController.prototype.getSuggestionTree = function (query) {
  var splitWords = function splitWords(text) {
    return text.split(/[^a-zA-Z0-9_$]+/).filter(function (x) {
      return x.length > 0;
    });
  };
  var queryWords = query ? splitWords(query.prefix + ' ' + query.value) : [];
  var rawSuggestion = this.getRawSuggestion();
  var variables = rawSuggestion.variables;
  var functions = rawSuggestion.functions;
  var items = [];
  var item;
  var i;
  for (i = 0; i < variables.length; ++i) {
    items.push({
      text: variables[i],
      type: 'variable',
      words: splitWords(variables[i])
    });
  }
  for (i = 0; i < functions.length; ++i) {
    items.push({
      text: functions[i],
      type: 'function',
      words: splitWords(functions[i])
    });
  }
  var min = Infinity,
    max = -Infinity;
  for (i = 0; i < items.length; ++i) {
    item = items[i];
    item.score = this.computeScore(queryWords, item.words);
    if (item.score < min) min = item.score;
    if (item.score > max) max = item.score;
  }
  var idx;
  if (query) {
    for (i = 0; i < items.length; ++i) {
      item = items[i];
      idx = item.text.toLowerCase().indexOf(query.value.toLowerCase());
      if (idx >= 0) item.score = max - idx / 1000;
    }
  }
  items.sort(function (a, b) {
    return b.score - a.score;
  });
  var mid = (max + min) / 2;
  items = items.filter(function (x) {
    return x.score >= mid;
  });
  var trees = [];
  var nodeDict = {
    "*": {
      text: "",
      children: trees
    }
  };
  items.forEach(function (item) {
    var words = item.words;
    var k;
    var key = '';
    var nd;
    var parent = nodeDict['*'];
    for (k = 0; k < words.length; ++k) {
      if (k > 0) key += '->';
      key += words[k];
      nd = nodeDict[key];
      if (!nd) {
        nd = {
          text: words[k],
          children: [],
          key: key,
          score: 0
        };
        nodeDict[key] = nd;
        parent.children.push(nd);
      }
      parent = nd;
    }
    parent.item = item;
    parent.score = item.score;
  });
  return trees;
};
EIAutoCompleteController.prototype.applySuggestion = function (suggestion) {
  var engine = this.elt.engine;
  var query = this.query;
  var key = suggestion.key;
  var words = key.split('->');
  var startToken = query && query.prefixStartElt;
  var endToken = query && query.tokenElt;
  startToken = startToken || endToken;
  var range;
  var rangeStartCtn, rangeStartOffset, rangeEndCtn, rangeEndOffset;
  var i, tokenElt;
  var oldValue, newValue;
  var selected;
  if (startToken && endToken && engine.isWordToken(startToken) && (engine.isWordToken(endToken) || engine.stringOf(endToken) === '->')) {
    for (i = 0; i < words.length; ++i) {
      if (i > 0) {
        tokenElt = engine.makeTokenElt({
          type: 'symbol',
          content: '->'
        });
        this.elt.$content.insertBefore(tokenElt, startToken);
      }
      tokenElt = engine.makeTokenElt({
        type: 'word',
        content: words[i]
      });
      this.elt.$content.insertBefore(tokenElt, startToken);
      if (i + 1 === words.length) {
        rangeStartCtn = this.elt.$content;
        rangeStartOffset = engine.childIndexOf(tokenElt) + 1;
        rangeEndCtn = rangeStartCtn;
        rangeEndOffset = rangeStartOffset;
      }
    }
    while (startToken !== endToken) {
      tokenElt = startToken.nextSibling;
      startToken.remove();
      startToken = tokenElt;
    }
    endToken.remove();
    range = document.createRange();
    range.setStart(rangeStartCtn, rangeStartOffset);
    range.setEnd(rangeEndCtn, rangeEndOffset);
    engine.setRange(range);
  } else {
    oldValue = this.elt.value;
    selected = engine.getSelectPosition();
    newValue = oldValue.substring(0, selected.start) + key + oldValue.substring(selected.end);
    this.elt.engine.value = newValue;
    this.elt.engine.setSelectedPosition(selected.start + key.length);
  }
  engine.updateTokenExType();
};
EIAutoCompleteController.prototype.isSelecting = function () {
  return this.isOpen && this.$suggestionList && this.$suggestionList.$selectedNode && true;
};
EIAutoCompleteController.prototype.applySelectingSuggestion = function () {
  if (this.isSelecting()) {
    this.applySuggestion(this.$suggestionList.$selectedNode.data);
    //todo
    // this.applySuggestion(this.$item[this.selectedIdx].getAttribute('data-suggestion'));
    this.closeDropdown();
  }
};
EIAutoCompleteController.prototype.closeDropdownIfNeed = function () {
  var _this8 = this;
  setTimeout(function () {
    var text = _this8.getCurrentText();
    _this8.$tokenTarget = text && text.tokenElt;
    if (_this8.isOpen) {
      if (!_this8.$tokenTarget || _this8.$tokenTarget.getAttribute('data-type') !== 'word') {
        _this8.closeDropdown();
      }
    }
  }, 5);
};

/**
 *
 * @param {"down"|"up"} direction
 * @returns {boolean}
 */
EIAutoCompleteController.prototype.moveSelectingSuggestion = function (direction) {
  if (direction !== 'down' && direction !== 'up') return false;
  if (!this.hasSuggestions()) return false;
  if (this.isSelecting()) {
    if (direction === 'down') {
      return this.$suggestionList.moveToNextSuggestion();
    } else {
      return this.$suggestionList.moveToPrevSuggestion();
    }
  }
};
EIAutoCompleteController.prototype.ev_positionChange = function (event) {
  if (!this.elt.isDescendantOf(document.body)) {
    this.elt.stopTrackPosition();
    return;
  }
  //todo
};

EIAutoCompleteController.prototype.ev_clickOut = function (event) {
  if ((0, _EventEmitter.hitElement)(this.$suggestionList, event)) return;
  this.closeDropdown();
};

/**
 *
 * @param {ExpressionInput} elt
 * @constructor
 */
function EICommandTool(elt) {
  var _this9 = this;
  this.elt = elt;
  for (var key in this) {
    if (key.startsWith('ev_')) {
      this[key] = this[key].bind(this);
    }
  }
  this.isOpen = false;
  this.$ctn = (0, _ACore._)({
    tag: _Follower["default"],
    "class": 'as-ei-command-tool',
    props: {
      anchor: [6, 1]
    },
    child: [
    // {
    //     tag: 'button',
    //     class: 'as-transparent-button',
    //     child: 'span.mdi.mdi-function-variant',
    //     attr: {
    //         title: 'Insert [Ctrl + I]'
    //     },
    // },
    {
      tag: 'button',
      "class": 'as-transparent-button',
      child: 'span.mdi.mdi-magnify',
      attr: {
        title: 'Hint [Ctrl + Space]'
      },
      on: {
        click: function click() {
          _this9.elt.autoCompleteCtrl.openDropdown();
          _this9.elt.engine.setSelectedPosition(_this9.elt.engine.lastSelectedPosition);
        }
      }
    }]
  });
  this.elt.$content.on('focus', this.ev_focus);
}
EICommandTool.prototype.open = function () {
  if (this.isOpen) return;
  this.elt.emit('focus', {
    type: 'focus',
    originalEvent: event,
    target: this.elt
  }, this.elt);
  if (this.elt.autoCompleteCtrl.getSuggestionList().length === 0) return;
  this.isOpen = true;
  this.$ctn.addTo(this.elt);
  this.$ctn.followTarget = this.elt;
  var zIndex = (0, _utils.findMaxZIndex)(this.elt) + 1;
  this.$ctn.addStyle('z-index', zIndex);
  document.addEventListener('click', this.ev_clickOut);
};
EICommandTool.prototype.close = function () {
  if (!this.isOpen) return;
  this.isOpen = false;
  this.elt.emit('blur', {
    type: 'blur',
    originalEvent: event,
    target: this.elt
  }, this.elt);
  document.removeEventListener('click', this.ev_clickOut);
  this.$ctn.selfRemove();
};
EICommandTool.prototype.ev_focus = function (event) {
  this.open();
};
EICommandTool.prototype.ev_clickOut = function (ev) {
  if ((0, _EventEmitter.hitElement)(this.elt, ev)) return;
  this.close();
};
EICommandTool.prototype.revokeResource = function () {
  this.elt.$content.on('focus', this.ev_focus);
  this.close();
};

/**
 * @extends {AElement}
 * @constructor
 */
function EISuggestionList() {
  /**
   *
   * @type {EISuggestionNode}
   */
  this.$selectedNode = null;
  this._data = [];
  this.$children = [];
}
EISuggestionList.prototype.reset = function () {
  //todo: select first suggestion
};
EISuggestionList.prototype.moveToNextSuggestion = function () {
  if (this.$selectedNode) {
    return this.selectElt(this.$selectedNode.nextSibling || this.childNodes[0]);
  } else {
    return this.selectElt(this.$children[0]);
  }
};
EISuggestionList.prototype.moveToPrevSuggestion = function () {
  if (this.$selectedNode) {
    return this.selectElt(this.$selectedNode.previousSibling || this.lastChild);
  } else {
    return this.selectElt(this.lastChild);
  }
};
EISuggestionList.render = function () {
  return (0, _ACore._)({
    extendEvent: ['select'],
    "class": ['am-select-tree-leaf-box-list', 'as-bscroller', 'as-dropdown-box-common-style', 'as-ei-suggestion-list']
  });
};
EISuggestionList.prototype.selectElt = function (elt) {
  elt = elt || null;
  if (elt === this.$selectedNode) return false;
  if (this.$selectedNode) {
    this.$selectedNode.removeClass('as-selected');
  }
  this.$selectedNode = elt;
  if (elt) {
    elt.addClass('as-selected');
  }
  if (this.isDescendantOf(document.body)) {
    (0, _utils.vScrollIntoView)(elt);
  }
  return true;
};
EISuggestionList.prototype.selectMaxScoreItem = function () {
  var maxPath = [];
  var maxScore = 0;
  var visit = function visit(nd, path) {
    if (nd.data.score > maxScore) {
      maxScore = nd.data.score;
      maxPath = path.concat([nd]);
    }
    path.push(nd);
    nd.$children.forEach(function (child) {
      visit(child, path);
    });
    path.pop();
  };
  this.$children.forEach(function (node) {
    visit(node, []);
  });
  maxPath.forEach(function (node) {
    node.open();
  });
  if (maxPath.length > 0) {
    this.selectElt(maxPath[maxPath.length - 1]);
  }
};
EISuggestionList.property = {};
EISuggestionList.property.data = {
  set: function set(data) {
    data = data || [];
    this._data = data;
    this.clearChild();
    this.$children = data.map(function (it) {
      return (0, _ACore._)({
        tag: EISuggestionNode,
        props: {
          data: it
        }
      });
    });
    var viewElements = [];
    this.$children.forEach(function (child) {
      child.getViewElements(viewElements);
    });
    this.addChild(viewElements);
  },
  get: function get() {
    return this._data;
  }
};
EISuggestionList.property.selectedSuggestions = {
  get: function get() {
    return this.$selectedNode ? this.$selectedNode.data : null;
  }
};

/**
 * @typedef {Object} EISuggestionNodeData
 * @property {string} text
 * @property {string} value
 * @property {string} [desc]
 * @property {string} type
 * @property {boolean} [noSelect]
 * @property {EISuggestionNodeData[]} [children]
 */

/**
 * @extends {AElement}
 * @constructor
 */
function EISuggestionNode() {
  var _this10 = this;
  this.$text = (0, _ACore.$)('.as-eisli-text', this);
  this.$desc = (0, _ACore.$)('.as-eisli-desc', this);
  this.$iconCtn = (0, _ACore.$)('.as-eisli-icon-ctn', this);
  this._level = 0;
  this._data = {
    text: '',
    desc: ''
  };
  this.on('click', function (event) {
    _this10.parentElement.emit('select', {
      type: 'select',
      originalEvent: event,
      target: _this10,
      data: _this10.data
    }, _this10);
  });

  /**
   *
   * @type {EISuggestionNode[]}
   */
  this.$children = [];
  /**
   * @type {"none"|"open"|"close"}
   * @name status
   * @memberOf EISuggestionNode#
   */

  /**
   * @type {EISuggestionNodeData}
   * @name data
   * @memberOf EISuggestionNode#
   */
  /**
   * @type {number}
   * @name level
   * @memberOf EISuggestionNode#
   */
}

EISuggestionNode.render = function () {
  return (0, _ACore._)({
    "class": ['as-ei-suggestion-list-item'],
    child: [{
      "class": 'as-eisli-toggler',
      child: 'toggler-ico'
    }, {
      "class": 'as-eisli-icon-ctn'
    }, {
      "class": 'as-eisli-text',
      child: {
        text: ''
      }
    }, {
      "class": 'as-eisli-desc',
      child: {
        text: ''
      }
    }]
  });
};
EISuggestionNode.prototype.getViewElements = function (ac) {
  ac = ac || [];
  ac.push(this);
  if (this.status === 'open') {
    this.$children.forEach(function (child) {
      child.getViewElements(ac);
    });
  }
  return ac;
};
EISuggestionNode.prototype.close = function () {
  if (!this.hasClass(' as-status-open')) return;
  var viewElements = this.getViewElements();
  this.addClass('as-status-close').removeClass('as-status-open');
  viewElements.shift();
  for (var i = 0; i < viewElements.length; ++i) {
    viewElements[i].remove();
  }
};
EISuggestionNode.prototype.open = function () {
  if (!this.hasClass(' as-status-close')) return;
  this.addClass('as-status-open').removeClass('as-status-close');
  var nextSibling = this.nextSibling;
  var viewElements = this.getViewElements();
  for (var i = 0; i < viewElements.length; ++i) {
    this.insertBefore(viewElements[i], nextSibling);
  }
};
EISuggestionNode.property = {};
EISuggestionNode.property.data = {
  /**
   * @this {EISuggestionNode}
   * @param {EISuggestionNodeData} data
   */
  set: function set(data) {
    var _this11 = this;
    this._data = data || {};
    this.$text.firstChild.data = data.text || '';
    this.$desc.firstChild.data = data.desc || '';
    if (data.noSelect) {
      this.addClass('as-no-select');
    }
    this.$children = (data.children || []).map(function (childData) {
      return (0, _ACore._)({
        tag: EISuggestionNode,
        props: {
          data: childData,
          level: _this11.level + 1
        }
      });
    });
    this.$iconCtn.clearChild();
    if (data.item) {
      switch (data.item.type) {
        case 'variable':
          this.$iconCtn.addChild((0, _ACore._)('span.mdi.mdi-variable'));
          if (data.children && data.children.length > 0) {
            this.status = 'open';
          }
          break;
        case 'function':
          this.$iconCtn.addChild((0, _ACore._)('span.mdi.mdi-function'));
          break;
      }
    } else {
      this.status = 'open';
      this.$iconCtn.addChild((0, _ACore._)('span.mdi.mdi-code-json'));
    }
  },
  get: function get() {
    return this._data;
  }
};
EISuggestionNode.property.level = {
  set: function set(value) {
    this.addStyle('--level', value + '');
    this._level = value;
    this.$children.forEach(function (child) {
      child.level = value + 1;
    });
  },
  get: function get() {
    return this._level;
  }
};
EISuggestionNode.property.status = {
  set: function set(value) {
    if (value === 'open') {
      this.addClass('as-status-open').removeClass('as-status-close');
    } else if (value === 'close') {
      this.addClass('as-status-close').removeClass('as-status-open');
    }
  },
  get: function get() {
    if (this.hasClass('as-status-open')) return 'open';
    if (this.hasClass('as-status-close')) return 'close';
    return 'none';
  }
};

/*********************************
 * EXPRESSION
 */

var rules = [];
var operatorOrder = {
  'NOT': 4,
  '!': 4,
  '*': 5,
  '/': 5,
  'MOD': 5,
  '%': 5,
  '+': 6,
  '-': 6,
  '<': 9,
  '>': 9,
  '<=': 9,
  '>=': 9,
  '==': 9,
  '=': 9,
  '===': 9,
  '!=': 9,
  'AND': 14,
  '&&': 14,
  'OR': 15,
  '||': 15,
  'XOR': 15
};
rules.push({
  target: 'null',
  elements: ['_null'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'NullLiteral'
    };
  }
});
rules.push({
  target: 'ident',
  elements: ['.word'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'Identifier',
      name: parsedNode.children[0].content
    };
  }
});
rules.push({
  target: 'args_list',
  elements: ['exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  },
  toASTChain: function toASTChain(parsedNode) {
    return [(0, _DPParseInstance.parsedNodeToAST)(parsedNode)];
  }
});
rules.push({
  target: 'args_list',
  elements: ['args_list', '_,', 'exp'],
  longestOnly: true,
  ident: 'args_list_rec',
  toASTChain: function toASTChain(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[0]).concat((0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2]));
  }
});
rules.push({
  target: 'function_callee',
  elements: ['ident'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'function_callee',
  elements: ['mem_exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'function_call',
  elements: ['function_callee', '_(', 'args_list', '_)'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'CallExpression',
      arguments: parsedNode.children[2].rule.toASTChain(parsedNode.children[2]),
      callee: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])
    };
  }
});
rules.push({
  target: 'function_call',
  elements: ['function_callee', '_(', '_)'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'CallExpression',
      arguments: [],
      callee: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])
    };
  }
});
rules.push({
  target: 'new_expression',
  elements: ['_new', 'function_call'],
  toAST: function toAST(parsedNode) {
    var callAst = (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]);
    return {
      type: 'NewExpression',
      arguments: callAst.arguments,
      callee: callAst.callee
    };
  }
});
rules.push({
  target: 'exp',
  elements: ['new_expression'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'exp',
  elements: ['null'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'exp',
  elements: ['ident'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'number',
  elements: ['.number'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'NumericLiteral',
      value: parseFloat(parsedNode.children[0].content)
    };
  }
});
rules.push({
  target: 'string',
  elements: ['.string'],
  toAST: function toAST(parsedNode) {
    var content = parsedNode.children[0].content;
    if (content[0] === "'") content = '"' + content.substring(1, content.length - 1).replace(/["]/g, '\\"') + '"';
    return {
      type: 'StringLiteral',
      value: JSON.parse(content)
    };
  }
});
rules.push({
  target: 'boolean',
  elements: ['_true'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'BooleanLiteral',
      value: true
    };
  }
});
rules.push({
  target: 'boolean',
  elements: ['_false'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'BooleanLiteral',
      value: false
    };
  }
});
rules.push({
  target: 'exp',
  elements: ['number'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'exp',
  elements: ['string'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'exp',
  elements: ['boolean'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
['+', '-', '*', '/', '%', '&&', '||', 'XOR', "=", '==', '===', '!=', '<', '>', '>=', '<='].forEach(function (op) {
  rules.push({
    target: 'bin_op',
    elements: ['_' + op],
    toAST: function toAST(parsedNode) {
      return {
        type: "BinaryOperator",
        content: op
      };
    }
  });
});
var x = Math.m;
rules.push({
  target: 'exp',
  elements: ['exp', 'bin_op', 'exp'],
  // longestOnly: true,//* error when parse return (...)...
  ident: 'bin_op_rec',
  toASTChain: function toASTChain(parseNode) {
    var res = [];
    if (parseNode.children[0].rule === this) {
      res = res.concat(this.toASTChain(parseNode.children[0]));
    } else {
      res.push((0, _DPParseInstance.parsedNodeToAST)(parseNode.children[0]));
    }
    res.push(parseNode.children[1].children[0]);
    if (parseNode.children[2].rule === this) {
      res = res.concat(this.toASTChain(parseNode.children[2]));
    } else {
      res.push((0, _DPParseInstance.parsedNodeToAST)(parseNode.children[2]));
    }
    return res;
  },
  toAST: function toAST(parsedNode) {
    var chain = this.toASTChain(parsedNode);
    var stack = [];
    var item;
    var newNode;
    while (chain.length > 0) {
      item = chain.shift();
      if (item.content in operatorOrder) {
        while (stack.length >= 3 && operatorOrder[stack[stack.length - 2].content] <= operatorOrder[item.content]) {
          newNode = {
            type: 'BinaryExpression'
          };
          newNode.right = stack.pop();
          newNode.operator = stack.pop();
          newNode.left = stack.pop();
          stack.push(newNode);
        }
      }
      stack.push(item);
    }
    while (stack.length >= 3) {
      newNode = {
        type: 'BinaryExpression'
      };
      newNode.right = stack.pop();
      newNode.operator = stack.pop();
      newNode.left = stack.pop();
      stack.push(newNode);
    }
    return stack.pop();
  }
});
rules.push({
  target: 'exp',
  elements: ['function_call'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'bracket_group',
  elements: ['_(', 'exp', '_)'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]);
  }
});
rules.push({
  target: 'exp',
  elements: ['bracket_group'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});

// rules.push({
//     target: 'exp',
//     elements: ['_(', 'exp', '_)'],
//     toAST: function (parsedNode) {
//         return parsedNodeToAST(parsedNode.children[1]);
//     }
// });

['+', '-', '!'].forEach(function (op) {
  ['number', 'bracket_group', 'ident', 'function_call', 'mem_exp', 'unary_exp'].forEach(function (arg) {
    rules.push({
      target: 'unary_exp',
      elements: ['_' + op, arg],
      toAST: function toAST(parsedNode) {
        return {
          type: 'UnaryExpression',
          argument: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]),
          operator: {
            type: 'UnaryOperator',
            content: op
          }
        };
      }
    });
  });
});
rules.push({
  target: 'exp',
  elements: ['unary_exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['ident', '_->', 'ident'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: false,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['ident', '_[', 'exp', '_]'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: true,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['new_expression', '_->', 'ident'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: false,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['new_expression', '_[', 'exp', '_]'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: true,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['mem_exp', '_->', 'ident'],
  longestOnly: true,
  ident: 'mem_exp_ident_rev',
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: false,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['mem_exp', '_[', 'exp', '_]'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: true,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['bracket_group', '_->', 'ident'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: false,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['bracket_group', '_[', 'exp', '_]'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: true,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'exp',
  elements: ['mem_exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});

/**********************************************************************************************************************/

rules.push({
  target: 'object_exp',
  elements: ['_{', '_}'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ObjectExpression',
      properties: []
    };
  }
});
rules.push({
  target: 'object_exp',
  elements: ['_{', 'object_property_list', '_}'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ObjectExpression',
      properties: (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[1])
    };
  }
});
rules.push({
  target: 'exp',
  elements: ['object_exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'object_property',
  elements: ['ident', '_:', 'exp'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ObjectProperty',
      key: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      value: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'object_property',
  elements: ['string', '_:', 'exp'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ObjectProperty',
      key: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      value: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'object_property_list',
  elements: ['object_property'],
  toASTChain: function toASTChain(parsedNode) {
    return [(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])];
  }
});
rules.push({
  target: 'object_property_list',
  elements: ['object_property_list', '_,', 'object_property'],
  longestOnly: true,
  ident: 'object_property_list_rec',
  toASTChain: function toASTChain(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[0]).concat([(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])]);
  }
});

/**********************************************************************************************************************/

rules.push({
  target: 'exp',
  elements: ['array_exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'array_exp',
  elements: ['_[', '_]'],
  toAST: function toAST(parsedNode) {
    return {
      type: "ArrayExpression",
      elements: []
    };
  }
});
rules.push({
  target: 'array_exp',
  elements: ['_[', 'array_item_list', '_]'],
  toAST: function toAST(parsedNode) {
    return {
      type: "ArrayExpression",
      elements: (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[1])
    };
  }
});
rules.push({
  target: 'array_item_list',
  elements: ['exp'],
  toASTChain: function toASTChain(parsedNode) {
    return [(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])];
  }
});
rules.push({
  target: 'array_item_list',
  elements: ['array_item_list', '_,', 'exp'],
  longestOnly: true,
  ident: 'array_item_list_rec',
  toASTChain: function toASTChain(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[0]).concat([(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])]);
  }
});

/**********************************************************************************************************************/

var elementRegexes = [['string', /("(?:[^"\\\n]|\\.)*?")|('(?:[^'\\\n]|\\.)*?')/], ['number', /(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)/], ['word', /[_a-zA-Z][_a-zA-Z0-9]*/], ['skip', /([\s\r\n])|(\/\/[^\n]*)|(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)/], ['dsymbol', /\+\+|--|==|!=|<=|>=|\|\||&&|->/], ['tsymbol', /\.\.\./], ['symbol', /[^\s_a-zA-Z0-9]/]];
var EIGrammar = {
  elementRegexes: elementRegexes,
  operatorOrder: _SCGrammar["default"].operatorOrder,
  rules: rules
};
var EIParser = new _DPParser["default"](EIGrammar);

/***/ }),

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

"use strict";


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;
__webpack_require__(21457);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _DropZone = _interopRequireDefault(__webpack_require__(31790));
var _utils = __webpack_require__(84512);
var _catalog = _interopRequireDefault(__webpack_require__(82398));
var _FileSaver = __webpack_require__(53069);
var _MessageInput = _interopRequireDefault(__webpack_require__(42049));
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; }
/***
 * @extends AElement
 * @constructor
 */
function FileInputBox() {
  this.$fileSize = (0, _ACore.$)('.as-file-input-box-file-size', this);
  this.$fileName = (0, _ACore.$)('.as-file-input-box-file-name', this);
  this.$bg = (0, _ACore.$)('.as-file-input-box-background', this);
  this.$input = (0, _ACore.$)('input', this).on('change', this.eventHandler.input_fileChange);
  this.$trigger = (0, _ACore._)({
    elt: (0, _ACore.$)('.as-file-input-box-trigger', this),
    tag: _DropZone["default"].tag,
    on: {
      fileenter: this.eventHandler.input_fileEnter,
      fileleave: this.eventHandler.input_fileLeave,
      filedrop: this.eventHandler.input_fileDrop
    }
  });
  this.$downloadBtn = (0, _ACore.$)('.as-file-input-box-download-btn', this).on('click', this.download.bind(this));
  this.$removeBtn = (0, _ACore.$)('.as-file-input-box-remove-btn', this).on('click', this.clearValue.bind(this, true));
  this._value = null;
  this._fileSize = null;
  this._fileName = null;
  this._fileType = null;
  this._valueInfo = null;
  this._thumbnail = null;

  /***
   * default true
   * @name allowUpload
   * @type {boolean}
   * @memberOf FileInputBox#
   */
  this.allowUpload = true;

  /***
   * @name value
   * @type {null|any}
   * @memberOf FileInputBox#
   */
  /***
   * @name thumbnail
   * @type {null|any}
   * @memberOf FileInputBox#
   */
  /***
   * @name fileSize
   * @type {null|number}
   * @memberOf FileInputBox#
   */

  /***
   * @name fileType
   * @type {null|string}
   * @memberOf FileInputBox#
   */
  /***
   * @name fileName
   * @type {null|string}
   * @memberOf FileInputBox#
   */

  /***
   * default: false
   * @name downloadable
   * @type {boolean}
   * @memberOf FileInputBox#
   */
}

FileInputBox.tag = 'FileInputBox'.toLowerCase();
FileInputBox.render = function () {
  return (0, _ACore._)({
    extendEvent: ['change'],
    "class": 'as-file-input-box',
    child: ['.as-file-input-box-background', {
      tag: 'label',
      "class": 'as-file-input-box-trigger',
      child: {
        tag: 'input',
        attr: {
          type: 'file',
          accept: '*',
          title: null
        }
      }
    }, {
      "class": 'as-file-input-box-upload-overlay',
      child: 'span.mdi.mdi-upload'
    }, {
      "class": 'as-file-input-box-info',
      child: [{
        tag: 'span',
        "class": 'as-file-input-box-file-name',
        child: {
          text: ''
        }
      }, 'br', {
        tag: 'span',
        "class": 'as-file-input-box-file-size',
        child: {
          text: ''
        }
      }]
    }, {
      "class": 'as-file-input-box-action-left',
      child: {
        tag: 'button',
        "class": 'as-file-input-box-remove-btn',
        child: 'span.mdi.mdi-close'
      }
    }, {
      "class": 'as-file-input-box-action-right',
      child: {
        tag: 'button',
        "class": 'as-file-input-box-download-btn',
        child: 'span.mdi.mdi-download'
      }
    }, {
      "class": 'as-file-input-box-checked',
      child: 'span.mdi.mdi-check-bold'
    }]
  });
};
FileInputBox.prototype.download = function () {
  var value = this.value;
  if (value) {
    if (value && value.name && value.url) {
      (0, _FileSaver.saveAs)(value.url, value.name);
    } else {
      (0, _FileSaver.saveAs)(value, this.fileName);
    }
  }
};
FileInputBox.prototype.clearValue = function (userAction, event) {
  if (this.value) {
    this.value = null;
    if (userAction) {
      this.emit('change', {
        type: 'change',
        originalEvent: event,
        action: 'clear',
        target: this
      }, this);
    }
  }
};
FileInputBox.prototype._updateThumbnail = function () {
  var previewUrl;
  var thumbnail = this.thumbnail;
  var fileType = this.fileType;
  if (thumbnail) {
    if (typeof thumbnail === "string") {
      previewUrl = thumbnail;
    } else if (thumbnail instanceof Blob || thumbnail instanceof File) {
      thumbnail.url = thumbnail.url || URL.createObjectURL(thumbnail);
      previewUrl = thumbnail.url;
    }
  }
  if (!previewUrl) {
    if (_catalog["default"].indexOf(fileType) >= 0) {
      previewUrl = _MessageInput["default"].iconAssetRoot + '/' + fileType + '.svg';
    } else {
      previewUrl = _MessageInput["default"].iconAssetRoot + '/' + 'blank' + '.svg';
    }
  }
  if (previewUrl) {
    this.$bg.addStyle('backgroundImage', 'url("' + encodeURI(previewUrl) + '")');
  } else {
    this.$bg.removeStyle('backgroundImage');
  }
};
FileInputBox.prototype._updateFileName = function () {
  var fileName = this.fileName;
  if (fileName) {
    this.$fileName.firstChild.data = fileName;
    this.addClass('as-has-file-name');
  } else {
    this.$fileName.firstChild.data = '';
    this.removeClass('as-has-file-name');
  }
};
FileInputBox.prototype._updateFileSize = function () {
  var fileSize = this.fileName;
  if (fileSize === null) {
    this.$fileSize.firstChild.data = '';
    this.removeClass('as-has-file-size');
  } else {
    this.$fileSize.firstChild.data = (0, _utils.fileSize2Text)(fileSize);
    this.addClass('as-has-file-size');
  }
};
FileInputBox.property = {};
FileInputBox.property.value = {
  set: function set(value) {
    value = value || null;
    this._value = value;
    this._valueInfo = (0, _utils.fileInfoOf)(value);
    this._updateThumbnail();
    this._updateFileName();
    this._updateFileSize();
    if (value) {
      this.addClass('as-has-value');
    } else {
      this.removeClass('as-has-value');
    }
  },
  get: function get() {
    return this._value;
  }
};
FileInputBox.property.fileType = {
  set: function set(value) {
    this._fileType = value;
    this._updateThumbnail();
  },
  /***
   * @this FileInputBox
   * @return {*}
   */
  get: function get() {
    return this._fileType || this._valueInfo && this._valueInfo.type || null;
  }
};
FileInputBox.property.fileName = {
  set: function set(value) {
    value = typeof value === 'string' ? value : null;
    this._fileName = value;
    this._updateFileName();
  },
  get: function get() {
    return this._fileName || this._valueInfo && this._valueInfo.name || null;
  }
};
FileInputBox.property.fileSize = {
  set: function set(value) {
    if ((0, _utils.isRealNumber)(value)) value = Math.max(0, value);else value = null;
    this._fileSize = value;
    this._updateFileSize();
  },
  get: function get() {
    if (typeof this._fileSize === "number") return this._fileSize;
    if (this._valueInfo && typeof this._valueInfo.size === "number") return this._valueInfo.size;
    return null;
  }
};
FileInputBox.property.thumbnail = {
  set: function set(value) {
    this._thumbnail = value || null;
    this._updateThumbnail();
  },
  get: function get() {
    return this._thumbnail;
  }
};
FileInputBox.property.allowUpload = {
  set: function set(value) {
    if (value) {
      this.addClass('as-allow-upload');
    } else {
      this.removeClass('as-allow-upload');
    }
  },
  get: function get() {
    return this.hasClass('as-allow-upload');
  }
};
FileInputBox.property.downloadable = {
  set: function set(value) {
    if (value) {
      this.addClass('as-downloadable');
    } else {
      this.removeClass('as-downloadable');
    }
  },
  get: function get() {
    return this.hasClass('as-downloadable');
  }
};
FileInputBox.property.removable = {
  set: function set(value) {
    if (value) {
      this.addClass('as-removable');
    } else {
      this.removeClass('as-removable');
    }
  },
  get: function get() {
    return this.hasClass('as-removable');
  }
};
FileInputBox.property.accept = {
  set: function set(value) {
    if (!value) value = null;
    this.$input.attr('accept', value + '');
  },
  get: function get() {
    return this.$input.attr('accept') || null;
  }
};
FileInputBox.property.checked = {
  set: function set(value) {
    if (value) {
      this.addClass('as-checked');
    } else {
      this.removeClass('as-checked');
    }
  },
  get: function get() {
    return this.hasClass('as-checked');
  }
};
FileInputBox.eventHandler = {};
FileInputBox.eventHandler.input_fileChange = function (event) {
  var files = Array.prototype.slice.call(this.$input.files);
  if (files.length > 0) {
    this.value = files[0];
    this.emit('change', {
      type: 'change',
      originalEvent: event,
      file: files[0],
      action: 'file_dialog',
      target: this
    }, this);
  }
};
FileInputBox.eventHandler.input_fileEnter = function (event) {};
FileInputBox.eventHandler.input_fileLeave = function (event) {};
FileInputBox.eventHandler.input_fileDrop = function (event) {
  var files = Array.prototype.slice.call(event.files);
  var accept = this.accept;
  var file;
  if (files.length > 0) {
    file = files[0];
    if (!(0, _utils.fileAccept)(accept, file.type) && !(0, _utils.fileAccept)(accept, file.name)) file = null;
  }
  if (file) {
    this.value = file;
    this.emit('change', {
      type: 'change',
      originalEvent: event,
      file: file,
      action: 'drop',
      target: this
    }, this);
  }
};
_ACore["default"].install(FileInputBox);
var _default = FileInputBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _FileListItem = _interopRequireDefault(__webpack_require__(62355));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _ContextMenu = _interopRequireDefault(__webpack_require__(24733));
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
var _FileSaver = __webpack_require__(53069);
var _DropZone = _interopRequireDefault(__webpack_require__(31790));
var _utils = __webpack_require__(84512);
var _FileInputBox = _interopRequireDefault(__webpack_require__(28794));
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 _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); }
/***
 * @extends AElement
 * @constructor
 */
function FileListInput() {
  _ContextMenu["default"].auto();
  this.$add = (0, _ACore.$)('.as-file-list-input-add', this);
  this.$attachhook = (0, _ACore.$)('attachhook', this);
  this.$attachhook.requestUpdateSize = this.updateSize.bind(this);
  this.$attachhook.on('attached', function () {
    _ResizeSystem["default"].add(this);
    this.requestUpdateSize();
  });
  this.on('filedrop', this.eventHandler.input_fileDrop);
  this.on('contextmenu', this.eventHandler.itemContext);
  this.$addedFile = (0, _ACore.$)('input', this.$add).on('change', this.eventHandler.clickAdd);
  /***
   *
   * @type {FileInputBox[]}
   */
  this.$fileItems = [];
  this.$activeItem = null;
  this._files = [];
  /***
   * @name files
   * @memberOf FileListInput#
   * @type {*}
   *
   */
  /***
   * @name readOnly
   * @memberOf FileListInput#
   * @type {boolean}
   */
  /***
   * @name disabled
   * @memberOf FileListInput#
   * @type {boolean}
   */

  /***
   * @name multiple
   * @memberOf FileListInput#
   * @type {boolean}
   */
  /***
   * @name droppable
   * @memberOf FileListInput#
   * @type {boolean}
   */
}

FileListInput.tag = 'FileListInput'.toLowerCase();
FileListInput.render = function () {
  return (0, _ACore._)({
    tag: _DropZone["default"].tag,
    "class": ['as-file-list-input', 'as-bscroller', 'as-empty', 'as-droppable'],
    extendEvent: ['change', 'contextmenu', 'check'],
    child: [{
      tag: 'label',
      "class": 'as-file-list-input-add',
      child: [{
        tag: 'input',
        attr: {
          type: 'file',
          accept: '*',
          title: null
        }
      }, {
        "class": 'as-file-list-input-add-icon-ctn',
        child: 'span.mdi.mdi-upload-outline'
      }, 'attachhook']
    }, {
      tag: 'span',
      "class": 'as-file-list-drag-file-text',
      child: {
        text: '(Kéo thả  file vào đây để tải lên)'
      }
    }, {
      "class": 'as-file-list-input-upload-overlay',
      child: 'span.mdi.mdi-upload'
    }]
  });
};
FileListInput.prototype.defaultChecked = false;
FileListInput.prototype.updateSize = function () {
  var bound, px, n;
  var requireWidth = this.getComputedStyleValue('--item-require-width') || '300px';
  if (requireWidth.match(/%$/)) {
    this.addStyle('--item-width', requireWidth);
  } else if (requireWidth.match(/px$/)) {
    bound = this.getBoundingClientRect();
    px = parseFloat(requireWidth.replace('px', ''));
    if (!isNaN(px) && px > 0) {
      n = Math.max(1, Math.floor((bound.width - 10 - 2) / px));
      this.addStyle('--item-width', Math.floor(100 / n) + '%');
    } else {
      this.removeStyle('--item-width');
    }
  } else {
    this.removeStyle('--item-width');
  }
};
FileListInput.prototype._makeFileItem = function (file) {
  var fileElt = (0, _ACore._)({
    tag: _FileListItem["default"].tag,
    props: {
      $parent: this,
      allowUpload: false,
      fileData: file,
      checked: this.defaultChecked
    }
  });
  fileElt.on('mousedown', this.eventHandler.mouseDownItem.bind(this, fileElt));
  fileElt.value = file;
  return fileElt;
};
FileListInput.prototype.add = function (file, idx) {
  if (!(0, _utils.isNaturalNumber)(idx)) idx = Infinity;
  idx = Math.min(this.$fileItems.length, idx);
  var fileElt = this._makeFileItem(file);
  var bf = this.$fileItems[idx];
  if (bf) {
    this.$fileItems.splice(idx, 0, fileElt);
    this._files.splice(idx, 0, file);
    this.addChildBefore(fileElt, bf);
  } else {
    this.$fileItems.push(fileElt);
    this._files.push(file);
    this.addChildBefore(fileElt, this.$add);
  }
  this._updateCountClass();
};
FileListInput.prototype._updateCountClass = function () {
  if (this._files.length > 0) {
    this.removeClass('as-empty');
  } else {
    this.addClass('as-empty');
  }
};
FileListInput.prototype.activeFileItemElt = function (itemElt) {
  if (this.$activeItem !== itemElt) {
    if (this.$activeItem) {
      this.$activeItem.removeClass('as-active');
    }
    this.$activeItem = itemElt;
    if (this.$activeItem) {
      this.$activeItem.addClass('as-active');
    }
  }
};
FileListInput.prototype.downloadFileItemElt = function (fileElt) {
  var fileData = fileElt.fileData;
  var name = fileData.name || fileElt.fileName;
  var file;
  if (fileData instanceof File || fileData instanceof Blob) {
    file = fileData;
  } else if (_typeof(fileData) === 'object') {
    if (fileData.url) file = fileData.url;
  } else if (typeof fileData === "string") {
    file = fileData;
  }
  if (file) {
    (0, _FileSaver.saveAs)(file, name);
  }
};
FileListInput.prototype.deleteFileItemElt = function (fileElt) {
  var fileData = fileElt.fileData;
  var idx = this._files.indexOf(fileData);
  if (idx >= 0) {
    this._files.splice(idx, 1);
  }
  fileElt.remove();
};
FileListInput.prototype._findFileItemElt = function (target) {
  while (target && target !== this) {
    if (target.hasClass && target.hasClass('as-file-list-item')) {
      return target;
    }
    target = target.parentElement;
  }
  return null;
};
FileListInput.prototype.getChildren = function () {
  return this.$fileItems.slice();
};
FileListInput.property = {};
FileListInput.property.files = {
  /***
   * @this FileListInput
   * @param files
   */
  set: function set(files) {
    files = files || [];
    files = files.slice();
    var self = this;
    this.$fileItems.forEach(function (fileElt) {
      fileElt.remove();
    });
    files = files || [];
    this._files = files;
    this.$fileItems = files.map(function (file) {
      var elt = self._makeFileItem(file);
      self.addChildBefore(elt, self.$add);
      return elt;
    });
    this._updateCountClass();
  },
  /***
   * @this FileListInput
   */
  get: function get() {
    return (this._files || []).slice();
  }
};
FileListInput.property.readOnly = {
  set: function set(value) {
    value = !!value;
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
    this.$fileItems.forEach(function (fileElt) {
      fileElt.removable = !value;
    });
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
FileListInput.property.droppable = {
  set: function set(value) {
    value = !!value;
    if (value) {
      this.addClass('as-droppable');
    } else {
      this.removeClass('as-droppable');
    }
    this.$fileItems.forEach(function (fileElt) {
      fileElt.removable = !value;
    });
  },
  get: function get() {
    return this.hasClass('as-droppable');
  }
};
FileListInput.property.multiple = {
  set: function set(value) {
    this.$addedFile.multiple = !!value;
  },
  get: function get() {
    return this.$addedFile.multiple;
  }
};
FileListInput.property.accept = {
  set: function set(value) {
    if (!value) value = null;
    this.$addedFile.attr('accept', value + '');
  },
  get: function get() {
    return this.$addedFile.attr('accept') || null;
  }
};
FileListInput.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
FileListInput.property.showCheck = {
  set: function set(value) {
    if (value) {
      this.addClass('as-show-check');
    } else {
      this.removeClass('as-show-check');
    }
  },
  get: function get() {
    return this.hasClass('as-show-check');
  }
};
_ACore["default"].install(FileListInput);

/***
 * @memberOf  FileListInput#
 * @type {{}}
 */
FileListInput.eventHandler = {};
FileListInput.eventHandler.clickAdd = function (event) {
  var files = Array.prototype.slice.call(this.$addedFile.files);
  this.$addedFile.files = null;
  if (files.length === 0) return;
  for (var i = 0; i < files.length; ++i) {
    this.add(files[i]);
  }
  this.emit('change', {
    files: files,
    type: 'change',
    target: this,
    originalEvent: event,
    action: 'add'
  }, this);
};

/***
 * @this FileListInput
 * @param itemElt
 * @param event
 */
FileListInput.eventHandler.mouseDownItem = function (itemElt, event) {
  this.activeFileItemElt(itemElt);
};
FileListInput.eventHandler.input_fileDrop = function (event) {
  if (this.readOnly || this.disabled) return;
  var self = this;
  var files = Array.prototype.slice.call(event.files);
  if (files.length === 0) return;
  if (!this.multiple) files = files.slice(0, 1);
  var accept = this.accept;
  files = files.filter(function (file) {
    return (0, _utils.fileAccept)(accept, file.type) || (0, _utils.fileAccept)(accept, file.name);
  });
  if (files.length > 0) {
    files.forEach(function (file) {
      self.add(file);
    });
    this.emit('change', {
      type: 'change',
      files: files,
      target: this,
      action: 'drop'
    }, this);
  }
};

/***
 * @this FileListInput
 * @param itemElt
 * @param event
 */
FileListInput.eventHandler.itemContext = function (event) {
  if (this.disabled) return;
  var self = this;
  var itemElt = this._findFileItemElt(event.target);
  var menuItems = [];
  if (itemElt) {
    menuItems.push({
      text: _LanguageSystem["default"].getText('txt_download') || "Download",
      icon: 'span.mdi.mdi-download',
      cmd: 'download'
    });
  }
  if (!this.readOnly) {
    if (itemElt) menuItems.push({
      text: _LanguageSystem["default"].getText('txt_delete') || "Delete",
      icon: 'span.mdi.mdi-delete',
      cmd: 'delete'
    });
    menuItems.push({
      text: _LanguageSystem["default"].getText('txt_delete_all') || "Delete All",
      icon: 'span.mdi.mdi-delete-empty',
      cmd: 'delete_all'
    });
  }
  if (menuItems.length > 0) {
    event.showContextMenu({
      items: menuItems
    }, function (event) {
      var files;
      switch (event.menuItem.cmd) {
        case 'download':
          self.downloadFileItemElt(itemElt);
          break;
        case 'delete':
          self.deleteFileItemElt(itemElt);
          self.emit('change', {
            type: 'change',
            item: itemElt.fileData,
            target: this,
            action: 'delete'
          }, this);
          break;
        case 'delete_all':
          files = self.files;
          self.files = [];
          self.emit('change', {
            type: 'change',
            items: files,
            target: this,
            action: 'delete_all'
          }, this);
          break;
      }
    });
  }
};
var _default = FileListInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(97484);
var _catalog = _interopRequireDefault(__webpack_require__(82398));
var _MessageInput = _interopRequireDefault(__webpack_require__(42049));
var _utils = __webpack_require__(84512);
var _QuickMenu = _interopRequireDefault(__webpack_require__(8277));
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
var _CheckBoxInput = _interopRequireDefault(__webpack_require__(8398));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _EventEmitter = __webpack_require__(46833);
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; }
/***
 * @extends AElement
 * @constructor
 */
function FileListItem() {
  var _this = this;
  this.$parent = null;
  this.$icon = (0, _ACore.$)('.as-file-list-item-icon', this);
  this.$name = (0, _ACore.$)('.as-file-list-item-name', this);
  this.$quickMenuBtn = (0, _ACore.$)('.as-file-list-item-quick-btn', this);
  this.$check = (0, _ACore.$)('.as-file-list-item-check', this);
  this.value = null;
  this.fileType = null;
  this.fileName = '';
  _OOP["default"].drillProperty(this, this.$check, 'checked');
  this.on('click', this.eventHandler.click);
  _QuickMenu["default"].toggleWhenClick(this.$quickMenuBtn, {
    getMenuProps: function getMenuProps() {
      var list = _this.parentElement;
      if (list.disabled) return;
      var self = _this;
      var itemElt = _this;
      var menuItems = [];
      menuItems.push({
        text: _LanguageSystem["default"].getText('txt_download') || "Download",
        icon: 'span.mdi.mdi-download',
        cmd: 'download'
      });
      if (!list.readOnly) {
        if (itemElt) menuItems.push({
          text: _LanguageSystem["default"].getText('txt_delete') || "Delete",
          icon: 'span.mdi.mdi-delete',
          cmd: 'delete'
        });
        menuItems.push({
          text: _LanguageSystem["default"].getText('txt_delete_all') || "Delete All",
          icon: 'span.mdi.mdi-delete-empty',
          cmd: 'delete_all'
        });
      }
      return {
        items: menuItems
      };
    },
    onSelect: function (menuItem) {
      var itemElt = this;
      var self = this.parentElement;
      var files;
      switch (menuItem.cmd) {
        case 'download':
          self.downloadFileItemElt(itemElt);
          break;
        case 'delete':
          self.deleteFileItemElt(itemElt);
          self.emit('change', {
            type: 'change',
            item: itemElt.fileData,
            target: this,
            action: 'delete'
          }, this);
          break;
        case 'delete_all':
          files = self.files;
          self.files = [];
          self.emit('change', {
            type: 'change',
            items: files,
            target: this,
            action: 'delete_all'
          }, this);
          break;
      }
    }.bind(this)
  });
  this.$check.on('change', function (event) {
    if (this.$parent) {
      this.$parent.emit('check', {
        target: this.$parent,
        elt: this,
        type: 'check'
      }, this.$parent);
    }
  }.bind(this));

  /***
   * @name checked
   * @type {boolean}
   * @memberOf FileListItem#
   */
}

FileListItem.tag = 'FileListItem'.toLowerCase();
FileListItem.render = function () {
  return (0, _ACore._)({
    "class": 'as-file-list-item',
    child: [{
      tag: _CheckBoxInput["default"],
      "class": 'as-file-list-item-check'
    }, {
      tag: 'img',
      "class": 'as-file-list-item-icon',
      props: {
        src: _MessageInput["default"].iconAssetRoot + '/' + 'blank' + '.svg'
      }
    }, {
      "class": 'as-file-list-item-name',
      child: {
        text: '..'
      }
    }, {
      tag: 'button',
      "class": 'as-file-list-item-quick-btn',
      child: 'span.mdi.mdi-dots-vertical'
    }]
  });
};
FileListItem.property = {};
FileListItem.property.fileType = {
  set: function set(value) {
    this._fileType = value;
    if (value) {
      if (_catalog["default"].indexOf(value) >= 0) this.$icon.src = _MessageInput["default"].iconAssetRoot + '/' + value + '.svg';else this.$icon.src = _MessageInput["default"].iconAssetRoot + '/' + 'blank' + '.svg';
    } else {
      this.$icon.src = _MessageInput["default"].iconAssetRoot + '/' + 'blank' + '.svg';
    }
  },
  get: function get() {
    return this._fileType;
  }
};
FileListItem.property.fileName = {
  set: function set(value) {
    this.$name.firstChild.data = value + '';
  },
  get: function get() {
    return this.$name.firstChild.data;
  }
};
FileListItem.property.value = {
  set: function set(value) {
    value = value || null;
    var info = (0, _utils.fileInfoOf)(value);
    var type = info.type || null;
    var size = info.size || null;
    var name = info.name || null;
    this._value = value;
    this.fileSize = size;
    this.fileName = name;
    this.fileType = type;
    if (value) {
      this.addClass('as-has-value');
    } else {
      this.removeClass('as-has-value');
    }
  },
  get: function get() {
    return this._value;
  }
};
FileListItem.eventHandler = {};

/***
 * @this FileListItem
 * @param event
 */
FileListItem.eventHandler.click = function (event) {
  if (!(0, _EventEmitter.isMouseLeft)(event)) return;
  if ((0, _EventEmitter.hitElement)(this.$check, event) || (0, _EventEmitter.hitElement)(this.$quickMenuBtn, event)) return;
  if (this.$parent && this.$parent.showCheck) {
    this.$check.checked = !this.$check.checked;
    this.$check.notifyChange();
  }
};
_ACore["default"].install(FileListItem);
var _default = FileListItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(58913);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
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); }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/**
 * @extends AElement
 * @constructor
 */
function FlexiconButton() {
  this._icon = null;
  this.$content = $('.as-flexicon-button-content', this);
  this.$iconCtn = $('.as-flexicon-button-icon-container', this);
  this.$textCtn = $('.as-flexicon-button-text-container', this);
}
FlexiconButton.tag = 'FlexiconButton'.toLowerCase();
FlexiconButton.render = function () {
  return _({
    tag: 'button',
    "class": 'as-flexicon-button',
    child: {
      "class": 'as-icon-button-table-box',
      child: {
        "class": 'as-flexicon-button-content',
        child: ['.as-flexicon-button-icon-container', '.as-flexicon-button-text-container']
      }
    }
  });
};
FlexiconButton.property = {};
FlexiconButton.property.icon = {
  set: function set(value) {
    value = value || null;
    this._icon = value;
    this.$iconCtn.clearChild();
    if (value !== null) {
      this.$iconCtn.addChild(_(value));
    }
  },
  get: function get() {
    return this._icon;
  }
};
FlexiconButton.property.text = {
  /***
   *
   * @param {string| {mlKey:string}|*} value
   */
  set: function set(value) {
    value = value || null;
    this._text = value;
    this.$textCtn.clearChild();
    this.$textCtn.attr('data-ml-key', undefined);
    if (value === null || value === undefined) {} else if (_typeof(value) === "object") {
      if (value.mlKey) {
        this.$textCtn.attr('data-ml-key', value.mlKey);
      }
    } else {
      this.$textCtn.addChild(_({
        text: value + ''
      }));
    }
  },
  get: function get() {
    return this._text;
  }
};
_ACore["default"].install(FlexiconButton);
var _default = FlexiconButton;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(76177);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function FlexiconInput() {
  this.$input = $('.as-flexicon-input-text-input', this);
  this.$iconCtn = $('.as-flexicon-input-icon-ctn', this);
  this.$unitCtn = $('.as-flexicon-input-unit-ctn', this);
  _OOP["default"].drillProperty(this, this.$input, ['value', 'readonly']);
  this.on('click', function (event) {
    if (event.target != this.$input) this.$input.focus();
  }.bind(this));
}
FlexiconInput.prototype.on = function () {
  return this.$input.on.apply(this.$input, arguments);
};
FlexiconInput.prototype.once = function () {
  return this.$input.once.apply(this.$input, arguments);
};
FlexiconInput.prototype.off = function () {
  return this.$input.off.apply(this.$input, arguments);
};
FlexiconInput.tag = 'FlexiconInput'.toLowerCase();
FlexiconInput.render = function () {
  return _({
    "class": 'as-flexicon-input',
    child: [{
      "class": 'as-flexicon-input-icon-ctn'
    }, {
      tag: 'input',
      "class": 'as-flexicon-input-text-input',
      attr: {
        type: 'text'
      }
    }, {
      "class": 'as-flexicon-input-unit-ctn'
    }]
  });
};
FlexiconInput.property = {};
FlexiconInput.property.icon = {
  set: function set(value) {
    value = value || null;
    this._icon = value;
    this.$iconCtn.clearChild();
    if (value == null) {
      this.removeClass('as-flexicon-input-has-icon');
    } else {
      this.addClass('as-flexicon-input-has-icon');
      this.$iconCtn.addChild(_(value));
    }
  },
  get: function get() {
    return this._icon;
  }
};
FlexiconInput.property.unit = {
  set: function set(value) {
    this._unit = value;
    if (this._unit) {
      this.addClass('as-flexicon-input-has-unit');
      this.$unitCtn.clearChild().addChild(_({
        text: value + ''
      }));
    } else {
      this.removeClass('as-flexicon-input-has-unit');
      this.$unitCtn.clearChild();
    }
  },
  get: function get() {
    return this._unit;
  }
};
FlexiconInput.property.disabled = {
  set: function set(value) {
    value = !!value;
    this.$input.disabled = value;
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function get() {
    return this.$input.disabled;
  }
};
FlexiconInput.property.readOnly = {
  set: function set(value) {
    value = !!value;
    this.$input.readOnly = value;
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
_ACore["default"].install(FlexiconInput);
var _default = FlexiconInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(93138);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _AttachHook = _interopRequireDefault(__webpack_require__(7068));
var _utils = __webpack_require__(84512);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function Follower() {
  this.$attachhook = _('attachhook', this).addTo(this).on('attached', function () {
    this.requestUpdateSize();
    _Dom["default"].addToResizeSystem(this);
  });
  this.$attachhook.requestUpdateSize = this.updatePosition.bind(this);
  this.$followTarget = undefined;
  this.$scrollTrackElts = [];
  this._scrollTrackEventHandler = undefined;
  this._anchor = Follower.ANCHOR_PRIORITY;
  this.defineEvent(['updateposition', 'preupdateposition']);
  /***
   * @name followTarget
   * @type {AElement}
   * @memberOf Follower#
   */
}

Follower.prototype.cancelWaiting = function () {
  Array.prototype.forEach.call(this.childNodes, function (elt) {
    if (elt.emit && elt.isSupportedEvent('attached') && elt.cancelWaiting()) {
      elt.cancelWaiting();
    }
  });
};
Follower.prototype.revokeResource = function () {
  this.cancelWaiting();
  this.followTarget = null;
};
Follower.tag = 'Follower'.toLowerCase();
Follower.render = function () {
  return _('.absol-follower');
};
Follower.prototype.clearChild = function () {
  var children = Array.prototype.slice.call(this.children);
  var attachhookElt = this.$attachhook;
  children.forEach(function (elt) {
    if (elt !== attachhookElt) elt.remove();
  });
  return this;
};
Follower.prototype.addTo = function (elt) {
  if (elt.addChild) {
    elt.addChild(this);
  } else if (elt.appendChild) {
    elt.appendChild(this);
  }
  if (this.isDescendantOf(document.body)) {
    Array.prototype.forEach.call(this.childNodes, function (elt) {
      if (elt.emit && elt.isSupportedEvent('attached')) {
        elt.resetState();
        elt.emit('attached');
      }
    });
  }
  return this;
};
Follower.prototype.selfRemove = function () {
  Array.prototype.forEach.call(this.childNodes, function (elt) {
    if (elt.emit && elt.isSupportedEvent('attached')) {
      elt.cancelWaiting();
    }
  });
  this.remove();
  return this;
};

//Todo: remove child, find child....

/**
 * X = $target.x + F[anchor_index][0] * $target.width + F[anchor_index][1] * $content.width
 * Y = $target.y + F[anchor_index][2] * $target.height + F[anchor_index][3] * $content.height
 */
Follower.ANCHOR_FACTORS = [[1, 0, 0, 0],
//0
[0, 0, 1, 0],
//1
[1, -1, 1, 0],
//2
[0, -1, 0, 0],
//3
[0, -1, 1, -1],
//4
[1, -1, 0, -1],
//5
[0, 0, 0, -1],
//6
[1, 0, 1, -1],
//7

[1, 0, 0.5, -0.5],
//8
[0.5, -0.5, 1, 0],
//9
[0, -1, 0.5, -0.5],
//10
[0.5, -0.5, 0, -1],
//11

[1, 0, 1, 0],
//12
[0, -1, 1, 0],
//13
[0, -1, 0, -1],
//14
[1, 0, 0, -1] //15
];

Follower.ANCHOR_PRIORITY = [1, 6, 2, 5, 0, 7, 3, 4, 9, 11, 8, 10, 12, 15, 13, 14];
Follower.prototype.updatePosition = function () {
  if (!this.$followTarget) return;
  this.emit('preupdateposition', {
    target: this
  }, this);
  if (!this.$followTarget) return; // target is removed
  var targetBound = this.$followTarget.getBoundingClientRect();
  var screenSize = _Dom["default"].getScreenSize();
  var outRect = new _Rectangle["default"](0, 0, screenSize.width, screenSize.height);
  var bound = this.getBoundingClientRect();
  var x = 0;
  var y = 0;
  var score;
  var anchors = this._lastAnchor === undefined ? this.anchor : [this._lastAnchor].concat(this.anchor);
  var factor;
  var bestX,
    bestY,
    bestScore = -100000;
  var newContentRect;
  var bestAnchor;
  for (var i = 0; i < anchors.length; ++i) {
    factor = Follower.ANCHOR_FACTORS[anchors[i]];
    x = targetBound.left + factor[0] * targetBound.width + factor[1] * bound.width;
    y = targetBound.top + factor[2] * targetBound.height + factor[3] * bound.height;
    newContentRect = new _Rectangle["default"](x, y, bound.width, bound.height);
    score = newContentRect.collapsedSquare(outRect);
    if (score - 10 > bestScore) {
      bestAnchor = anchors[i];
      bestScore = score;
      bestX = x;
      bestY = y;
    }
  }
  if (this._lastAnchor !== bestAnchor) {
    this.removeClass('as-anchor-' + this._lastAnchor);
    this._lastAnchor = bestAnchor;
    this.addClass('as-anchor-' + this._lastAnchor);
  }
  this.addStyle({
    left: bestX + 'px',
    top: bestY + 'px'
  });
  this.emit('updateposition', {
    target: this
  }, this);
};
Follower.prototype.refollow = function () {
  if (!this.$followTarget) return;
  this.updatePosition();
  this.addClass('following');
  if (this._scrollTrackEventHandler) this.unfollow();
  this._scrollTrackEventHandler = this.updatePosition.bind(this);
  this.$scrollTrackElts = [];
  var trackElt = this.$followTarget;
  while (trackElt) {
    if (trackElt.addEventListener) trackElt.addEventListener('scroll', this._scrollTrackEventHandler, false);else trackElt.attachEvent('onscroll', this._scrollTrackEventHandler, false);
    this.$scrollTrackElts.push(trackElt);
    trackElt = trackElt.parentElement;
  }
  if (document.addEventListener) {
    document.addEventListener('scroll', this._scrollTrackEventHandler, false);
  } else {
    document.attachEvent('onscroll', this._scrollTrackEventHandler, false);
  }
  this.$scrollTrackElts.push(document);
};
Follower.prototype.unfollow = function () {
  if (!this._scrollTrackEventHandler) return; // nothing to do
  this.removeClass('following');
  var trackElt;
  for (var i = 0; i < this.$scrollTrackElts.length; ++i) {
    trackElt = this.$scrollTrackElts[i];
    if (trackElt.removeEventListener) trackElt.removeEventListener('scroll', this._scrollTrackEventHandler, false);else trackElt.dettachEvent('onscroll', this._scrollTrackEventHandler, false);
  }
  this.$scrollTrackElts = [];
  this._scrollTrackEventHandler = undefined;
};
Follower.prototype.revokeResource = function () {
  this.$attachhook.cancelWaiting();
  this.followTarget = null;
  while (this.lastChild) {
    (0, _utils.revokeResource)(this.lastChild);
    this.removeChild(this.lastChild);
  }
};
Follower.property = {};
Follower.property.followTarget = {
  set: function set(elt) {
    if (elt === null || elt === undefined || !elt) {
      this.unfollow();
      this.$followTarget = undefined;
      return;
    } else if (typeof elt == 'string') {
      elt = $(elt) || document.getElementById(elt);
    }
    if (_Dom["default"].isDomNode(elt)) {
      this.$followTarget = elt;
      this._lastAnchor = undefined;
      this.refollow();
    } else throw new Error("Invalid element");
  },
  get: function get() {
    return this.$followTarget;
  }
};
Follower.property.anchor = {
  set: function set(value) {
    value = value || Follower.ANCHOR_PRIORITY;
    if (value == 'auto') value = Follower.ANCHOR_PRIORITY;
    if (typeof value == null) value = [value];
    if (!(value instanceof Array)) throw new Error('Invalid anchor ' + value);
    value = value.map(function (x) {
      x = Math.floor(x);
      if (x >= 0 && x < Follower.ANCHOR_FACTORS.length) {
        return x;
      } else throw new Error("Invalid anchor: " + x);
    });
    this._anchor = value;
    this._lastAnchor = undefined;
    this.updatePosition();
  },
  get: function get() {
    return this._anchor;
  }
};
_ACore["default"].install(Follower);
var _default = Follower;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function FollowerToggler() {
  this.defineEvent(['close', 'open', 'preopen']);
  this.on('click', this.eventHandler.click);
  this.addClass('as-follower-trigger');
  this.$follower = null;
  this._opened = false;
}
FollowerToggler.tag = 'FollowerToggler'.toLowerCase();
FollowerToggler.render = function () {
  return _('div');
};
FollowerToggler.prototype.toggle = function () {
  if (this._opened) this.close();else this.open();
};
FollowerToggler.prototype.open = function () {
  if (this._opened) return;
  this._opened = true;
  this.addClass('as-follower-trigger-open');
  if (!this.$follower) return;
  this.emit('preopen', {
    name: 'preopen',
    target: this
  }, this);
  var thisTg = this;
  setTimeout(function () {
    thisTg.$follower.refollow();
    thisTg.$follower.removeClass('absol-follower-hidden');
    document.body.addEventListener('click', thisTg.eventHandler.clickBody);
    thisTg.emit('open', {
      name: 'open',
      target: this
    }, this);
  }, 1);
};
FollowerToggler.prototype.close = function () {
  if (!this._opened) return;
  this._opened = false;
  this.removeClass('as-follower-trigger-open');
  if (!this.$follower) return;
  this.$follower.unfollow();
  this.$follower.addClass('absol-follower-hidden');
  document.body.removeEventListener('click', this.eventHandler.clickBody);
  this.emit('close', {
    name: 'close',
    target: this
  }, this);
};
FollowerToggler.prototype.bindFollower = function (elt) {
  if (this.$follower) {
    this.$follower.followTarget = null;
  }
  if (elt && elt.refollow) {
    if (this._opened) elt.removeClass('absol-follower-hidden');else elt.addClass('absol-follower-hidden');
    elt.followTarget = this;
    elt.sponsorElement = this;
    this.$follower = elt;
  } else {
    throw new Error("Must be a follower!");
  }
};
FollowerToggler.eventHandler = {};
FollowerToggler.eventHandler.clickBody = function (event) {
  if (_EventEmitter["default"].hitElement(this, event) || _EventEmitter["default"].hitElement(this.$follower, event)) return;
  this.close();
};
FollowerToggler.eventHandler.click = function () {
  this.toggle();
};
_ACore["default"].install(FollowerToggler);
var _default = FollowerToggler;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.FontFamilySelectList = FontFamilySelectList;
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(69561);
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _Dom = __webpack_require__(64821);
var _Searcher = _interopRequireDefault(__webpack_require__(47106));
var _stringFormat = __webpack_require__(22294);
var _stringMatching = __webpack_require__(59163);
var _int = __webpack_require__(65909);
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 fonts = ['Arial', 'Verdana', 'Times New Roman', 'Courier New', 'Georgia', 'Palatino', 'Garamond', 'Bookman', 'Comic Sans MS', 'Trebuchet MS', 'Arial Black', 'Impact', "'Open Sans', sans-serif", "'Roboto', sans-serif", "'Big Shoulders Text', cursive", "'Montserrat', sans-serif", "'Oswald', sans-serif", "'Source Sans Pro', sans-serif", "'Roboto Condensed', sans-serif", "'Literata', serif", "'Roboto Mono', monospace", "'Roboto Slab', serif", "'Merriweather', serif", "'Noto Sans', sans-serif", "'Lora', serif", "'Muli', sans-serif", "'Open Sans Condensed', sans-serif", "'Playfair Display', serif", "'Nunito', sans-serif", "'Noto Serif', serif", "'Fira Sans', sans-serif", "'Inconsolata', monospace", "'Dosis', sans-serif", "'Nunito Sans', sans-serif", "'Arimo', sans-serif", "'Quicksand', sans-serif", "'Cabin', sans-serif", "'Josefin Sans', sans-serif", "'Varela Round', sans-serif", "'Anton', sans-serif", "'Lobster', cursive", "'Yanone Kaffeesatz', sans-serif", "'Source Code Pro', monospace", "'Baloo Bhai', cursive", "'Barlow', sans-serif", "'Dancing Script', cursive", "'Pacifico', cursive", "'Exo 2', sans-serif", "'Barlow Semi Condensed', sans-serif", "'EB Garamond', serif", "'Archivo Narrow', sans-serif", "'Asap', sans-serif", "'Comfortaa', cursive", "'Barlow Condensed', sans-serif", "'IBM Plex Sans', sans-serif", "'Maven Pro', sans-serif", "'Play', sans-serif", "'Exo', sans-serif", "'Amatic SC', cursive", "'Kanit', sans-serif", "'Fira Sans Condensed', sans-serif", "'Noto Sans SC', sans-serif", "'Vollkorn', serif", "'Prompt', sans-serif", "'Rokkitt', serif", "'Cuprum', sans-serif", "'Alegreya Sans', sans-serif", "'Francois One', sans-serif", "'Cormorant Garamond', serif", "'Alegreya', serif", "'Alfa Slab One', cursive", "'Noticia Text', serif", "'Saira Extra Condensed', sans-serif", "'Old Standard TT', serif", "'Tinos', serif", "'Fira Sans Extra Condensed', sans-serif", "'IBM Plex Serif', serif", "'Patrick Hand', cursive", "'M PLUS 1p', sans-serif", "'Prata', serif", "'Philosopher', sans-serif", "'Saira Semi Condensed', sans-serif", "'Archivo', sans-serif", "'Big Shoulders Display', cursive", "'Bangers', cursive", "'Playfair Display SC', serif", "'Cabin Condensed', sans-serif", "'Paytone One', sans-serif", "'Montserrat Alternates', sans-serif", "'Taviraj', serif", "'Spectral', serif", "'Lalezar', cursive", "'Asap Condensed', sans-serif", "'M PLUS Rounded 1c', sans-serif", "'Sigmar One', cursive", "'Saira', sans-serif", "'Pridi', serif", "'Mitr', sans-serif", "'Baloo', cursive", "'Cormorant', serif", "'Sarabun', sans-serif", "'Saira Condensed', sans-serif", "'Be Vietnam', sans-serif", "'Yeseva One', cursive", "'Lexend Peta', sans-serif", "'Alegreya Sans SC', sans-serif", "'IBM Plex Mono', monospace", "'Jura', sans-serif", "'Bevan', cursive", "'Lexend Exa', sans-serif", "'Sawarabi Gothic', sans-serif", "'Cousine', monospace", "'Markazi Text', serif", "'VT323', monospace", "'Baloo Bhaina', cursive", "'Space Mono', monospace", "'Encode Sans', sans-serif", "'Encode Sans Semi Expanded', sans-serif", "'Arima Madurai', cursive", "'Lexend Deca', sans-serif", "'Lexend Tera', sans-serif", "'Lexend Giga', sans-serif", "'Lexend Zetta', sans-serif", "'Lexend Mega', sans-serif", "'Arsenal', sans-serif", "'Itim', cursive", "'Noto Serif SC', serif", "'Pangolin', cursive", "'Lemonada', cursive", "'Encode Sans Condensed', sans-serif", "'Bai Jamjuree', sans-serif", "'Alegreya SC', serif", "'Noto Serif TC', serif", "'Judson', serif", "'Livvic', sans-serif", "'Krub', sans-serif", "'Trirong', serif", "'Niramit', sans-serif", "'Bungee Inline', cursive", "'Mali', cursive", "'Pattaya', sans-serif", "'Rosario', sans-serif", "'Bungee', cursive", "'Sriracha', cursive", "'Metrophobic', sans-serif", "'Faustina', serif", "'Darker Grotesque', sans-serif", "'Encode Sans Expanded', sans-serif", "'Chakra Petch', sans-serif", "'IBM Plex Sans Condensed', sans-serif", "'Maitree', serif", "'Baloo Bhaijaan', cursive", "'Cormorant Infant', serif", "'Saira Stencil One', cursive", "'Chonburi', cursive", "'Barriecito', cursive", "'Bahianita', cursive", "'Athiti', sans-serif", "'Sedgwick Ave', cursive", "'Patrick Hand SC', cursive", "'Srisakdi', cursive", "'Cormorant SC', serif", "'Andika', sans-serif", "'Podkova', serif", "'Bungee Shade', cursive", "'Baloo Da', cursive", "'Spectral SC', serif", "'Baloo Thambi', cursive", "'Baloo Chettan', cursive", "'Cormorant Upright', serif", "'Encode Sans Semi Condensed', sans-serif", "'Charm', cursive", "'Baloo Paaji', cursive", "'K2D', sans-serif", "'Farsan', cursive", "'David Libre', serif", "'Coiny', cursive", "'Baloo Tamma', cursive", "'Manuale', serif", "'Thasadith', sans-serif", "'Vollkorn SC', serif", "'Bungee Hairline', cursive", "'Kodchasan', sans-serif", "'Hepta Slab', serif", "'Cormorant Unicase', serif", "'Crimson Pro', serif", "'Grenze', serif", "'Charmonman', cursive", "'Baloo Tammudu', cursive", "'KoHo', sans-serif", "'Major Mono Display', monospace", "'Fahkwang', sans-serif", "'Bungee Outline', cursive", "'Sedgwick Ave Display', cursive"]; //only for test

/**
 * @extends Follower
 * @constructor
 */
function FontFamilySelectList() {
  this.on('preupdateposition', this.eventHandler.ffPreUpdatePosition);
  this.$content = (0, _ACore.$)('.as-font-family-select-list-content', this);
  this.$items = [];
  this.$selectedItem = null;
  this.$itemByValue = {};
  this.$searchInput = (0, _ACore.$)(_Searcher["default"].tag, this);
  this.$searchInput.on('stoptyping', this.eventHandler.searchChange);
  /**
   *
   * @type {string[]}
   * @memberOf FontFamilySelectList#
   */
  this.items = fonts;
  this._searchingHolders = null; //not prepared
}

FontFamilySelectList.tag = 'FontFamilySelectList'.toLowerCase();
FontFamilySelectList.render = function () {
  return (0, _ACore._)({
    tag: _Follower["default"],
    "class": ['as-font-family-select-list', 'as-dropdown-box-common-style'],
    child: [{
      "class": 'as-font-family-select-list-header',
      child: {
        tag: _Searcher["default"]
      }
    }, {
      "class": ['as-bscroller', 'as-font-family-select-list-content']
    }]
  }, true);
};
FontFamilySelectList.property = {};
FontFamilySelectList.property.items = {
  set: function set(items) {
    var _this = this;
    if (!Array.isArray(items)) items = [];
    this._items = items;
    this.$content.clearChild();
    this.$itemByValue = {};
    this._searchingHolders = null;
    this.$items = items.map(function (item) {
      var text = item.replace(/'/g, '');
      text = text.replace(/,.+/, '');
      var itemElt = (0, _ACore._)({
        "class": 'as-font-family-select-item',
        style: {
          fontFamily: item
        },
        attr: {
          'data-value': item
        },
        child: {
          text: text
        },
        on: {
          click: function click() {
            _this.value = item;
            _this.emit('select', {
              value: item
            });
          }
        }
      });
      _this.$itemByValue[item] = itemElt;
      return itemElt;
    });
    this.$content.addChild(this.$items);
  },
  get: function get() {
    return this._items;
  }
};
FontFamilySelectList.property.value = {
  set: function set(value) {
    if (this.$selectedItem) this.$selectedItem.removeClass('as-selected');
    this._value = value;
    this.$selectedItem = this.$itemByValue[value];
    if (this.$selectedItem) this.$selectedItem.addClass('as-selected');
  },
  get: function get() {
    if (this.$itemByValue[this._value]) return this._value;
    return null;
  }
};
FontFamilySelectList.prototype._makeHolder = function (item, value) {
  var res = {
    value: value,
    text: item
  };
  res.text = res.text.trim().toLowerCase();
  res.words = res.text.split(/\s+/).filter(function (w) {
    return !!w;
  });
  res.text = res.words.join(' ');
  res.nacWords = res.words.map(function (w) {
    return (0, _stringFormat.nonAccentVietnamese)(w);
  });
  res.nacText = res.nacWords.join(' ');
  res.nacWordDict = res.nacWords.reduce(function (ac, word) {
    ac[word] = true;
    return ac;
  }, {});
  return res;
};
FontFamilySelectList.prototype._prepareSearchingHolders = function () {
  var _this2 = this;
  if (this._searchingHolders) return;
  this._searchingHolders = this.items.map(function (item, idx) {
    return _this2._makeHolder(item, idx);
  });
};
FontFamilySelectList.prototype._calcMatching = function (queryHolder, itemHolder) {
  var res = {};
  var score = 0;
  if (itemHolder.text.indexOf(queryHolder.text) >= 0 || itemHolder.nacText.indexOf(queryHolder.nacText) >= 0) {
    res.mustIncluded = true;
  }
  score += (0, _stringMatching.wordsMatch)(queryHolder.words, itemHolder.words) / (0, _int.harmonicMean)(queryHolder.words.length, itemHolder.words.length);
  score += (0, _stringMatching.wordsMatch)(queryHolder.nacWords, itemHolder.nacWords) / (0, _int.harmonicMean)(queryHolder.nacWords.length, itemHolder.nacWords.length);
  var dict = Object.keys(itemHolder.nacWordDict);
  Object.keys(queryHolder.nacWordDict).forEach(function (qWord) {
    var bestWordScore = 0;
    var bestWord = '';
    var word;
    for (word in dict) {
      if ((0, _stringMatching.wordLike)(qWord, word) > bestWordScore) {
        bestWordScore = (0, _stringMatching.wordLike)(qWord, word);
        bestWord = word;
      }
    }
    if (bestWordScore > 0) {
      score += bestWordScore / (0, _int.harmonicMean)(qWord.length, bestWord.length);
      delete dict[bestWord];
    }
  });
  res.score = score;
  return res;
};
FontFamilySelectList.eventHandler = {};
FontFamilySelectList.eventHandler.ffPreUpdatePosition = function () {
  if (!this.followTarget) return;
  var bound = this.followTarget.getBoundingClientRect();
  var screenSizes = (0, _Dom.getScreenSize)();
  var availableHeight = screenSizes.height - bound.bottom;
  availableHeight = Math.max(availableHeight, bound.top);
  availableHeight -= 50;
  this.$content.addStyle('max-height', availableHeight + 'px');
};

/**
 * @this FontFamilySelectList
 */
FontFamilySelectList.eventHandler.searchChange = function () {
  var _this3 = this;
  var query = this.$searchInput.value.trim();
  var queryHolder = this._makeHolder(query, -1);
  var resultHolders, midScore, viewItemElements;
  if (query.length > 0) {
    this._prepareSearchingHolders();
    this._searchingHolders.forEach(function (itemHolder) {
      var match = _this3._calcMatching(queryHolder, itemHolder);
      Object.assign(itemHolder, match);
    });
    resultHolders = this._searchingHolders.slice();
    resultHolders.sort(function (a, b) {
      return b.score - a.score;
    });
    midScore = resultHolders[0].score * 0.7;
    resultHolders = resultHolders.filter(function (holder) {
      return holder.score >= midScore || holder.mustIncluded;
    });
    viewItemElements = resultHolders.map(function (holder) {
      return _this3.$items[holder.value];
    });
    this.$content.clearChild().addChild(viewItemElements);
  } else {
    this.$content.clearChild().addChild(this.$items);
  }
  this.updatePosition();
  console.log(query);
};
_ACore["default"].install(FontFamilySelectList);

/**
 * @extends AElement
 * @constructor
 */
function FontInput() {
  var _this4 = this;
  /**
   * @type {FontFamilySelectList}
   */
  this.$selectList = (0, _ACore._)('fontfamilyselectlist');
  this.$selectList.cancelWaiting();
  this.$selectList.sponsorElement = this;
  setTimeout(function () {
    _this4.$selectList.addTo(document.body);
    _this4.$selectList.followTarget = _this4;
  }, 100);
}
FontInput.tag = 'FontInput'.toLowerCase();
FontInput.render = function () {
  return (0, _ACore._)({
    "class": 'as-font-input'
  });
};
FontInput.property = {};
var _default = FontInput;
exports["default"] = _default;
_ACore["default"].install(FontInput);

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(74892);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _stringGenerate = __webpack_require__(10713);
var _utils = __webpack_require__(84512);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function Frame() {
  this.$parent = null; // FrameView or TabView
  //adapter
  (0, _utils.forwardEvent)(this, 'inactive', 'deactive');
}
Frame.tag = 'frame';
Frame.render = function () {
  return _({
    "class": 'absol-frame',
    attr: {
      id: (0, _stringGenerate.randomIdent)(12)
    },
    extendEvent: ['attached', 'detached', 'active', 'inactive'] // inactive and active event will be send by parent
  });
};

Frame.prototype.notifyAttached = function (parentElt) {
  this.$parent = parentElt;
  this.emit('attached', {
    type: 'attached',
    target: this,
    parentElt: parentElt
  }, this);
};
Frame.prototype.notifyDetached = function () {
  this.emit('detached', {
    type: 'detached',
    target: this,
    parentElt: this.$parent
  }, this);
  this.$parent = undefined;
};
Frame.prototype.selfRemove = function () {
  if (this.$parent) this.$parent.removeChild(this);else this["super"](); // normal remove
};

Frame.prototype.getParent = function () {
  return this.$parent;
};
Frame.prototype.requestActive = function () {
  if (this.$parent) {
    this.$parent.activeFrame(this);
  }
};
_ACore["default"].install(Frame);
var _default = Frame;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(30215);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _utils = __webpack_require__(84512);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function FrameView() {
  this.$containers = [];
  //adapt
  (0, _utils.forwardEvent)(this, 'inactiveframe', 'deactiveframe');
  (0, _utils.forwardMethod)(this, 'notifyDeactiveFrame', 'notifyInactiveFrame');
}
FrameView.tag = 'frameview';
FrameView.render = function () {
  return _({
    "class": 'absol-frame-view',
    extendEvent: ['activeframe', 'inactiveframe']
  });
};
FrameView.prototype.addChild = function (elt) {
  if (elt.hasClass && elt.hasClass('absol-frame')) {
    elt.selfRemove();
    var containerElt = _({
      "class": 'absol-frame-view-frame-container',
      child: elt,
      props: {
        __elt__: elt
      }
    });
    this.$containers.push(containerElt);
    this.appendChild(containerElt);
    elt.notifyAttached(this);
  } else {
    throw new Error('Children must be a frame');
  }
};
FrameView.prototype.addLast = function (elt) {
  this.addChild(elt);
  this.activeFrame(elt);
};
FrameView.prototype.removeLast = function () {
  if (this.$containers.length > 0) {
    this.removeChild(this.$containers[this.$containers.length - 1].__elt__);
  }
  if (this.$containers.length > 0) {
    this.activeFrame(this.$containers[this.$containers.length - 1].__elt__);
  }
};
FrameView.prototype.getLength = function () {
  return this.$containers.length;
};
FrameView.prototype.getAllChild = function () {
  return this.$containers.map(function (ctn) {
    return ctn.__elt__;
  });
};
FrameView.prototype.getLast = function () {
  if (this.$containers.length > 0) {
    return this.$containers[this.$containers.length - 1].__elt__;
  }
  return null;
};
FrameView.prototype.addChildBefore = function (elt, at) {
  if (elt.hasClass && elt.hasClass('absol-frame')) {
    elt.selfRemove();
    var index = this.childIndexOf(at);
    if (index < 0) {
      throw new Error('Second param is not a child');
    }
    var index = this.childIndexOf(at);
    var atCtnElt = this.$containers[index];
    var containerElt = _({
      "class": 'absol-frame-view-frame-container',
      child: elt,
      props: {
        __elt__: elt
      }
    });
    this.$containers.splice(index, 0, containerElt);
    this["super"](containerElt, atCtnElt);
    elt.notifyAttached(this);
  } else {
    throw new Error('Children must be a frame');
  }
};
FrameView.prototype.addChildAfter = function (elt, at) {
  if (elt.hasClass && elt.hasClass('absol-frame')) {
    elt.selfRemove();
    var index = this.childIndexOf(at);
    if (index < 0) {
      throw new Error('Second param is not a child');
    }
    var index = this.childIndexOf(at);
    var atCtnElt = this.$containers[index];
    var containerElt = _({
      "class": 'absol-frame-view-frame-container',
      child: elt,
      props: {
        __elt__: elt
      }
    });
    this.$containers.splice(index + 1, 0, containerElt);
    this["super"](containerElt, atCtnElt);
    elt.notifyAttached(this);
  } else {
    throw new Error('Children must be a frame');
  }
};
FrameView.prototype.removeChild = function (elt) {
  var ctnEltIndex = this.childIndexOf(elt);
  if (ctnEltIndex >= 0) {
    var ctnElt = this.$containers[ctnEltIndex];
    this.$containers.splice(ctnEltIndex, 1);
    this["super"](ctnElt);
  } else {
    throw new Error('Removed element is not a child!');
  }
};
FrameView.prototype.childIndexOf = function (elt) {
  for (var i = 0; i < this.$containers.length; ++i) {
    if (this.$containers[i].__elt__ == elt) return i;
  }
  return -1;
};
FrameView.prototype.findChildBefore = function (elt) {
  var eltIndex = this.childIndexOf(elt);
  if (eltIndex < 0) return -1;
  return this.$containers[eltIndex - 1];
};
FrameView.prototype.findChildAfter = function (elt) {
  var eltIndex = this.childIndexOf(elt);
  if (eltIndex < 0) return -1;
  return this.$containers[eltIndex + 1];
};
FrameView.prototype.clearChild = function () {
  while (this.$containers.length > 0) {
    this.removeChild(this.$containers[0].__elt__);
  }
  return this;
};
FrameView.prototype.findChildById = function (id) {
  var elt;
  for (var i = 0; i < this.$containers.length; ++i) {
    elt = this.$containers[i].__elt__;
    if (elt.getAttribute('id') == id) return elt;
  }
  return undefined;
};
FrameView.prototype.getAllChild = function () {
  return this.$containers.map(function (ctnElt) {
    return ctnElt.__elt__;
  });
};
FrameView.prototype.activeFrame = function (frameElt) {
  var ctnElt, elt;
  for (var i = 0; i < this.$containers.length; ++i) {
    ctnElt = this.$containers[i];
    elt = ctnElt.__elt__;
    if (frameElt === elt) {
      if (!ctnElt.hasClass('absol-active')) {
        ctnElt.addClass('absol-active');
        this.notifyActiveFrame(elt);
      }
      // else do nothing
    } else {
      if (ctnElt.hasClass('absol-active')) {
        ctnElt.removeClass('absol-active');
        this.notifyInactiveFrame(elt);
      }
      // else do nonthing
    }
  }

  return this;
};
FrameView.prototype.notifyActiveFrame = function (frameElt, originEvent) {
  frameElt.emit('active', {
    target: frameElt,
    type: 'active',
    originEvent: originEvent
  });
  this.emit('activeframe', {
    type: 'activeframe',
    target: this,
    frameElt: frameElt,
    originEvent: originEvent
  }, this);
};
FrameView.prototype.notifyInactiveFrame = function (frameElt, originEvent) {
  this.emit('inactiveframe', {
    type: 'inactiveframe',
    target: this,
    frameElt: frameElt,
    originEvent: originEvent
  }, this);
};
FrameView.prototype.activeFrameById = function (id) {
  var frameElt = this.findChildById(id);
  if (frameElt) this.activeFrame(frameElt);
  return this;
};
_ACore["default"].install(FrameView);
var _default = FrameView;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(61908);
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _noop = _interopRequireDefault(__webpack_require__(5025));
var _Object = __webpack_require__(84131);
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function HRuler() {
  var _this = this;
  this.$attachHook = _('attachhook').on('attached', function () {
    _this.requestUpdateSize = _this.update.bind(_this);
    _ResizeSystem["default"].add(_this.$attachHook);
    _this.requestUpdateSize();
  }).addTo(this);
  this.$attachHook.requestRevokeResource = this.revokeResource.bind(this);
  this.$lines = [];
  this.$numbers = [];
  this._viewingNumberCount = 0;
  this._viewingLineCount = 0;
  this._spacing = 10;
  this._major = 10;
  this.$measureTarget = null;
  this._valueFloat = 'left';

  /**
   * @type {number}
   * @name major
   * @memberof HRuler#
   */
  /**
   * @type {number}
   * @name spacing
   * @memberof HRuler#
   */

  /**
   * @type {boolean}
   * @name inverse
   * @memberof HRuler#
   */
}

HRuler.tag = 'hruler';
HRuler.render = function () {
  return _({
    "class": 'as-hruler'
  });
};
HRuler.prototype.measureElement = function (elt) {
  if (typeof elt == "string") elt = $(elt);
  this.$measureTarget = elt;
  this.update();
};
HRuler.prototype.update = function () {
  var fontSize = this.getFontSize();
  var measureBound;
  var bound = this.getBoundingClientRect();
  if (!bound.width || !bound.height) return;
  var contentBound = {
    left: bound.left + 1,
    right: bound.right - 1,
    top: bound.top + 1,
    bottom: bound.bottom - 1,
    width: bound.width - 2,
    height: bound.height - 2
  };
  if (this.$measureTarget) {
    measureBound = this.$measureTarget.getBoundingClientRect();
  } else {
    measureBound = contentBound;
  }
  var startOffset = (measureBound[this._valueFloat] - contentBound[this._valueFloat]) * (this.inverse ? -1 : 1) % this._spacing;
  if (startOffset < 0) startOffset += this._spacing;
  var lineIndexOffset = Math.round(((contentBound[this._valueFloat] - measureBound[this._valueFloat]) * (this.inverse ? -1 : 1) + startOffset) / this._spacing);
  var lineCount = Math.floor((contentBound.width - startOffset) / this._spacing) + 1;
  lineCount = Math.max(0, lineCount);
  while (this.$lines.length < lineCount) {
    this.$lines.push(_('.as-hruler-line'));
  }
  var i;
  var lineElt;
  for (i = 0; i < lineCount; ++i) {
    lineElt = this.$lines[i];
    if ((i + lineIndexOffset) % this._major === 0) {
      lineElt.addClass('major');
    } else {
      lineElt.removeClass('major');
    }
    lineElt.addStyle(this._valueFloat, startOffset + this._spacing * i - 0.5 + 'px');
  }
  while (this._viewingLineCount < lineCount) {
    this.$lines[this._viewingLineCount++].addTo(this);
  }
  while (this._viewingLineCount > lineCount) {
    this.$lines[--this._viewingLineCount].remove();
  }
  var numberCount = Math.floor((lineCount + lineIndexOffset - 1) / this._major) - Math.ceil(lineIndexOffset / this._major) + 1;
  while (this.$numbers.length < numberCount) {
    this.$numbers.push(_('.as-hruler-major-number'));
  }
  var numberElt;
  var number;
  var majorStartOfset = startOffset;
  if (lineIndexOffset > 0) {
    majorStartOfset += (this._major - lineIndexOffset % this._spacing) * this._spacing;
  } else {
    majorStartOfset += (this._major - (this._spacing + lineIndexOffset % this._spacing)) * this._spacing;
  }
  for (i = 0; i < numberCount; ++i) {
    number = (Math.ceil(lineIndexOffset / this._major) + i) * this._spacing * this._major;
    numberElt = this.$numbers[i];
    if (numberElt.__cacheNumber__ != number) {
      numberElt.__cacheNumber__ = number;
      numberElt.innerHTML = number + '';
    }
    numberElt.addStyle(this._valueFloat, majorStartOfset + this._major * i * this._spacing - 0.7 * 2.5 * fontSize + 'px');
  }
  while (this._viewingNumberCount < numberCount) {
    this.$numbers[this._viewingNumberCount++].addTo(this);
  }
  while (this._viewingNumberCount > numberCount) {
    this.$numbers[--this._viewingNumberCount].remove();
  }
};
HRuler.prototype.revokeResource = function () {
  this.$attachHook.cancelWaiting();
  this.$measureTarget = null;
  (0, _Object.revokeResource)(this.$lines);
  (0, _Object.revokeResource)(this.$numbers);
  this.clearChild();
  this.revokeResource = _noop["default"];
};
HRuler.property = {};
HRuler.property.major = {
  set: function set(value) {
    if (value > 0) {
      this._major = value;
      this.update();
    }
  },
  get: function get() {
    return this._major;
  }
};
HRuler.property.spacing = {
  set: function set(value) {
    if (value > 0) {
      this._spacing = value;
      this.update();
    }
  },
  get: function get() {
    return this._spacing;
  }
};
HRuler.property.inverse = {
  set: function set(value) {
    this._valueFloat = value ? 'right' : 'left';
    this.update();
  },
  get: function get() {
    return this._valueFloat === 'right';
  }
};
_ACore["default"].install(HRuler);
var _default = HRuler;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(6026);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Vec = _interopRequireDefault(__webpack_require__(73316));
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _EventEmitter = __webpack_require__(46833);
var _AElement = _interopRequireDefault(__webpack_require__(63445));
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', 'draginit', 'dragdeinit']); //predrag is draginit
  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: 'draginit',
    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('draginit', preDragEvent, this);
  this.emit('predrag', Object.assign(preDragEvent, {
    type: 'predrag'
  }), this);
  if (preDragEvent.canceled) {
    this._hangerPointerData = null;
    return;
  }
  if (isTouch) this.on2.call(document, this._touchEvents);else this.on2.call(document, this._mouseEvents);
};
Hanger.eventHandler.hangerPointerMove = function (event) {
  var _this = this;
  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.trackedScrollers = function () {
        var res = [];
        var c = _this._hangerPointerData.target;
        while (c) {
          c.addEventListener('scroll', _this.eventHandler.trackingScroll);
          res.push(c);
          c = c.parentElement;
        }
        document.addEventListener('scroll', _this.eventHandler.trackingScroll);
        res.push(document);
        return res;
      }();
      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 _this2 = this;
  var pointerData = this._hangerPointerData;
  var isTouch = event.type === 'touchend';
  var dragEndEvent;
  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) {
    pointerData.trackedScrollers.forEach(function (elt) {
      return elt.removeEventListener('scroll', _this2.eventHandler.trackingScroll);
    });
    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, this._touchEvents);else this.off2.call(document, this._mouseEvents);
  this.emit('dragdeinit', {
    type: 'dragdeinit',
    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
  });
};
Hanger.eventHandler.trackingScroll = function (event) {
  var pointerData = this._hangerPointerData;
  var currentPoint = pointerData.currentPoint;
  var dragEvent = {
    type: 'drag',
    originEvent: event,
    isTouch: false,
    bound: pointerData.bound,
    startingPoint: pointerData.startingPoint,
    offsetVec: pointerData.offsetVec,
    pointerIdent: pointerData.pointerIdent,
    currentPoint: currentPoint,
    target: pointerData.target,
    clientX: currentPoint.x,
    clientY: currentPoint.y,
    isScrolling: true,
    preventDefault: function preventDefault() {
      // event.preventDefault();
    }
  };
  this.emit('drag', dragEvent, this);
};
_ACore["default"].install(Hanger);
var _default = Hanger;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(68829);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Svg = _interopRequireDefault(__webpack_require__(98315));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var _g = _Svg["default"].ShareInstance._;
var $g = _Svg["default"].ShareInstance.$;
var Design = {
  hexaHeight: 425,
  textBoxHeight: 286,
  textHeight: 96,
  indexHeight: 110,
  textBoxPaddingLeft: 127,
  borderWidth: 38
};
var StyleSheet = {
  '.as-hexa-section-label-text': {
    height: Design.textBoxHeight / Design.textHeight + 'em',
    'padding-left': Design.textBoxPaddingLeft / Design.textHeight + 'em',
    'line-height': Design.textBoxHeight / Design.textHeight + 'em'
  },
  '.as-hexa-section-label-index': {
    'font-size': Design.indexHeight / Design.textHeight + 'em',
    height: Design.hexaHeight / Design.indexHeight + 'em',
    'line-height': Design.hexaHeight / Design.indexHeight + 'em',
    width: (Design.hexaHeight + Design.borderWidth) / Math.cos(Math.PI / 6) / Design.indexHeight + 'em'
  }
};
_({
  tag: 'style',
  id: 'hexa-section-label-style',
  props: {
    innerHTML: Object.keys(StyleSheet).map(function (key) {
      var style = StyleSheet[key];
      return key + ' {\n' + Object.keys(style).map(function (propName) {
        return propName + ': ' + style[propName] + ';';
      }).join('\n') + '}';
    }).join('\n')
  }
}).addTo(document.head);

/***
 * @extends AElement
 * @constructor
 */
function HexaSectionLabel() {
  this.$background = $('.as-hexa-section-label-background', this);
  this.$index = $('.as-hexa-section-label-index', this);
  this.$text = $('.as-hexa-section-label-text', this);
  this.$attachhook = _('attachhook').addTo(this).on('error', function () {
    _Dom["default"].addToResizeSystem(this);
    this.requestUpdateSize();
  });
  this.$attachhook.requestUpdateSize = this.redrawBackground.bind(this);
  this.$svg = _g({
    tag: 'svg',
    attr: {
      width: '0',
      height: '0'
    },
    child: ['path.as-hexa-section-label-text-box', 'path.as-hexa-section-label-index-box']
  }).addTo(this.$background);
  this.$indexBox = $g('path.as-hexa-section-label-index-box', this.$svg);
  this.$textBox = $g('path.as-hexa-section-label-text-box', this.$svg);
}
HexaSectionLabel.prototype.redrawBackground = function () {
  var indexBound = this.$index.getBoundingClientRect();
  var textBound = this.$text.getBoundingClientRect();
  var cHeight = indexBound.height;
  var cWidth = textBound.right - indexBound.left;
  this.$svg.attr({
    height: cHeight + '',
    width: cWidth + '',
    viewBox: [0, 0, cWidth, cHeight].join(' ')
  });
  var borderWidth = cHeight * Design.borderWidth / Design.hexaHeight;
  var radius = cHeight / Math.cos(Math.PI / 6) / 2 - borderWidth / 2;
  var x0 = indexBound.width / 2;
  var y0 = cHeight / 2;
  this.$indexBox.attr('d', Array(6).fill(0).map(function (u, i) {
    var angle = Math.PI / 3 + i * Math.PI / 3;
    var x = radius * Math.cos(angle) + x0;
    var y = radius * Math.sin(angle) + y0;
    return (i == 0 ? 'M' : 'L') + x + ' ' + y;
  }).join(' ') + 'Z').addStyle({
    strokeWidth: borderWidth + ''
  });
  var skewX = 18 / 45;
  var textBoxHeight = textBound.height;
  this.$textBox.attr('d', [[x0, (cHeight - textBoxHeight) / 2], [cWidth - 1, (cHeight - textBoxHeight) / 2], [cWidth - 1 - textBoxHeight * skewX, (cHeight - textBoxHeight) / 2 + textBoxHeight], [x0, (cHeight - textBoxHeight) / 2 + textBoxHeight]].map(function (point, i) {
    return (i == 0 ? 'M' : 'L') + point.join(' ');
  }).join(' ') + 'Z');
};
HexaSectionLabel.tag = 'HexaSectionLabel'.toLowerCase();
HexaSectionLabel.render = function () {
  return _({
    "class": 'as-hexa-section-label',
    child: [{
      "class": 'as-hexa-section-label-background'
    }, '.as-hexa-section-label-index', '.as-hexa-section-label-text']
  });
};
HexaSectionLabel.property = {};
HexaSectionLabel.property.index = {
  set: function set(value) {
    this._index = value;
    this.$index.clearChild().addChild(_({
      text: value + ''
    }));
  },
  get: function get() {
    return this._index;
  }
};
HexaSectionLabel.property.text = {
  set: function set(value) {
    this._text = value;
    this.$text.clearChild().addChild(_({
      text: value + ''
    }));
  },
  get: function get() {
    return this._text;
  }
};
_ACore["default"].install(HexaSectionLabel);
var _default = HexaSectionLabel;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function IconSprite() {
  this.$attachhook = _('attachhook').addTo(this).on('error', this.eventHandler.attached);
  this.on('frame', this.eventHandler.frame);
  this._checkRootTimeout = 30;
  this.loop = true;
}
IconSprite.tag = 'iconsprite';
IconSprite.render = function () {
  return _('sprite', true);
};

/**
 * @type {IconSprite}
 */
IconSprite.eventHandler = {};
IconSprite.eventHandler.attached = function () {
  var thisAS = this;
  this._checkRootTimeout = 30;
  this.afterReady().then(function () {
    thisAS.width = thisAS.texture.naturalWidth;
    thisAS.height = thisAS.width;
    thisAS.frames = {
      type: 'grid',
      col: 1,
      row: thisAS.texture.naturalHeight / thisAS.texture.naturalWidth
    };
    thisAS.drawFrame(0);
    thisAS.play();
  });
};
IconSprite.eventHandler.frame = function () {
  this._checkRootTimeout--;
  if (this._checkRootTimeout == 0) {
    if (this.isDescendantOf(document.body)) {
      this._checkRootTimeout = 30;
    } else {
      this.stop();
      this.remove();
    }
  }
};
_ACore["default"].install(IconSprite);
var _default = IconSprite;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.CityIcon = CityIcon;
exports.ConfigurationFormOutlineIcon = ConfigurationFormOutlineIcon;
exports.CountryIcon = CountryIcon;
exports.DataTypeConfiguratorOutlineIcon = DataTypeConfiguratorOutlineIcon;
exports.FontColorIcon = FontColorIcon;
exports.FunctionManagerIcon = FunctionManagerIcon;
exports.InputFormOutlineIcon = InputFormOutlineIcon;
exports.InsertColLeftIcon = InsertColLeftIcon;
exports.InsertColRightIcon = InsertColRightIcon;
exports.MdiStoreMarkerOutline = MdiStoreMarkerOutline;
exports.MobileFormEditOutlineIcon = MobileFormEditOutlineIcon;
exports.MobileInputFormOutlineIcon = MobileInputFormOutlineIcon;
exports.MobileOutputFormOutlineIcon = MobileOutputFormOutlineIcon;
exports.OutputFormOutlineIcon = OutputFormOutlineIcon;
exports.ProcedureOutlineIcon = ProcedureOutlineIcon;
exports.ProcessOutlineIcon = ProcessOutlineIcon;
exports.SpinnerIco = SpinnerIco;
exports.TemplateIcon = TemplateIcon;
exports.TimeBasedPayrollReportIcon = TimeBasedPayrollReportIcon;
exports.WindowsFormEditOutlineIcon = WindowsFormEditOutlineIcon;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _spinner = _interopRequireDefault(__webpack_require__(40420));
var _mdi_store_marker_outline = _interopRequireDefault(__webpack_require__(15436));
var _font_color = _interopRequireDefault(__webpack_require__(54371));
var _insert_col_left = _interopRequireDefault(__webpack_require__(39314));
var _insert_col_right = _interopRequireDefault(__webpack_require__(28791));
var _process_outline = _interopRequireDefault(__webpack_require__(42592));
var _procedure_outline = _interopRequireDefault(__webpack_require__(55330));
var _mobile_form_edit_outline = _interopRequireDefault(__webpack_require__(77083));
var _windows_form_edit_outline = _interopRequireDefault(__webpack_require__(85792));
var _input_form_outline = _interopRequireDefault(__webpack_require__(20677));
var _output_form_outline = _interopRequireDefault(__webpack_require__(24722));
var _template = _interopRequireDefault(__webpack_require__(70858));
var _mobile_input_form_outline = _interopRequireDefault(__webpack_require__(55073));
var _mobile_output_form_outline = _interopRequireDefault(__webpack_require__(50296));
var _city = _interopRequireDefault(__webpack_require__(80303));
var _country = _interopRequireDefault(__webpack_require__(76634));
var _configuration_form_outline = _interopRequireDefault(__webpack_require__(42116));
var _function_manager = _interopRequireDefault(__webpack_require__(7870));
var _data_type_configuration_outline = _interopRequireDefault(__webpack_require__(58993));
var _time_based_payroll_report = _interopRequireDefault(__webpack_require__(24453));
__webpack_require__(58934);
var _Color = _interopRequireDefault(__webpack_require__(64974));
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 SpinnerIco() {
  return _ACore["default"]._(_spinner["default"]);
}
SpinnerIco.tag = 'SpinnerIco'.toLowerCase();
_ACore["default"].install(SpinnerIco);
function InsertColLeftIcon() {
  return _ACore["default"]._(_insert_col_left["default"]);
}
InsertColLeftIcon.tag = 'InsertColLeftIcon'.toLowerCase();
_ACore["default"].install(InsertColLeftIcon);
function InsertColRightIcon() {
  return _ACore["default"]._(_insert_col_right["default"]);
}
InsertColRightIcon.tag = 'InsertColRightIcon'.toLowerCase();
_ACore["default"].install(InsertColRightIcon);
function MdiStoreMarkerOutline() {
  return _ACore["default"]._(_mdi_store_marker_outline["default"]);
}
MdiStoreMarkerOutline.tag = 'mdi-store-marker-outline';
_ACore["default"].install(MdiStoreMarkerOutline);
function ProcessOutlineIcon() {
  return (0, _ACore._)(_process_outline["default"]);
}
ProcessOutlineIcon.tag = 'ProcessOutlineIcon'.toLowerCase();
_ACore["default"].install(ProcessOutlineIcon);
function ProcedureOutlineIcon() {
  return (0, _ACore._)(_procedure_outline["default"]);
}
ProcedureOutlineIcon.tag = 'ProcedureOutlineIcon'.toLowerCase();
_ACore["default"].install(ProcedureOutlineIcon);
function WindowsFormEditOutlineIcon() {
  return (0, _ACore._)(_windows_form_edit_outline["default"]);
}
WindowsFormEditOutlineIcon.tag = 'WindowsFormEditOutlineIcon'.toLowerCase();
_ACore["default"].install(WindowsFormEditOutlineIcon);
function MobileFormEditOutlineIcon() {
  return (0, _ACore._)(_mobile_form_edit_outline["default"]);
}
MobileFormEditOutlineIcon.tag = 'MobileFormEditOutlineIcon'.toLowerCase();
_ACore["default"].install(MobileFormEditOutlineIcon);
function TemplateIcon() {
  return (0, _ACore._)(_template["default"]);
}
TemplateIcon.tag = 'TemplateIcon'.toLowerCase();
_ACore["default"].install(TemplateIcon);
function InputFormOutlineIcon() {
  return (0, _ACore._)(_input_form_outline["default"]);
}
InputFormOutlineIcon.tag = 'InputFormOutlineIcon'.toLowerCase();
_ACore["default"].install(InputFormOutlineIcon);
function OutputFormOutlineIcon() {
  return (0, _ACore._)(_output_form_outline["default"]);
}
OutputFormOutlineIcon.tag = 'OutputFormOutlineIcon'.toLowerCase();
_ACore["default"].install(OutputFormOutlineIcon);
function MobileInputFormOutlineIcon() {
  return (0, _ACore._)(_mobile_input_form_outline["default"]);
}
MobileInputFormOutlineIcon.tag = 'MobileInputFormOutlineIcon'.toLowerCase();
_ACore["default"].install(MobileInputFormOutlineIcon);
function MobileOutputFormOutlineIcon() {
  return (0, _ACore._)(_mobile_output_form_outline["default"]);
}
function CityIcon() {
  return (0, _ACore._)(_city["default"]);
}
CityIcon.tag = 'CityIcon'.toLowerCase();
_ACore["default"].install(CityIcon);
function CountryIcon() {
  return (0, _ACore._)(_country["default"]);
}
CountryIcon.tag = 'CountryIcon'.toLowerCase();
_ACore["default"].install(CountryIcon);
MobileOutputFormOutlineIcon.tag = 'MobileOutputFormOutlineIcon'.toLowerCase();
_ACore["default"].install(MobileOutputFormOutlineIcon);
function FontColorIcon() {
  this._value = '#000000';
  this.$contract = (0, _ACore.$)('.as-font-color-contract', this);
  this.$value = (0, _ACore.$)('.as-font-color-value', this);
  this.value = 'cyan';
}
FontColorIcon.tag = 'FontColorIcon'.toLowerCase();
FontColorIcon.render = function () {
  return (0, _ACore._)(_font_color["default"]);
};
FontColorIcon.property = {};
FontColorIcon.property.value = {
  set: function set(value) {
    var cValue;
    if (typeof value === "string") {
      try {
        cValue = _Color["default"].parse(value);
        value = cValue.toString('hex6');
      } catch (err) {
        value = "#000000";
        cValue = _Color["default"].parse(value);
      }
    } else if (value instanceof _Color["default"]) {
      cValue = value;
      value = value.toString('hex6');
    } else {
      value = "#000000";
      cValue = _Color["default"].parse(value);
    }
    this._value = value;
    var hColor = cValue.getContrastYIQ();
    this.$contract.addStyle('fill', hColor.toString("hex6"));
    this.$value.addStyle('fill', this._value.toString('hex6'));
  },
  get: function get() {
    return this._value;
  }
};
function ConfigurationFormOutlineIcon() {
  return (0, _ACore._)(_configuration_form_outline["default"]);
}
ConfigurationFormOutlineIcon.tag = 'ConfigurationFormOutlineIcon'.toLowerCase();
_ACore["default"].install(ConfigurationFormOutlineIcon);
function FunctionManagerIcon() {
  return (0, _ACore._)(_function_manager["default"]);
}
FunctionManagerIcon.tag = 'FunctionManagerIcon'.toLowerCase();
_ACore["default"].install(FunctionManagerIcon);
function DataTypeConfiguratorOutlineIcon() {
  return (0, _ACore._)(_data_type_configuration_outline["default"]);
}
DataTypeConfiguratorOutlineIcon.tag = 'DataTypeConfiguratorOutlineIcon'.toLowerCase();
_ACore["default"].install(DataTypeConfiguratorOutlineIcon);
function TimeBasedPayrollReportIcon() {
  return (0, _ACore._)(_time_based_payroll_report["default"]);
}
TimeBasedPayrollReportIcon.tag = 'TimeBasedPayrollReportIcon'.toLowerCase();
_ACore["default"].install(TimeBasedPayrollReportIcon);

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _Text = __webpack_require__(35844);
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; }
/***
 * @augments HTMLInputElement
 * @augments AElement
 * @constructor
 */
function IdentTextInput() {
  this.history = new ITIHistory(this);
  this.textCtrl = new ITITextController(this);
  // this.on('keydown', this.eventHandler.identTextKeyDown)
  //     .on('paste', this.applyData ? this.eventHandler.identTextPaste : this.eventHandler.identTextPaste1);
}

IdentTextInput.tag = 'IdentTextInput'.toLowerCase();
IdentTextInput.render = function () {
  return (0, _ACore._)('input.as-text-input[type="text"]');
};
IdentTextInput.prototype._filterHistory = function () {
  if (!this.history) return;
  var temp = this.history.filter(function (t) {
    return !t.text.match(/(^[^a-zA-Z_$])|([^a-zA-Z$_0-9]+)/);
  });
  this.history.splice(0, this.history.length);
  this.history.push.apply(this.history, temp);
};
IdentTextInput.prototype._setNewText = function (text, caretPos) {
  this._filterHistory();
  if (typeof caretPos !== "number") caretPos = text.length;
  caretPos = Math.max(0, Math.min(text.length, caretPos >> 0));
  if (this.applyData) {
    this.applyData(text, {
      start: caretPos,
      end: caretPos,
      direction: 'forward'
    });
  } else {
    this.value = text;
    (0, _Text.setCaretPosition)(this, caretPos);
  }
};
IdentTextInput.property = {};
IdentTextInput.property.lowerCaseOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-lower-case-only');
      this.value = this.value.toLowerCase();
    } else {
      this.removeClass('as-lower-case-only');
    }
  },
  get: function get() {
    return this.addClass('as-lower-case-only');
  }
};
_ACore["default"].install(IdentTextInput);
var _default = IdentTextInput;
/**
 *
 * @param {IdentTextInput} elt
 * @constructor
 */
exports["default"] = _default;
function ITIHistory(elt) {
  this.elt = elt;
}

/**
 *
 * @param {IdentTextInput} elt
 * @constructor
 */
function ITITextController(elt) {
  var _this = this;
  this.elt = elt;
  Object.keys(this.constructor.prototype).forEach(function (key) {
    if (key.startsWith('ev_')) _this[key] = _this[key].bind(_this);
  });
  this.elt.on('keydown', this.ev_keydown);
}
ITITextController.prototype.keyboardRegex = /[a-zA-Z$_0-9]/;
ITITextController.prototype.getSelectionStart = function () {
  var start = 0;
  if (this.elt.selectionStart || this.elt.selectionStart === 0) start = this.elt.selectionStart;
  return start;
};
ITITextController.prototype.getSelectionEnd = function () {
  var end = 0;
  if (this.elt.selectionEnd || this.elt.selectionEnd === 0) end = this.elt.selectionEnd;
  return end;
};
ITITextController.prototype.ev_keydown = function (event) {
  var selectedPositionStart;
  var key = event.key;
  if (key === ' ') {
    event.preventDefault();
  } else if (key === 'Enter') {
    event.preventDefault();
    this.elt.blur();
  } else if (key === "Escape") {
    // this.value = this._prevValue || '';
    this.elt.blur();
  } else if (!event.ctrlKey && !event.altKey && key.length === 1) {
    // if (nonAccentVietnamese(key).match(this.keyboardRegex)) {
    //     selectedPositionStart = this.getSelectionStart();
    //     if (selectedPositionStart === 0 && key.match(/[0-9]/)) {
    //         event.preventDefault();
    //     }
    // }
    // else {
    //     event.preventDefault();
    // }
  }
};

/***/ }),

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

"use strict";


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;
__webpack_require__(19175);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _datetime = __webpack_require__(58286);
var _ContextMenu = _interopRequireDefault(__webpack_require__(24733));
var _utils = __webpack_require__(84512);
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; }
/***
 * @extends AElement
 * @constructor
 */
function KVCommentItem() {
  this._time = new Date();
  this._text = '';
  this.$text = (0, _ACore.$)('.kv-comment-item-text', this);
  this.$time = (0, _ACore.$)('.kv-comment-item-time', this);
  this.$avatar = (0, _ACore.$)('.kv-comment-avatar', this);
  this.quickmenu = null;
  this.on('contextmenu', this.eventHandler.kv_contextmenu);
  _ContextMenu["default"].auto();
}
KVCommentItem.tag = 'KVCommentItem'.toLowerCase();
KVCommentItem.render = function () {
  return (0, _ACore._)({
    extendEvent: 'contextmenu',
    "class": "kv-comment-item",
    child: [{
      "class": "kv-comment-avatar-ctn",
      child: {
        "class": 'kv-comment-avatar',
        style: {
          backgroundImage: 'url(https://raw.githubusercontent.com/duthienkt/absol/master/logo.svg?sanitize=true)'
        }
      }
    }, {
      "class": "kv-comment-item-content",
      child: [{
        "class": 'kv-comment-item-text',
        child: {
          text: ''
        }
      }, {
        "class": 'kv-comment-item-time',
        child: {
          text: (0, _datetime.formatDateTime)(new Date(), 'dd/MM/yyyy HH:mm')
        }
      }]
    }, {
      "class": "kv-comment-item-flag-ctn",
      child: ['.kv-comment-item-flag-unread']
    }]
  });
};
KVCommentItem.property = {};
KVCommentItem.property.text = {
  set: function set(value) {
    value = value || '';
    if (typeof value === 'string') this.$text.innerHTML = value;else if (absol.Dom.isDomNode(value)) {
      this.$text.clearChild().addChild(value);
    } else {
      this.$text.clearChild().addChild((0, _ACore._)(value));
    }
    this._text = value;
  },
  get: function get() {
    return this._text;
  }
};
KVCommentItem.property.unread = {
  set: function set(value) {
    if (value) {
      this.addClass('as-unread');
    } else {
      this.removeClass('as-unread');
    }
  },
  get: function get() {
    return this.hasClass('as-unread');
  }
};
KVCommentItem.property.time = {
  set: function set(value) {
    this._time = value;
    var text = '';
    if (typeof value === 'string') text = value;else if (value instanceof Date) {
      text = (0, _datetime.formatDateTime)(value, 'dd/MM/yyyy HH:mm');
    }
    this.$time.firstChild.data = text;
  },
  get: function get() {
    return this._time;
  }
};
KVCommentItem.property.avatar = {
  set: function set(value) {
    value = value || 'https://raw.githubusercontent.com/duthienkt/absol/master/logo.svg?sanitize=true';
    this._avatar = value;
    this.$avatar.addStyle('backgroundImage', 'url(' + value + ')');
  },
  get: function get() {
    return this._avatar;
  }
};

/***
 * @memberOf KVCommentItem#
 * @type {{}}
 */
KVCommentItem.eventHandler = {};

/***
 * @this KVCommentItem
 * @param event
 */
KVCommentItem.eventHandler.kv_contextmenu = function (event) {
  if (this.quickmenu) {
    event.showContextMenu(this.quickmenu.props, function (event) {
      var menuItem = (0, _utils.cleanMenuItemProperty)(event.menuItem);
      if (this.quickmenu.onSelect) {
        this.quickmenu.onSelect.call(this, menuItem);
      }
    }.bind(this));
  }
};
_ACore["default"].install(KVCommentItem);
var _default = KVCommentItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(56090);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _Svg = _interopRequireDefault(__webpack_require__(98315));
var _utils = __webpack_require__(84512);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var _g = _Svg["default"].ShareInstance._;
var $g = _Svg["default"].ShareInstance.$;
var Design = {
  textHeight: 56,
  barHeight: 97,
  barBlockWidth: 79,
  barBlockMargin: 19,
  valueTextHeight: 70,
  valueStrokeWidth: 5,
  valueHeight: 99,
  valueWidth: 52,
  valueTripHeight: 32,
  height: 430,
  barY: 201
};
var SyleSheet = {
  '.as-linear-color-bar': {
    height: Design.height / Design.textHeight + 'em'
  },
  '.as-linear-color-value-text': {
    'font-size': Design.valueTextHeight / Design.textHeight + 'em'
  }
};
(0, _utils.buildCss)(SyleSheet);
function LinearColorBar() {
  this._indent = (Math.random() + '').replace(/[^0-9]/g, '_');
  this._extendValue = 0;
  this._value = 0;
  this._valueText = '';
  this.$valueText = $('.as-linear-color-value-text', this);
  this.$minValueText = $('.as-linear-color-min-value-text', this);
  this.$maxValueText = $('.as-linear-color-max-value-text', this);
  this.$background = $('svg.as-linear-color-background', this);
  this._attached = false;
  var thisBar = this;
  this.$attachhook = _('attachhook').addTo(this).on('error', function () {
    thisBar._attached = true;
    _Dom["default"].addToResizeSystem(this);
    this.requestUpdateSize();
  });
  this.$background.attr({
    height: 0,
    width: 0
  });
  this.$attachhook.requestUpdateSize = this.redraw.bind(this);
  this.$defs = _g('defs').addTo(this.$background);
  this.$gradient = _g('linearGradient#gradient_' + this._indent).attr({
    x1: "0%",
    y1: "0%",
    x2: "100%",
    y2: "0%"
  }).addTo(this.$defs);
  this.$rect = _g('rect.as-linear-color-bar-rect').attr({
    fill: 'url(#gradient_' + this._indent + ')'
  }).addTo(this.$background);
  this.$splitLine = _g('path.as-linear-color-split-line').addTo(this.$background);
  this.$valueArrow = _g('path.as-linear-color-value-arrow').addTo(this.$background);
  this.colorMapping = 'rainbow';
}
LinearColorBar.prototype.redraw = function () {
  var bBound = this.getBoundingClientRect();
  var cWidth = bBound.width;
  var cHeight = bBound.height;
  var maxTextBound = this.$maxValueText.getBoundingClientRect();
  var minTextBound = this.$minValueText.getBoundingClientRect();
  var valueTextBound = this.$valueText.getBoundingClientRect();
  var valueWidth = Design.valueWidth / Design.height * cHeight;
  var minValueX = valueWidth / 1.5;
  this.$minValueText.addStyle('left', Math.max((minValueX - minTextBound.width) / 2, 0) + 'px');
  var maxValueX = (cWidth - Design.valueWidth) / (1 + this._extendValue);
  var extendX = cWidth - valueWidth / 1.5;
  var valueX = minValueX + this._value * (maxValueX - minValueX);
  this.$valueText.addStyle('left', valueX - valueTextBound.width / 2 + 'px');
  this.$maxValueText.addStyle('left', maxValueX - maxTextBound.width / 2 + 'px');
  var barY = Design.barY / Design.height * cHeight;
  var barHeight = Design.barHeight / Design.height * cHeight;
  this.$rect.attr({
    x: '' + minValueX,
    y: '' + barY,
    width: extendX - minValueX + '',
    height: barHeight
  });
  this.$background.attr({
    height: cHeight + '',
    width: cWidth + '',
    viewBox: [0, 0, cWidth, cHeight].join(' ')
  });
  var valueTripHeight = Design.valueTripHeight / Design.height * cHeight;
  var valueHeight = Design.valueHeight / Design.height * cHeight;
  this.$valueArrow.addStyle('stroke-width', Design.valueStrokeWidth / Design.height * cHeight + '').attr('d', [[[valueX, barY], [valueX - valueWidth / 2, barY - valueTripHeight], [valueX - valueWidth / 2, barY - valueHeight], [valueX + valueWidth / 2, barY - valueHeight], [valueX + valueWidth / 2, barY - valueTripHeight]]].map(function (point, i) {
    return (i == 0 ? 'M' : 'L') + point.join(' ');
  }).join(' ') + 'Z');
  var splitDistMin = (Design.barBlockWidth + Design.barBlockMargin) / Design.height * cHeight;
  var splitCounts = [100, 50, 20, 10, 5, 2, 1];
  var splitDist = maxValueX - minValueX;
  var splitCount = 1;
  for (var i = 0; i < splitCounts.length; ++i) {
    splitDist = (maxValueX - minValueX) / splitCounts[i];
    if (splitDist >= splitDistMin) {
      splitCount = splitCounts[i];
      break;
    }
  }
  this.$splitLine.addStyle('stroke-width', Design.barBlockMargin / Design.height * cHeight + '').attr({
    d: Array(splitCount + 1).fill(0).map(function (u, i) {
      return 'M' + (maxValueX - i * splitDist) + ' ' + (barY - 1) + 'v' + (barHeight + 2);
    }).join(' ')
  });
};
LinearColorBar.prototype._updateGradient = function () {
  var barMax = 1 + this._extendValue;
  var gradientElt = this.$gradient.clearChild();
  this._colorMapping.forEach(function (it) {
    _g({
      tag: 'stop',
      attr: {
        offset: (it.value <= 1 ? it.value / barMax * 100 : 100) + '%'
      },
      style: {
        'stop-color': it.color + '',
        'stop-opacity': '1'
      }
    }).addTo(gradientElt);
  });
};
LinearColorBar.prototype.BUILDIN_COLORS_RANGE = {
  'rainbow': [{
    value: 0,
    color: 'red'
  }, {
    value: 1 / 6,
    color: 'orange'
  }, {
    value: 1 / 3,
    color: 'yellow'
  }, {
    value: 1 / 2,
    color: 'green'
  }, {
    value: 2 / 3,
    color: 'blue'
  }, {
    value: 5 / 6,
    color: 'indigo'
  }, {
    value: 1,
    color: 'violet'
  }, {
    value: Infinity,
    color: 'violet'
  }],
  'rainbow-invert': [{
    value: 0,
    color: 'violet'
  }, {
    value: 1 / 6,
    color: 'indigo'
  }, {
    value: 1 / 3,
    color: 'blue'
  }, {
    value: 1 / 2,
    color: 'green'
  }, {
    value: 2 / 3,
    color: 'yellow'
  }, {
    value: 5 / 6,
    color: 'orange'
  }, {
    value: 1,
    color: 'red'
  }, {
    value: Infinity,
    color: 'violet'
  }],
  'performance': [{
    value: 0,
    color: 'red'
  }, {
    value: 0.5,
    color: 'orange'
  }, {
    value: 1,
    color: 'green'
  }, {
    value: Infinity,
    color: 'green'
  }],
  'performance-invert': [{
    value: 0,
    color: 'green'
  }, {
    value: 0.5,
    color: 'orange'
  }, {
    value: 1,
    color: 'red'
  }, {
    value: Infinity,
    color: 'red'
  }]
};
LinearColorBar.tag = 'LinearColorBar'.toLowerCase();
LinearColorBar.render = function () {
  return _({
    "class": 'as-linear-color-bar',
    child: ['svg.as-linear-color-background', '.as-linear-color-value-text', '.as-linear-color-min-value-text', '.as-linear-color-max-value-text']
  });
};
LinearColorBar.property = {};
LinearColorBar.property.valueText = {
  set: function set(value) {
    value = value + '';
    this._valueText = value;
    this.$valueText.clearChild().addChild(_({
      text: value
    }));
  },
  get: function get() {
    return this._valueText;
  }
};
LinearColorBar.property.minValueText = {
  set: function set(value) {
    value = value + '';
    this._minValueText = value;
    this.$minValueText.clearChild().addChild(_({
      text: value
    }));
  },
  get: function get() {
    return this._valueText;
  }
};
LinearColorBar.property.maxValueText = {
  set: function set(value) {
    value = value + '';
    this._maxValueText = value;
    this.$maxValueText.clearChild().addChild(_({
      text: value
    }));
  },
  get: function get() {
    return this._valueText;
  }
};
LinearColorBar.property.value = {
  set: function set(value) {
    this._value = value;
  },
  get: function get() {
    return this._value;
  }
};
LinearColorBar.property.extendValue = {
  set: function set(value) {
    this._extendValue = value;
    this._updateGradient();
  },
  get: function get() {
    return this._extendValue;
  }
};
LinearColorBar.property.colorMapping = {
  set: function set(value) {
    if (typeof value == "string") value = this.BUILDIN_COLORS_RANGE[value];
    this._colorMapping = value.slice();
    this._colorMapping.sort(function (a, b) {
      return a.value - b.value;
    });
    this._updateGradient();
  },
  get: function get() {
    return this._colorMapping;
  }
};
_ACore["default"].install(LinearColorBar);
var _default = LinearColorBar;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _LinearColorBar = _interopRequireDefault(__webpack_require__(28848));
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _printer = __webpack_require__(97397);
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
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 {AElement}
 * @constructor
 */
function LinearColorTinyBar() {
  this._value = 0;
  this._colorMapping = 0;
  this._colorMapping = this.BUILDIN_COLORS_RANGE.rainbow;
  this.$textCtn = (0, _ACore.$)('.as-linear-color-tiny-text', this);
  /***
   *
   * @type {Text}
   */
  this.$text = this.$textCtn.firstChild;
  /***
   * @type {string} valueText
   * @memberOf LinearColorTinyBar#
   * @name valueText
   */

  /***
   * @type {number}  from 0..1..Inf
   * @memberOf LinearColorTinyBar#
   * @name value
   */

  /***
   * @type {Array} - from 0..1..Inf
   * @memberOf LinearColorTinyBar#
   * @name colorMapping#
   */
}

LinearColorTinyBar.tag = 'LinearColorTinyBar'.toLowerCase();
LinearColorTinyBar.render = function () {
  return (0, _ACore._)({
    "class": 'as-linear-color-tiny-bar',
    child: [{
      tag: 'span',
      "class": 'as-linear-color-tiny-text',
      style: {
        display: 'none'
      },
      child: {
        text: ''
      }
    }, '.as-linear-color-tiny-bar-rect']
  });
};
LinearColorTinyBar.prototype.BUILDIN_COLORS_RANGE = _LinearColorBar["default"].prototype.BUILDIN_COLORS_RANGE;
LinearColorTinyBar.prototype._updateColor = function () {
  var value = this._value;
  var colorMapping = this.colorMapping;
  var i = 0;
  while (i < colorMapping.length) {
    if (i + 1 == colorMapping.length || colorMapping[i + 1].value > value) break;
    ++i;
  }
  this.addStyle('--color', colorMapping[i].color + '');
};
LinearColorTinyBar.property = {};
LinearColorTinyBar.property.value = {
  set: function set(value) {
    if (typeof value === "string") value = parseFloat(value);
    if (typeof value !== "number") value = 0;
    if (isNaN(value)) value = 0;
    this._value = Math.max(value, 0);
    this.addStyle('--value', this._value + '');
    this._updateColor();
  },
  get: function get() {
    return this._value;
  }
};
LinearColorTinyBar.property.valueText = {
  set: function set(value) {
    if (typeof value === "string" || typeof value === 'number') {
      this.$text.data = value;
      this.$textCtn.removeStyle('display', 'none');
    } else {
      this.$text.data = '';
      this.$textCtn.addStyle('display', 'none');
    }
  },
  get: function get() {
    return this.$text.data;
  }
};
LinearColorTinyBar.property.colorMapping = {
  set: function set(value) {
    var ok = true;
    if (typeof value === 'string') {
      if (!(value in this.BUILDIN_COLORS_RANGE)) {
        value = 'rainbow';
      }
      value = this.BUILDIN_COLORS_RANGE[value];
    } else if (value instanceof Array) {
      ok = value.length > 1;
      if (!ok) {
        console.warn("colorMapping.length must > 1", value);
      }
    } else {
      console.warn("Invalid colorMapping", value);
    }
    if (!ok) value = this.BUILDIN_COLORS_RANGE.rainbow;
    this._colorMapping = value;
    this._updateColor();
  },
  get: function get() {
    return this._colorMapping;
  }
};
_ACore["default"].install(LinearColorTinyBar);
var _default = LinearColorTinyBar;
exports["default"] = _default;
_printer.ShareSerializer.addHandlerBefore({
  match: function match(elt, scope, stack) {
    return elt.hasClass && elt.hasClass('as-linear-color-tiny-bar-rect');
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    var bound = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    bound.x -= printer.O.x;
    bound.y -= printer.O.y;
    printer.rect(bound, {
      fill: elt.getComputedStyleValue('background-color')
    });
  }
}, '*');

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _stringGenerate = __webpack_require__(10713);
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; }
/***
 * @extends Modal
 * @constructor
 */
function LoadingCubeModal() {}
LoadingCubeModal.tag = 'LoadingCubeModal'.toLowerCase();
LoadingCubeModal.render = function () {
  return (0, _ACore._)({
    tag: 'modal',
    "class": 'as-loading-cube-modal',
    child: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; background: rgb(241, 242, 243); display: block; shape-rendering: auto;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">\n' + '<g transform="translate(26.666666666666668,26.666666666666668)">\n' + '  <rect x="-20" y="-20" width="40" height="40" fill="#13a9df">\n' + '    <animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1500000000000001;1" begin="-0.3s"></animateTransform>\n' + '  </rect>\n' + '</g>\n' + '<g transform="translate(73.33333333333333,26.666666666666668)">\n' + '  <rect x="-20" y="-20" width="40" height="40" fill="#4be44c">\n' + '    <animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1500000000000001;1" begin="-0.2s"></animateTransform>\n' + '  </rect>\n' + '</g>\n' + '<g transform="translate(26.666666666666668,73.33333333333333)">\n' + '  <rect x="-20" y="-20" width="40" height="40" fill="#e2d58b">\n' + '    <animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1500000000000001;1" begin="0s"></animateTransform>\n' + '  </rect>\n' + '</g>\n' + '<g transform="translate(73.33333333333333,73.33333333333333)">\n' + '  <rect x="-20" y="-20" width="40" height="40" fill="#e1e7e7">\n' + '    <animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1500000000000001;1" begin="-0.1s"></animateTransform>\n' + '  </rect>\n' + '</g>\n' + '</svg>'
  });
};
LoadingCubeModal.share = {
  token: null,
  $elt: null
};

/***
 *
 * @return {String}
 */
LoadingCubeModal.show = function () {
  if (!LoadingCubeModal.share.$elt) LoadingCubeModal.share.$elt = (0, _ACore._)(LoadingCubeModal.tag);
  if (!LoadingCubeModal.share.$elt.isDescendantOf(document.body)) {
    document.body.appendChild(LoadingCubeModal.share.$elt);
  }
  LoadingCubeModal.share.token = (0, _stringGenerate.randomIdent)(9);
  return LoadingCubeModal.share.token;
};

/***
 *
 * @param {String} token
 * @return {Boolean}
 */
LoadingCubeModal.close = function (token) {
  if (LoadingCubeModal.share.$elt && LoadingCubeModal.share.$elt.isDescendantOf(document.body) && (!token || token === LoadingCubeModal.share.token)) {
    this.share.$elt.remove();
    LoadingCubeModal.share.token = null;
    return true;
  }
  return false;
};
_ACore["default"].install(LoadingCubeModal);
var _default = LoadingCubeModal;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _LocationPicker = _interopRequireDefault(__webpack_require__(76693));
__webpack_require__(15472);
var _EventEmitter = __webpack_require__(46833);
var _utils = __webpack_require__(84512);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
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 _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 LocationInput() {
  this.$text = (0, _ACore.$)('input', this).on('change', this.eventHandler.textChange);
  this.$iconCtn = (0, _ACore.$)('.as-location-input-icon-ctn', this).on('click', this.eventHandler.clickIcon);

  /***
   * @type {{latitude: number, longitude: number}}
   * @name latLng
   * @memberOf LocationInput#
   */

  /***
   * @type {string}
   * @name value
   * @memberOf LocationInput#
   */
  /***
   * @type {boolean}
   * @name readOnly
   * @memberOf LocationInput#
   */
}

LocationInput.tag = 'LocationInput'.toLowerCase();
LocationInput.render = function () {
  return (0, _ACore._)({
    "class": 'as-location-input',
    extendEvent: ['change'],
    child: [{
      tag: 'input',
      attr: {
        type: 'text'
      },
      "class": 'as-location-input-text'
    }, {
      "class": 'as-location-input-icon-ctn',
      child: 'span.mdi.mdi-google-maps'
    }]
  });
};
LocationInput.prototype.share = {
  $modal: null,
  $picker: null,
  $holder: null
};
LocationInput.prototype._preparePicker = function () {
  if (this.share.$picker) return;
  this.share.$picker = (0, _ACore._)({
    tag: _LocationPicker["default"].tag
  });
  this.share.$modal = (0, _ACore._)({
    tag: 'modal',
    "class": 'as-location-input-modal',
    child: {
      "class": 'as-location-input-modal-window',
      child: this.share.$picker
    }
  });
  if (_BrowserDetector["default"].isMobile) {
    this.share.$modal.addClass('as-mobile');
  }
};

/***
 * @this LocationInput
 * @private
 */
LocationInput.prototype._attachPicker = function () {
  if (this.share.$holder) {
    this.share.$holder._releasePicker();
  }
  this._preparePicker();
  this.share.$holder = this;
  this.$iconCtn.off('click', this.eventHandler.clickIcon);
  document.body.appendChild(this.share.$modal);
  this.share.$picker.on('action', this.eventHandler.pickerAction);
  this.share.$picker.$searchInput.value = '';
  this.share.$picker.readOnly = this.readOnly;
  setTimeout(function () {
    document.addEventListener('click', this.eventHandler.clickOut);
  }.bind(this), 100);
  var value = this.latLng;
  if (value) {
    value = new google.maps.LatLng(value.latitude, value.longitude);
  }
  if (value) this.share.$picker.selectLocation(value, true);else this.share.$picker.selectPlace(null);
};
LocationInput.prototype._releasePicker = function () {
  if (this.share.$holder !== this) return;
  this.share.$picker.off('action', this.eventHandler.pickerAction);
  this.$iconCtn.on('click', this.eventHandler.clickIcon);
  document.removeEventListener('click', this.eventHandler.clickOut);
  this.share.$modal.remove();
  this.share.$holder = null;
};

/**
 *
 * @type {{}}
 * @memberOf LocationInput#
 */
LocationInput.eventHandler = {};
LocationInput.eventHandler.pickerAction = function (event) {
  if (!this.readOnly && event.action === 'OK' && this.share.$picker.selectedPlace && this.share.$picker.selectedPlace.geometry && this.share.$picker.selectedPlace.geometry.location) {
    this.$text.value = [this.share.$picker.selectedPlace.geometry.location.lat(), this.share.$picker.selectedPlace.geometry.location.lng()].join(', ');
    this.emit('change', {
      type: 'change',
      originalEvent: event.originalEvent || event,
      target: this
    }, this);
  }
  this._releasePicker();
};

/***
 * @this LocationInput
 */
LocationInput.eventHandler.clickIcon = function () {
  this._attachPicker();
};

/***
 * @this LocationInput
 * @param event
 */
LocationInput.eventHandler.clickOut = function (event) {
  if (event.target === this.share.$modal) this._releasePicker();
};
LocationInput.eventHandler.textChange = function (event) {
  this.emit('change', {
    type: 'change',
    originalEvent: event.originalEvent || event,
    target: this
  }, this);
};
LocationInput.property = {};
LocationInput.property.value = {
  set: function set(value) {
    value = value || null;
    var lat, lng;
    if (typeof value === "string") {
      this.$text.value = value;
      return;
    }
    if (value instanceof Array) {
      lat = value[0];
      lng = value[1];
    } else if (value && _typeof(value) === 'object') {
      if ('latitude' in value && 'longitude' in value) {
        lat = value.latitude;
        lng = value.longitude;
      } else if (value instanceof google.maps.LatLng) {
        lat = value.lat();
        lng = value.lng();
      }
    }
    if ((0, _utils.isRealNumber)(lat) && (0, _utils.isRealNumber)(lng)) {
      this.$text.value = [lat, lng].join(', ');
    } else {
      this.$text.value = '';
    }
  },
  get: function get() {
    var nums = this.$text.value.split(/\s*,\s*/);
    var lat = parseFloat(nums[0]);
    var lng = parseFloat(nums[1]);
    if ((0, _utils.isRealNumber)(lat) && (0, _utils.isRealNumber)(lng)) {
      lat = Math.max(-90, Math.min(90, lat));
      if (lng < 180 && lng > 180) lng = (lng + 180 + 360 * Math.ceil(Math.abs(lng) / 360 + 2)) % 360 - 180;
      return [lat, lng].join(', ');
    } else {
      return '';
    }
  }
};
LocationInput.property.latLng = {
  get: function get() {
    var nums = this.$text.value.split(/\s*,\s*/);
    var lat = parseFloat(nums[0]);
    var lng = parseFloat(nums[1]);
    if ((0, _utils.isRealNumber)(lat) && (0, _utils.isRealNumber)(lng)) {
      lat = Math.max(-90, Math.min(90, lat));
      if (lng < 180 && lng > 180) lng = (lng + 180 + 360 * Math.ceil(Math.abs(lng) / 360 + 2)) % 360 - 180;
      return {
        latitude: lat,
        longitude: lng
      };
    } else {
      return null;
    }
  }
};
LocationInput.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
    this.$text.readOnly = !!value;
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
LocationInput.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
    this.$text.disabled = !!value;
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
_ACore["default"].install(LocationInput);
var _default = LocationInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.createMyLocationMarkerContent = createMyLocationMarkerContent;
exports["default"] = void 0;
exports.getGoogleMapLib = getGoogleMapLib;
exports.getGoogleMarkerLib = getGoogleMarkerLib;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _utils = __webpack_require__(84512);
__webpack_require__(15472);
var _AutoCompleteInput = _interopRequireDefault(__webpack_require__(54845));
var _FlexiconButton = _interopRequireDefault(__webpack_require__(78266));
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _stringGenerate = __webpack_require__(10713);
var _XLoader = __webpack_require__(47913);
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 _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); }
///https://developers.google.com/maps/documentation/javascript/examples/geocoding-place-id

var googleMapLibs = null;
function getGoogleMapLib() {
  var jsElt;
  if (!googleMapLibs) {
    if (window.google && window.google.maps) {
      return Promise.resolve(window.google.maps);
    } else {
      jsElt = Array.prototype.find.call(document.head.childNodes, function (elt) {
        if (_typeof(elt.src) && elt.src.startsWith('https://maps.googleapis.com/maps/api/js')) return jsElt;
      });
      if (jsElt) {
        return new Promise(function (resolve, reject) {
          if (jsElt.readyState) {
            //IE
            jsElt.onreadystatechange = function () {
              if (jsElt.readyState === "loaded" || jsElt.readyState === "complete") {
                jsElt.onreadystatechange = null;
                resolve();
              }
            };
          } else {
            //Others
            var onLoad = function onLoad() {
              resolve();
              jsElt.removeEventListener('load', onLoad);
            };
            jsElt.addEventListener('load', onLoad);
          }
        });
      } else {
        throw new Error("Could not detect Google Map API!");
      }
    }
  }
  return googleMapLibs;
}
var googleMarkerLibSync = null;
function getGoogleMarkerLib() {
  if (!googleMarkerLibSync) googleMarkerLibSync = getGoogleMapLib().then(function () {
    return google.maps.importLibrary("marker");
  }).then(function (mdl) {
    google.maps.marker = mdl;
    return mdl;
  });
  return googleMarkerLibSync;
}
function createMyLocationMarkerContent() {
  var svgTxt = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n    <circle r=\"10\" cx=\"12\" cy=\"12\"  style=\"stroke: white; stroke-width: 2px; fill: #1da1ff\"></circle>\n</svg>";
  return (0, _ACore._)(svgTxt);
}

/***
 * @extends AElement
 * @constructor
 */
function LocationPicker() {
  getGoogleMarkerLib();
  if (_BrowserDetector["default"].isMobile) {
    this.addClass('as-mobile');
  }
  this.map = new google.maps.Map(this, {
    mapId: (0, _stringGenerate.randomIdent)(),
    //'DEMO_MAP_ID',
    zoom: 8,
    scaleControl: true,
    center: new google.maps.LatLng(21.018755, 105.839729),
    streetViewControl: false,
    fullscreenControl: false,
    mapTypeControl: true,
    mapTypeControlOptions: {
      style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
      position: google.maps.ControlPosition.TOP_RIGHT
    }
  });
  this.map.setOptions({
    draggableCursor: 'default'
  });
  this.map.addListener('click', this.eventHandler.clickMap);
  this.geocoder = new google.maps.Geocoder();
  this.infoWindow = new google.maps.InfoWindow();
  this.$myLocationBtn = (0, _ACore._)({
    tag: 'button',
    "class": 'as-location-picker-control-btn',
    child: 'span.mdi.mdi-crosshairs-gps',
    on: {
      click: this.selectMyLocation.bind(this)
    }
  });
  this.$rightBottomCtn = (0, _ACore._)({
    "class": 'as-location-picker-control-ctn',
    child: [this.$myLocationBtn],
    style: {
      overflow: 'hidden'
    }
  });
  this.$searchInput = (0, _ACore._)({
    tag: _AutoCompleteInput["default"].tag,
    "class": 'as-location-picker-search-input',
    props: {
      adapter: this
    },
    child: {
      "class": 'as-location-picker-search-input-search-icon-ctn',
      child: 'span.mdi.mdi-magnify',
      on: {
        click: this.eventHandler.search
      }
    },
    on: {
      change: this.eventHandler.searchChange
    }
  });
  this.$searchInput.$input.on('keydown', this.eventHandler.searchKeypress);
  this.$topLeftCtn = (0, _ACore._)({
    "class": ['as-location-picker-control-ctn', 'as-top'],
    child: [this.$searchInput]
  });
  this.$okBtn = (0, _ACore._)({
    tag: _FlexiconButton["default"].tag,
    "class": 'primary',
    props: {
      text: 'OK',
      disabled: true
    },
    on: {
      click: this.eventHandler.clickAction.bind(this, 'OK')
    }
  });
  this.$cancelBtn = (0, _ACore._)({
    tag: _FlexiconButton["default"].tag,
    "class": ['as-location-picker-cancel-btn', 'secondary'],
    props: {
      text: 'CANCEL'
    },
    on: {
      click: this.eventHandler.clickAction.bind(this, 'CANCEL')
    }
  });
  this.$bottomLeftCtn = (0, _ACore._)({
    "class": ['as-location-picker-control-ctn', 'as-transparent', 'as-bottom'],
    style: {
      paddingBottom: '5px'
    },
    child: [this.$okBtn, this.$cancelBtn]
  });
  this.map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(this.$rightBottomCtn);
  this.map.controls[google.maps.ControlPosition.TOP_LEFT].push(this.$topLeftCtn);
  this.map.controls[google.maps.ControlPosition.BOTTOM_LEFT].push(this.$bottomLeftCtn);
  this.autoCompleteService = new google.maps.places.AutocompleteService(this.map, {
    fields: ["place_id", "geometry", "name", "formatted_address"]
  });
  this.placeService = new google.maps.places.PlacesService(this.map);
  this.selectedMarker = null;
  this.searchingMarkers = [];
  this.myLocationMarker = null;

  /***
   * @type {LatLng}
   * @name value
   * @memberOf LocationPicker#
   */
  /***
   * @type {boolean}
   * @name readOnly
   * @memberOf LocationPicker#
   */
}

LocationPicker.tag = 'LocationPicker'.toLowerCase();
LocationPicker.render = function () {
  return (0, _ACore._)({
    "class": 'as-location-picker',
    extendEvent: ['action', 'location', 'requestlocation', 'error']
  });
};
LocationPicker.prototype.queryItems = function (query) {
  var request = {
    input: query,
    locationBias: this.map.getBounds()
  };
  return new Promise(function (resolve) {
    this.autoCompleteService.getPlacePredictions(request, function (results, status) {
      if (status === google.maps.places.PlacesServiceStatus.OK) {
        resolve(results);
      } else resolve([]);
    });
  }.bind(this));
};
LocationPicker.prototype.getItemText = function (item, mInput) {
  return item.description;
};
LocationPicker.prototype.getItemView = function (item, index, _, $, query, reuseItem, refParent, mInput) {
  return _({
    "class": 'as-place-search-auto-complete-item',
    child: [{
      "class": 'as-place-search-auto-complete-item-desc',
      child: {
        text: item.description
      }
    }]
  });
};
LocationPicker.prototype.getBoundsZoomLevel = function (bounds) {
  var mapDim = this.getBoundingClientRect();
  return (0, _utils.getMapZoomLevel)(mapDim, bounds);
};
LocationPicker.prototype.clearSearchingMarkers = function () {
  while (this.searchingMarkers.length > 0) {
    this.searchingMarkers.pop().setMap(null);
  }
};

/**
 *
 * @param place
 * @param {boolean=} panTo
 */
LocationPicker.prototype.selectPlace = function (place, panTo) {
  var _this = this;
  if (arguments.length === 1) panTo = true;
  return getGoogleMarkerLib().then(function () {
    _this.selectedPlace = place || null;
    if (_this.selectedMarker) {
      _this.selectedMarker.setMap(null);
    }
    _this.$okBtn.disabled = !_this.selectedPlace;
    if (!place) return;
    var latLng = place.geometry && place.geometry.location;
    if (!latLng) return;
    var zoom = panTo && (place.geometry.bounds || place.geometry.viewport) ? _this.getBoundsZoomLevel(place.geometry.bounds || place.geometry.viewport) : 18;
    if (panTo) {
      _this.map.setZoom(zoom);
      setTimeout(function () {
        _this.map.panTo(latLng);
      }, 100);
    }
    _this.selectedMarker = new google.maps.marker.AdvancedMarkerElement({
      map: _this.map,
      position: latLng
    });
    _this.infoWindow.setContent((place.name ? place.name + ' - ' : '') + place.formatted_address);
    _this.infoWindow.open(_this.map, _this.selectedMarker);
  });
};
LocationPicker.prototype.showSearchPlaces = function (places) {
  this.clearSearchingMarkers();
  if (!places || places.length === 0) return;
  if (places.length === 1) {
    this.selectPlace(places[0]);
    return;
  }
  var bounds = places.reduce(function (ac, place) {
    if (place.geometry && place.geometry.location) ac.extend(place.geometry.location);
    return ac;
  }, new google.maps.LatLngBounds());
  var zoom = places.length === 1 ? places[0].geometry.bounds || places[0].geometry.viewport ? this.getBoundsZoomLevel(places[0].geometry.bounds || places[0].geometry.viewport) : 18 : this.getBoundsZoomLevel(bounds);
  var center = places.length === 1 ? places[0].geometry.location : bounds.getCenter();
  this.map.setCenter(center);
  this.map.setZoom(zoom);
  places.reduce(function (ac, place, i) {
    var marker;
    if (place.geometry && place.geometry.location) {
      marker = new google.maps.marker.AdvancedMarkerElement({
        map: this.map,
        position: place.geometry.location
        // icon: 'https://raw.githubusercontent.com/Concept211/Google-Maps-Markers/master/images/marker_black.png'
      });

      ac.push(marker);
      marker.addListener('click', this.eventHandler.clickMarker.bind(null, marker, place));
    }
    return ac;
  }.bind(this), this.searchingMarkers);
};

/***
 *
 * @param {string} placeId
 * @param {boolean=} panTo
 */
LocationPicker.prototype.selectPlaceId = function (placeId, panTo) {
  var _this2 = this;
  if (arguments.length === 1) panTo = true;
  return new Promise(function (resolve) {
    _this2.placeService.getDetails({
      placeId: placeId,
      fields: ["name", "formatted_address", "place_id", "geometry"]
    }, function (place, status) {
      if (status === google.maps.places.PlacesServiceStatus.OK && place && place.geometry && place.geometry.location) {
        _this2.selectPlace(place, panTo).then(function () {
          resolve(true);
        });
      } else {
        resolve(false);
      }
    });
  });
};

/***
 *
 * @param latLng
 * @param {boolean=} panTo
 */
LocationPicker.prototype.selectLocation = function (latLng, panTo) {
  var _this3 = this;
  if (arguments.length === 1) panTo = true;
  if (arguments.length === 1) panTo = true;
  return getGoogleMarkerLib().then(function () {
    if (_this3.selectedMarker) {
      _this3.selectedMarker.setMap(null);
    }
    _this3.$okBtn.disabled = !latLng;
    _this3.selectedPlace = null;
    if (!latLng) return;
    _this3.selectedPlace = {
      geometry: {
        location: latLng
      }
    };
    var zoom = 18;
    if (panTo) {
      _this3.map.setZoom(zoom);
      setTimeout(function () {
        _this3.map.panTo(latLng);
      }, 100);
    }
    _this3.selectedMarker = new google.maps.marker.AdvancedMarkerElement({
      map: _this3.map,
      position: latLng
    });
  });

  // this.infoWindow.open(this.map, this.selectedMarker);

  /*
  return this.geocoder
      .geocode({ location: latLng })
      .then(function (response) {
          if (response.results[0]) {
              return this.selectPlaceId(response.results[0].place_id, panTo);
          }
          else {
              return false;
          }
      }.bind(this))
      .catch(function (e) {
          safeThrow(e);
          return false;
      });
     */
};

LocationPicker.prototype.watchMyLocation = function (location, position) {
  var _this4 = this;
  return getGoogleMarkerLib().then(function () {
    if (_this4.myLocationMarker) return;
    _this4.accuracyCircle = new google.maps.Circle({
      strokeColor: "#1988c3",
      strokeOpacity: 0.4,
      strokeWeight: 2,
      fillColor: "#1988c3",
      fillOpacity: 0.2,
      radius: 100,
      map: _this4.map,
      clickable: false
    });
    _this4.accuracyCircle.setEditable(false);
    _this4.myLocationMarker = new google.maps.marker.AdvancedMarkerElement({
      position: location,
      title: "My Location",
      // sName: "My Location",
      map: _this4.map,
      content: createMyLocationMarkerContent()
    });
    if (position && position.coords) {
      _this4.accuracyCircle.setRadius(position.coords.accuracy);
      // Snackbar.show('Accuracy: ' + position.coords.accuracy.toFixed(1) + '(m)');
    }

    var id;
    if (navigator.geolocation.watchPosition && navigator.geolocation.watchPosition) {
      id = navigator.geolocation.watchPosition(function (props) {
        if (!this.isDescendantOf(document.body)) {
          navigator.geolocation.clearWatch(id);
        }
        this.emit('location_now', {
          location: props.coords
        });
        this.myLocationMarker.position = new google.maps.LatLng(props.coords.latitude, props.coords.longitude);
        this.accuracyCircle.setCenter(new google.maps.LatLng(props.coords.latitude, props.coords.longitude));
        this.accuracyCircle.setRadius(props.coords.accuracy);
        // Snackbar.show('Sai số tọa độ: ' + props.coords.accuracy.toFixed(1) + ' mét');
      }.bind(_this4), function () {}, {
        enableHighAccuracy: false,
        timeout: 5000,
        maximumAge: 0
      });
    }
  });
};
LocationPicker.prototype.selectMyLocation = function () {
  var _this5 = this;
  var id = (0, _stringGenerate.randomIdent)();
  this.emit('requestlocation', {
    id: id
  });
  if (navigator.geolocation) {
    var to = setTimeout(function () {
      _this5.emit('error', Object.assign(new Error("GPS không phản hồi!"), {
        id: id
      }));
    }, 10000);
    navigator.geolocation.getCurrentPosition(function (position) {
      clearTimeout(to);
      var location = null;
      if (position && position.coords) {
        _this5.emit('location', {
          location: position.coords,
          id: id
        });
        location = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
      }
      if (location) {
        _this5.watchMyLocation(location, position);
        if (!_this5.readOnly) _this5.selectLocation(location);else {
          _this5.map.setCenter(location);
        }
      }
    }, function (err) {
      clearTimeout(to);
      if (err && err.message.indexOf('denied') >= 0) err = Object.assign(new Error("Yêu cầu lấy tọa độ bị từ chối!"), {
        id: id
      });
      _this5.emit('error', err);
    }, {
      maximumAge: Infinity
    });
  }
};
LocationPicker.property = {};
LocationPicker.property.zoom = {
  set: function set(value) {
    if (!(0, _utils.isRealNumber)(value)) {
      value = 1;
    }
    this.map.setZoom(value);
  },
  get: function get() {
    return this.map.getZoom();
  }
};
LocationPicker.property.center = {
  set: function set(value) {
    value = value || null;
    var latlng = null;
    if (value instanceof google.maps.LatLng) {
      latlng = value;
    } else if (value && (0, _utils.isRealNumber)(value.latitude) && (0, _utils.isRealNumber)(value.longitude)) {
      latlng = new google.maps.LatLng(value.latitude, value.longitude);
    } else if (value instanceof Array && (0, _utils.isRealNumber)(value[0]) && (0, _utils.isRealNumber)(value[1])) {
      latlng = new google.maps.LatLng(value[0], value[1]);
    }
    latlng = latlng || new google.maps.LatLng(21.018755, 105.839729);
    this.map.setCenter(latlng || new google.maps.LatLng(21.018755, 105.839729));
  },
  get: function get() {
    return this.map.getCenter();
  }
};
LocationPicker.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};

/***
 *
 * @type {{}}
 * @memberOf LocationPicker#
 */
LocationPicker.eventHandler = {};

/***
 * @this LocationPicker
 */
LocationPicker.eventHandler.searchKeypress = function (event) {
  if (event.key === 'Enter') setTimeout(function () {
    if (!this.$searchInput.selectedItem) {
      this.eventHandler.search();
    }
  }.bind(this), 100);
};
LocationPicker.eventHandler.searchChange = function () {
  var item = this.$searchInput.selectedItem;
  if (!item) return;
  this.placeService.getDetails({
    placeId: item.place_id,
    fields: ["name", "formatted_address", "place_id", "geometry"]
  }, function (place, status) {
    if (status === google.maps.places.PlacesServiceStatus.OK && place && place.geometry && place.geometry.location) {
      this.selectPlace(place);
    }
  }.bind(this));
};

/***
 * @this LocationPicker
 */
LocationPicker.eventHandler.search = function () {
  var request = {
    bounds: this.map.getBounds(),
    query: this.$searchInput.value
  };
  if (!request.query) return;
  this.placeService.textSearch(request, function callback(results, status) {
    if (status === google.maps.places.PlacesServiceStatus.OK) {
      this.showSearchPlaces(results);
    }
  }.bind(this));
};
LocationPicker.eventHandler.clickMarker = function (marker, place) {
  if (this.readOnly) return;
  this.selectPlace(place, false);
};
LocationPicker.eventHandler.clickMap = function (event) {
  if (this.readOnly) return;
  if (event.placeId) {
    this.selectPlaceId(event.placeId);
  } else if (event.latLng) {
    this.selectLocation(event.latLng, false);
  }
};
LocationPicker.eventHandler.clickAction = function (action, event) {
  this.emit('action', {
    type: 'action',
    action: action,
    originalEvent: event,
    target: this
  }, this);
};
_ACore["default"].install(LocationPicker);
var _default = LocationPicker;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _utils = __webpack_require__(84512);
var _DomSignal = _interopRequireDefault(__webpack_require__(47341));
var _stringGenerate = __webpack_require__(10713);
var _Color = _interopRequireDefault(__webpack_require__(64974));
var _MarkerClusterer = _interopRequireDefault(__webpack_require__(90085));
var _LocationPicker = __webpack_require__(76693);
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 MARKER_RADIUS = 10;
var MARKER_BORDER_COLOR = '#4945C8';
function generateColor(id) {
  id = id + '';
  var rgb = [0, 0, 0];
  var res;
  var white = _Color["default"].parse('white');
  var c = 100;
  while (c--) {
    for (var i = 0; i < id.length; ++i) {
      rgb[i % 3] = (rgb[i % 3] * 31 + id.charCodeAt(i) * 173) % 255;
    }
    res = new _Color["default"]([rgb[0] / 255, rgb[1] / 255, rgb[2] / 255, 1]);
    if (res.getContrastWith(white) > 2 && rgb[0] + rgb[1] + rgb[2] > 50) {
      break;
    }
  }
  return res;
}

// https://lab.daithangminh.vn/home_co/carddone/markerclusterer.js

var loadMarkerClustererSync = null;
var lastOpenInfo = null;

/***
 *
 * @param {LocationView} viewerElt
 * @param {Object} data
 * @constructor
 */
function LVPolyline(viewerElt, data) {
  this.viewerElt = viewerElt;
  this.map = viewerElt.map;
  this._polylines = [];
  this.id = data.id || (0, _stringGenerate.randomIdent)(12);
  this.polylineData = {
    geodesic: true,
    strokeColor: data.color || generateColor(this.id).toString('hex6'),
    strokeOpacity: 1.0,
    strokeWeight: 2
  };
  this.polylineData.path = data.path.map(function (crd) {
    return (0, _utils.implicitLatLng)(crd);
  });
  this.polylineHL = new google.maps.Polyline(Object.assign({}, this.polylineData, {
    strokeColor: 'white',
    strokeWeight: 5
  }));
  this.polyline = new google.maps.Polyline(this.polylineData);
  this.markers = this.polylineData.path.map(function (crd, i) {
    var mkr = new google.maps.marker.Marker({
      position: crd,
      // sName: data.name || data.id || this.id,
      map: this.map,
      icon: {
        path: google.maps.SymbolPath.CIRCLE,
        scale: MARKER_RADIUS,
        fillColor: this.polylineData.strokeColor,
        fillOpacity: 1,
        strokeWeight: 2,
        strokeColor: MARKER_BORDER_COLOR
      }
    });
    mkr.setMap(this.map);
    var infoWindow;
    if (data.path[i] && data.path[i].info) {
      infoWindow = new google.maps.InfoWindow(data.path[i].info);
      mkr.addListener('mouseover', function () {
        if (lastOpenInfo === infoWindow) return;
        try {
          if (lastOpenInfo) lastOpenInfo.close();
        } catch (e) {}
        lastOpenInfo = infoWindow;
        infoWindow.open({
          anchor: mkr,
          map: this.map,
          shouldFocus: true
        });
      }.bind(this));
    }
    return mkr;
  }.bind(this));
  this.showRoute = viewerElt.showPolylineRoute;
}
LVPolyline.prototype.remove = function () {
  this.polyline.setMap(null);
  this.polylineHL.setMap(null);
  this.markers.forEach(function (mk) {
    mk.setMap(null);
  });
};
Object.defineProperty(LVPolyline.prototype, 'showRoute', {
  set: function set(value) {
    this._showRoute = !!value;
    if (value) {
      this.polylineHL.setMap(this.map);
      this.polyline.setMap(this.map);
    } else {
      this.polylineHL.setMap(null);
      this.polyline.setMap(null);
    }
  },
  get: function get() {
    return this._showRoute;
  }
});
Object.defineProperty(LVPolyline.prototype, 'color', {
  get: function get() {
    return this.polylineData.strokeColor;
  }
});
Object.defineProperty(LVPolyline.prototype, 'sumDistance', {
  get: function get() {
    var res = 0;
    var path = this.polylineData.path;
    for (var i = 1; i < path.length; ++i) {
      res += (0, _utils.latLngDistance)(path[i - 1], path[i]);
    }
    return res;
  }
});
function LVPoints(viewerElt, data) {
  this.data = data;
  this.refData = [data];
  this.id = data.id || (0, _stringGenerate.randomIdent)(12);
  this.latLng = (0, _utils.implicitLatLng)(data);
  if (!this.latLng) {
    console.error('Invalid data', data);
    return;
  }
  this.map = viewerElt.map;
  this.marker = new google.maps.marker.Marker({
    position: this.latLng,
    // sName: data.name || data.id || this.id,
    // map: this.map,
    icon: {
      path: google.maps.SymbolPath.CIRCLE,
      scale: MARKER_RADIUS,
      fillColor: data.color || generateColor(this.id).toString(),
      fillOpacity: 1,
      strokeWeight: 2,
      strokeColor: MARKER_BORDER_COLOR
    }
  });
  // this.marker.setMap(this.map);

  if (!data.info) return;
  var infoWindow = new google.maps.InfoWindow(data.info);
  this.marker.addListener('mouseover', function () {
    if (lastOpenInfo === infoWindow) return;
    try {
      if (lastOpenInfo) lastOpenInfo.close();
    } catch (e) {}
    lastOpenInfo = infoWindow;
    infoWindow.open({
      anchor: this.marker,
      map: this.map,
      shouldFocus: true
    });
  }.bind(this));
}
LVPoints.prototype.remove = function () {
  if (this.marker) this.marker.setMap(null);
};

/***
 * @extends AElement
 * @constructor
 */
function LocationView() {
  this.map = new google.maps.Map(this, {
    zoom: 8,
    center: new google.maps.LatLng(21.018755, 105.839729),
    scaleControl: true,
    mapId: (0, _stringGenerate.randomIdent)()
  });
  this.marker = null;
  this._value = null;
  this.$domSignal = (0, _ACore._)('attachhook').addTo(this);
  this.domSignal = new _DomSignal["default"](this.$domSignal);
  /***
   * @type {LatLng}
   * @name value
   * @memberOf LocationView#
   */
  /****
   *
   * @type {LVPolyline[]}
   */
  this.$polylines = [];
  this._showPolylineRoute = true;

  /****
   *
   * @type {LVPoints[]}
   */
  this.$points = [];
}
LocationView.tag = 'LocationView'.toLowerCase();
LocationView.render = function () {
  return (0, _ACore._)({
    "class": 'as-location-view'
  });
};
LocationView.prototype.getPolylineById = function (id) {
  return this.$polylines.find(function (pll) {
    return pll.id === id;
  }) || null;
};
LocationView.prototype.getPolylines = function () {
  return this.$polylines.slice();
};
LocationView.property = {};
LocationView.property.zoom = {
  set: function set(value) {
    if (!(0, _utils.isRealNumber)(value)) {
      value = 1;
    }
    this.map.setZoom(value);
  },
  get: function get() {
    return this.map.getZoom();
  }
};
LocationView.property.value = {
  set: function set(value) {
    var _this = this;
    value = value || null;
    var latlng = (0, _utils.implicitLatLng)(value);
    latlng = latlng || new google.maps.LatLng(21.018755, 105.839729);
    this.map.setCenter(latlng || new google.maps.LatLng(21.018755, 105.839729));
    this._value = value;
    (0, _LocationPicker.getGoogleMarkerLib)().then(function () {
      if (_this.marker) {
        _this.marker.setMap(null);
        _this.marker = null;
      }
      if (latlng && value) {
        _this.marker = new google.maps.marker.AdvancedMarkerElement({
          map: _this.map,
          position: latlng
        });
      }
    });
  },
  get: function get() {
    return this._value;
  }
};
LocationView.property.polylines = {
  set: function set(polylines) {
    var _this2 = this;
    this._polylines = polylines || [];
    this.$polylines.forEach(function (pll) {
      pll.remove();
    });
    (0, _LocationPicker.getGoogleMarkerLib)().then(function () {
      _this2.$polylines = polylines.map(function (pll) {
        return new LVPolyline(this, pll);
      }.bind(_this2));
      var zoom;
      var center;
      var points = _this2.$polylines.reduce(function (ac, $polyline) {
        return ac.concat($polyline.polylineData.path);
      }, []);
      var bounds = points.reduce(function (ac, cr) {
        ac.extend(cr);
        return ac;
      }, new google.maps.LatLngBounds());
      _this2.domSignal.once('update_view', function () {
        if (points.length > 1) {
          zoom = (0, _utils.getMapZoomLevel)(this.getBoundingClientRect(), bounds);
          center = bounds.getCenter();
        } else {
          zoom = 17;
          center = points[0] || new google.maps.LatLng(21.018755, 105.839729);
        }
        zoom = Math.min(zoom, 17);
        this.map.setZoom(zoom);
        this.map.setCenter(center);
      }.bind(_this2), 100);
      _this2.domSignal.emit('update_view');
    });
  },
  get: function get() {
    return this._polylines;
  }
};
LocationView.property.showPolylineRoute = {
  set: function set(value) {
    this._showPolylineRoute = !!value;
    this.$polylines.forEach(function (pll) {
      pll.showRoute = value;
    });
  },
  get: function get() {
    return this._showPolylineRoute;
  }
};
LocationView.property.points = {
  set: function set(points) {
    var _this3 = this;
    this.$points.forEach(function (point) {
      point.remove();
    });
    this._points = points || [];
    (0, _LocationPicker.getGoogleMarkerLib)().then(function () {
      var rp = _this3._points.reduce(function (ac, pointData) {
        var id = pointData.id;
        var point;
        if (id && ac.dict[id]) {
          ac.dict[id].refData.push(pointData);
        } else {
          point = new LVPoints(this, pointData);
          ac.dict[point.id] = point;
          ac.arr.push(point);
        }
        return ac;
      }.bind(_this3), {
        arr: [],
        dict: {}
      });
      _this3.$points = rp.arr;
      var zoom;
      var center;
      var latLngs = _this3.$points.map(function (p) {
        return p.latLng;
      }, []).filter(function (x) {
        return !!x;
      });
      var bounds = latLngs.reduce(function (ac, cr) {
        ac.extend(cr);
        return ac;
      }, new google.maps.LatLngBounds());
      var markers = _this3.$points.map(function (p) {
        return p.marker;
      }, []).filter(function (x) {
        return !!x;
      });
      _this3.pointsCluster = new _MarkerClusterer["default"](_this3.map, markers, {
        imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'
      });
      _this3.domSignal.once('update_view', function () {
        if (points.length > 1) {
          zoom = (0, _utils.getMapZoomLevel)(this.getBoundingClientRect(), bounds);
          center = bounds.getCenter();
        } else {
          zoom = 17;
          center = points[0] || new google.maps.LatLng(21.018755, 105.839729);
        }
        zoom = Math.min(zoom, 17);
        this.map.setZoom(zoom);
        this.map.setCenter(center);
      }.bind(_this3), 100);
      _this3.domSignal.emit('update_view');
    });
  },
  get: function get() {
    return this._points;
  }
};
_ACore["default"].install(LocationView);
var _default = LocationView;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(35778);
var _BoardTable = _interopRequireDefault(__webpack_require__(76372));
var _MKNavigatorItem = _interopRequireDefault(__webpack_require__(7877));
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; }
/***
 * @typedef MKNavigatorItemData
 * @property {string} text
 * @property {string|number} value
 * @property {boolean|number=} checked
 */

/***
 * @extends AElement
 * @constructor
 */
function MKNavigator() {
  this._items = [];
  this._value = 0;
  this._hiddenValues = [];
  this.$itemByValue = {};
  this.$header = (0, _ACore.$)('.mk-nav-header', this);
  this.$body = (0, _ACore.$)('.mk-nav-body', this).on('orderchange', this.eventHandler.bodyOrderChange).on('dragitemstart', this.eventHandler.dragItemStart);
  this.$footer = (0, _ACore.$)('.mk-nav-footer', this);
  /***
   * @type {MKNavigatorItemData[]}
   * @name item
   * @memberOf MKNavigator#
   */

  /***
   * @type {number[]}
   * @name order
   * @memberOf MKNavigator#
   */
}

MKNavigator.tag = 'MKNavigator'.toLowerCase();
MKNavigator.render = function () {
  return (0, _ACore._)({
    "class": 'mk-nav',
    extendEvent: ['orderchange', 'checkedchange', 'press'],
    child: [{
      "class": 'mk-nav-header'
    }, {
      tag: _BoardTable["default"].tag,
      "class": 'mk-nav-body'
    }, {
      "class": 'mk-nav-footer'
    }]
  });
};
MKNavigator.prototype.updateValue = function () {
  var _this = this;
  var value = this._value;
  for (var iValue in this.$itemByValue) {
    if (iValue + '' !== value + '') {
      this.$itemByValue[iValue].removeClass('mk-current');
    }
  }
  var order = this.order;
  if (this.$itemByValue[value]) {
    this.$itemByValue[value].addClass('mk-current');
  } else if (order.length > 0) {
    this.$itemByValue[order[0]].addClass('mk-current');
  }
  var idx = order.filter(function (value) {
    return !_this.$itemByValue[value].hasClass('as-hidden');
  }).indexOf(value);
  if (idx >= 0) {
    this.addStyle('--mk-nav-line-top', "calc(".concat(2 * idx, "em + ").concat(12 * idx, "px)"));
  } else {
    this.removeStyle('--mk-nav-line-top');
  }
};
MKNavigator.prototype.setTextOfItem = function (value, text) {
  var itemElt = this.$itemByValue[value];
  if (!itemElt) return;
  itemElt.data.text = text;
  itemElt.updateText();
};
MKNavigator.prototype.mkItem = function (data) {
  var self = this;
  return (0, _ACore._)({
    tag: _MKNavigatorItem["default"].tag,
    attr: {
      "data-value": data && data.value
    },
    props: {
      data: data
    },
    on: {
      checkedchange: function checkedchange(event) {
        self.emit('checkedchange', {
          type: 'checkedchange',
          target: this,
          originalEvent: event.originalEvent,
          itemData: data,
          checked: data.checked
        }, self);
      },
      press: function press(event) {
        self.value = data.value;
        self.emit('press', {
          type: 'press',
          itemElt: this,
          itemData: data,
          value: data.value,
          target: this,
          originalEvent: event.originalEvent
        }, self);
      }
    }
  });
};
MKNavigator.prototype._updateHiddenValues = function () {
  var _this2 = this;
  var hiddenDict = this._hiddenValues.reduce(function (ac, x) {
    ac[x] = true;
    return ac;
  }, {});
  Object.keys(this.$itemByValue).forEach(function (value) {
    if (hiddenDict[value]) {
      _this2.$itemByValue[value].addClass('as-hidden');
    } else {
      _this2.$itemByValue[value].removeClass('as-hidden');
    }
  });
};
MKNavigator.property = {};
MKNavigator.property.items = {
  /***
   * @this MKNavigator
   * @param items
   */
  set: function set(items) {
    items = items || [];
    this._items = items;
    this.$itemByValue = {};
    var i = 0;
    var item;
    var itemElt;
    this.$header.clearChild();
    this.$body.clearChild();
    this.$footer.clearChild();
    var draggable = false;
    while (i < items.length) {
      if (items[i].draggable) break;
      item = items[i];
      itemElt = this.mkItem(item);
      this.$itemByValue[item.value] = itemElt;
      this.$header.addChild(itemElt);
      ++i;
    }
    while (i < items.length) {
      if (!items[i].draggable) break;
      draggable = true;
      item = items[i];
      itemElt = this.mkItem(item);
      this.$itemByValue[item.value] = itemElt;
      this.$body.addChild(itemElt);
      ++i;
    }
    while (i < items.length) {
      item = items[i];
      itemElt = this.mkItem(item);
      this.$itemByValue[item.value] = itemElt;
      this.$footer.addChild(itemElt);
      ++i;
    }
    if (draggable) {
      this.addClass('mk-has-draggable');
    } else {
      this.removeClass('mk-has-draggable');
    }
    this._updateHiddenValues();
  },
  get: function get() {
    return this._items;
  }
};
MKNavigator.property.order = {
  get: function get() {
    return (0, _ACore.$$)(_MKNavigatorItem["default"].tag, this).map(function (e) {
      return e.data.value;
    });
  }
};
MKNavigator.property.value = {
  set: function set(value) {
    this._value = value;
    this.updateValue();
  },
  get: function get() {
    if (this.$itemByValue[this._value]) return this._value;
    if (this._items.length > 0) return this._items[0];
    return this._value;
  }
};
MKNavigator.property.hiddenValues = {
  set: function set(values) {
    values = values || [];
    if (!(values instanceof Array)) values = [];
    this._hiddenValues = values;
    this._updateHiddenValues();
    this.updateValue();
  },
  get: function get() {
    return this._hiddenValues;
  }
};

/***
 * @memberOf MKNavigator#
 * @type {{}}
 */
MKNavigator.eventHandler = {};
MKNavigator.eventHandler.bodyOrderChange = function (event) {
  this.updateValue();
  this._items.splice(0, this._items.length);
  (0, _ACore.$$)(_MKNavigatorItem["default"].tag, this).reduce(function (ac, cr) {
    ac.push(cr.data);
    return ac;
  }, this._items);
  this.emit('orderchange', {
    type: 'orderchange',
    target: this
  }, this);
};

/***
 * @memberOf MKNavigator#
 * @type {{}}
 */
MKNavigator.eventHandler.dragItemStart = function (event) {
  var bound = this.getBoundingClientRect();
  this.addStyle('--mk-navigator-bound-left', bound.left + 'px');
};
_ACore["default"].install(MKNavigator);
var _default = MKNavigator;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(35778);
var _BoardTable = _interopRequireDefault(__webpack_require__(76372));
var _Switch = _interopRequireDefault(__webpack_require__(4587));
var _Board = _interopRequireDefault(__webpack_require__(67711));
var _EventEmitter = __webpack_require__(46833);
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; }
/***
 * @extends AElement
 * @constructor
 */
function MKNavigatorItem() {
  this._data = [];
  this.$text = (0, _ACore.$)('.mk-nav-item-text', this);
  this.$switchCtn = (0, _ACore.$)('.mk-nav-item-switch-ctn', this);
  this.$switch = (0, _ACore.$)('switch', this).on('change', this.eventHandler.switchChange);
  this.$dragzone = (0, _ACore.$)('.mk-nav-item-drag-zone', this);
  this.on('click', this.eventHandler.click);
}
MKNavigatorItem.tag = 'MKNavigatorItem'.toLowerCase();
MKNavigatorItem.render = function () {
  return (0, _ACore._)({
    tag: _Board["default"].tag,
    "class": 'mk-nav-item',
    extendEvent: ['checkedchange', 'press'],
    child: [{
      "class": ['mk-nav-item-drag-zone', _BoardTable["default"].DRAG_ZONE_CLASS_NAME],
      child: '<i class="material-icons">drag_indicator</i>'
    }, {
      "class": 'mk-nav-item-text-ctn',
      child: {
        tag: 'span',
        "class": 'mk-nav-item-text',
        child: {
          text: ''
        }
      }
    }, {
      "class": 'mk-nav-item-switch-ctn',
      child: {
        tag: _Switch["default"].tag
      }
    }]
  });
};
MKNavigatorItem.prototype.updateText = function () {
  this.$text.firstChild.data = this._data.text;
};
MKNavigatorItem.prototype.updateChecked = function () {
  if (typeof this._data.checked === "boolean") {
    this.$switchCtn.removeStyle('display');
    this.$switch.checked = this._data.checked;
  } else {
    this.$switchCtn.addStyle('display', 'none');
  }
};
MKNavigatorItem.prototype.updateDraggable = function () {
  if (this._data.draggable) {
    this.$dragzone.removeStyle('display');
  } else {
    this.$dragzone.addStyle('display', 'none');
  }
};
MKNavigatorItem.property = {};
MKNavigatorItem.property.data = {
  /**
   * @this MKNavigatorItem
   * @param data
   */
  set: function set(data) {
    data = data || {};
    this._data = data;
    this.updateText();
    this.updateChecked();
    this.updateDraggable();
  },
  get: function get() {
    return this._data;
  }
};

/***
 * @memberOf MKNavigatorItem#
 * @type {{}}
 */
MKNavigatorItem.eventHandler = {};
MKNavigatorItem.eventHandler.switchChange = function (event) {
  this._data.checked = this.$switch.checked;
  this.emit('checkedchange', {
    type: 'checkedchange'
  }, this);
};
MKNavigatorItem.eventHandler.click = function (event) {
  if ((0, _EventEmitter.hitElement)(this.$switch, event) || (0, _EventEmitter.hitElement)(this.$dragzone, event)) return;
  this.emit('press', {
    type: 'press',
    target: this,
    originalEvent: event
  }, this);
};
_ACore["default"].install(MKNavigatorItem);
var _default = MKNavigatorItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
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); }
/**
 * @name MarkerClustererPlus for Google Maps V3
 * @version 2.1.1 [November 4, 2013]
 * @author Gary Little
 * @fileoverview
 * The library creates and manages per-zoom-level clusters for large amounts of markers.
 * <p>
 * This is an enhanced V3 implementation of the
 * <a href="http://gmaps-utility-library-dev.googlecode.com/svn/tags/markerclusterer/"
 * >V2 MarkerClusterer</a> by Xiaoxi Wu. It is based on the
 * <a href="http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclusterer/"
 * >V3 MarkerClusterer</a> port by Luke Mahe. MarkerClustererPlus was created by Gary Little.
 * <p>
 * v2.0 release: MarkerClustererPlus v2.0 is backward compatible with MarkerClusterer v1.0. It
 *  adds support for the <code>ignoreHidden</code>, <code>title</code>, <code>batchSizeIE</code>,
 *  and <code>calculator</code> properties as well as support for four more events. It also allows
 *  greater control over the styling of the text that appears on the cluster marker. The
 *  documentation has been significantly improved and the overall code has been simplified and
 *  polished. Very large numbers of markers can now be managed without causing Javascript timeout
 *  errors on Internet Explorer. Note that the name of the <code>clusterclick</code> event has been
 *  deprecated. The new name is <code>click</code>, so please change your application code now.
 */

/**
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * @name ClusterIconStyle
 * @class This class represents the object for values in the <code>styles</code> array passed
 *  to the {@link MarkerClusterer} constructor. The element in this array that is used to
 *  style the cluster icon is determined by calling the <code>calculator</code> function.
 *
 * @property {string} url The URL of the cluster icon image file. Required.
 * @property {number} height The display height (in pixels) of the cluster icon. Required.
 * @property {number} width The display width (in pixels) of the cluster icon. Required.
 * @property {Array} [anchorText] The position (in pixels) from the center of the cluster icon to
 *  where the text label is to be centered and drawn. The format is <code>[yoffset, xoffset]</code>
 *  where <code>yoffset</code> increases as you go down from center and <code>xoffset</code>
 *  increases to the right of center. The default is <code>[0, 0]</code>.
 * @property {Array} [anchorIcon] The anchor position (in pixels) of the cluster icon. This is the
 *  spot on the cluster icon that is to be aligned with the cluster position. The format is
 *  <code>[yoffset, xoffset]</code> where <code>yoffset</code> increases as you go down and
 *  <code>xoffset</code> increases to the right of the top-left corner of the icon. The default
 *  anchor position is the center of the cluster icon.
 * @property {string} [textColor="black"] The color of the label text shown on the
 *  cluster icon.
 * @property {number} [textSize=11] The size (in pixels) of the label text shown on the
 *  cluster icon.
 * @property {string} [textDecoration="none"] The value of the CSS <code>text-decoration</code>
 *  property for the label text shown on the cluster icon.
 * @property {string} [fontWeight="bold"] The value of the CSS <code>font-weight</code>
 *  property for the label text shown on the cluster icon.
 * @property {string} [fontStyle="normal"] The value of the CSS <code>font-style</code>
 *  property for the label text shown on the cluster icon.
 * @property {string} [fontFamily="Arial,sans-serif"] The value of the CSS <code>font-family</code>
 *  property for the label text shown on the cluster icon.
 * @property {string} [backgroundPosition="0 0"] The position of the cluster icon image
 *  within the image defined by <code>url</code>. The format is <code>"xpos ypos"</code>
 *  (the same format as for the CSS <code>background-position</code> property). You must set
 *  this property appropriately when the image defined by <code>url</code> represents a sprite
 *  containing multiple images. Note that the position <i>must</i> be specified in px units.
 */
/**
 * @name ClusterIconInfo
 * @class This class is an object containing general information about a cluster icon. This is
 *  the object that a <code>calculator</code> function returns.
 *
 * @property {string} text The text of the label to be shown on the cluster icon.
 * @property {number} index The index plus 1 of the element in the <code>styles</code>
 *  array to be used to style the cluster icon.
 * @property {string} title The tooltip to display when the mouse moves over the cluster icon.
 *  If this value is <code>undefined</code> or <code>""</code>, <code>title</code> is set to the
 *  value of the <code>title</code> property passed to the MarkerClusterer.
 */
/**
 * A cluster icon.
 *
 * @constructor
 * @extends google.maps.OverlayView
 * @param {Cluster} cluster The cluster with which the icon is to be associated.
 * @param {Array} [styles] An array of {@link ClusterIconStyle} defining the cluster icons
 *  to use for various cluster sizes.
 * @private
 */
function ClusterIcon(cluster, styles) {
  cluster.getMarkerClusterer().extend(ClusterIcon, google.maps.OverlayView);
  this.cluster_ = cluster;
  this.className_ = cluster.getMarkerClusterer().getClusterClass();
  this.styles_ = styles;
  this.center_ = null;
  this.div_ = null;
  this.sums_ = null;
  this.visible_ = false;
  this.setMap(cluster.getMap()); // Note: this causes onAdd to be called
}

/**
 * Adds the icon to the DOM.
 */
ClusterIcon.prototype.onAdd = function () {
  var cClusterIcon = this;
  var cMouseDownInCluster;
  var cDraggingMapByCluster;
  this.div_ = document.createElement("div");
  this.div_.className = this.className_;
  if (this.visible_) {
    this.show();
  }
  this.getPanes().overlayMouseTarget.appendChild(this.div_);

  // Fix for Issue 157
  this.boundsChangedListener_ = google.maps.event.addListener(this.getMap(), "bounds_changed", function () {
    cDraggingMapByCluster = cMouseDownInCluster;
  });
  this.div_.addEventListener("mousedown", function () {
    cMouseDownInCluster = true;
    cDraggingMapByCluster = false;
  });
  this.div_.addEventListener("click", function (e) {
    cMouseDownInCluster = false;
    if (!cDraggingMapByCluster) {
      var theBounds;
      var mz;
      var mc = cClusterIcon.cluster_.getMarkerClusterer();
      /**
       * This event is fired when a cluster marker is clicked.
       * @name MarkerClusterer#click
       * @param {Cluster} c The cluster that was clicked.
       * @event
       */
      google.maps.event.trigger(mc, "click", cClusterIcon.cluster_);
      google.maps.event.trigger(mc, "clusterclick", cClusterIcon.cluster_); // deprecated name

      // The default click handler follows. Disable it by setting
      // the zoomOnClick property to false.
      if (mc.getZoomOnClick()) {
        // Zoom into the cluster.
        mz = mc.getMaxZoom();
        theBounds = cClusterIcon.cluster_.getBounds();
        mc.getMap().fitBounds(theBounds);
        // There is a fix for Issue 170 here:
        setTimeout(function () {
          mc.getMap().fitBounds(theBounds);
          // Don't zoom beyond the max zoom level
          if (mz !== null && mc.getMap().getZoom() > mz) {
            mc.getMap().setZoom(mz + 1);
          }
        }, 100);
      }

      // Prevent event propagation to the map:
      e.cancelBubble = true;
      if (e.stopPropagation) {
        e.stopPropagation();
      }
    }
  });
  this.div_.addEventListener("mouseover", function () {
    var mc = cClusterIcon.cluster_.getMarkerClusterer();
    /**
     * This event is fired when the mouse moves over a cluster marker.
     * @name MarkerClusterer#mouseover
     * @param {Cluster} c The cluster that the mouse moved over.
     * @event
     */
    google.maps.event.trigger(mc, "mouseover", cClusterIcon.cluster_);
    google.maps.event.trigger(cClusterIcon.cluster_, "mouseover");
  });
  this.div_.addEventListener("mouseout", function () {
    var mc = cClusterIcon.cluster_.getMarkerClusterer();
    /**
     * This event is fired when the mouse moves out of a cluster marker.
     * @name MarkerClusterer#mouseout
     * @param {Cluster} c The cluster that the mouse moved out of.
     * @event
     */
    google.maps.event.trigger(mc, "mouseout", cClusterIcon.cluster_);
    google.maps.event.trigger(cClusterIcon.cluster_, "mouseout");
  });
  var mc = this.cluster_.getMarkerClusterer();
  if (mc.markers_.caculateSum !== undefined) {
    var infowindow = new google.maps.InfoWindow({
      maxWidth: 350
    });
    google.maps.event.addListener(this.cluster_, 'mouseover', function (event) {
      var tooltip = mc.markers_.caculateSum(this.cluster_.markers_);
      var content, style;
      if (_typeof(tooltip) == "object") {
        if (tooltip.style) style = tooltip.style;
        if (tooltip.element) content = tooltip.element;
      } else content = tooltip;
      if (style !== undefined) infowindow.setOptions(style);
      infowindow.setContent(content);
      var info = new google.maps.MVCObject();
      info.set('position', this.center_);
      info.set('anchorPoint', new google.maps.Point(0, -12));
      infowindow.open(mc.map, info);
    }.bind(this));
    google.maps.event.addListener(this.cluster_, 'mouseout', function (event) {
      infowindow.close();
    }.bind(this));
    google.maps.event.addListener(mc.map, "zoom_changed", function () {
      infowindow.close();
    });
  }
};

/**
 * Removes the icon from the DOM.
 */
ClusterIcon.prototype.onRemove = function () {
  if (this.div_ && this.div_.parentNode) {
    this.hide();
    google.maps.event.removeListener(this.boundsChangedListener_);
    google.maps.event.clearInstanceListeners(this.div_);
    this.div_.parentNode.removeChild(this.div_);
    this.div_ = null;
  }
};

/**
 * Draws the icon.
 */
ClusterIcon.prototype.draw = function () {
  if (this.visible_) {
    var pos = this.getPosFromLatLng_(this.center_);
    this.div_.style.top = pos.y + "px";
    this.div_.style.left = pos.x + "px";
  }
};

/**
 * Hides the icon.
 */
ClusterIcon.prototype.hide = function () {
  if (this.div_) {
    this.div_.style.display = "none";
  }
  this.visible_ = false;
};

/**
 * Positions and shows the icon.
 */
ClusterIcon.prototype.show = function () {
  if (this.div_) {
    var img = "";
    // NOTE: values must be specified in px units
    var bp = this.backgroundPosition_.split(" ");
    var spriteH = parseInt(bp[0].trim(), 10);
    var spriteV = parseInt(bp[1].trim(), 10);
    var pos = this.getPosFromLatLng_(this.center_);
    this.div_.style.cssText = this.createCss(pos);
    img = "<img src='" + this.url_ + "' style='position: absolute; top: " + spriteV + "px; left: " + spriteH + "px; ";
    if (!this.cluster_.getMarkerClusterer().enableRetinaIcons_) {
      img += "clip: rect(" + -1 * spriteV + "px, " + (-1 * spriteH + this.width_) + "px, " + (-1 * spriteV + this.height_) + "px, " + -1 * spriteH + "px);";
    } else {
      img += "width: " + this.width_ + "px;" + "height: " + this.height_ + "px;";
    }
    img += "'>";
    this.div_.innerHTML = img + "<div style='" + "position: absolute;" + "top: " + this.anchorText_[0] + "px;" + "left: " + this.anchorText_[1] + "px;" + "color: " + this.textColor_ + ";" + "font-size: " + this.textSize_ + "px;" + "font-family: " + this.fontFamily_ + ";" + "font-weight: " + this.fontWeight_ + ";" + "font-style: " + this.fontStyle_ + ";" + "text-decoration: " + this.textDecoration_ + ";" + "text-align: center;" + "width: " + this.width_ + "px;" + "line-height:" + this.height_ + "px;" + "'>" + (this.cluster_.hideLabel_ ? ' ' : this.sums_.text) + "</div>";
    if (typeof this.sums_.title === "undefined" || this.sums_.title === "") {
      this.div_.title = this.cluster_.getMarkerClusterer().getTitle();
    } else {
      this.div_.title = this.sums_.title;
    }
    this.div_.style.display = "";
  }
  this.visible_ = true;
};

/**
 * Sets the icon styles to the appropriate element in the styles array.
 *
 * @param {ClusterIconInfo} sums The icon label text and styles index.
 */
ClusterIcon.prototype.useStyle = function (sums) {
  this.sums_ = sums;
  var index = Math.max(0, sums.index - 1);
  index = Math.min(this.styles_.length - 1, index);
  var style = this.styles_[index];
  this.url_ = style.url;
  this.height_ = style.height;
  this.width_ = style.width;
  this.anchorText_ = style.anchorText || [0, 0];
  this.anchorIcon_ = style.anchorIcon || [parseInt(this.height_ / 2, 10), parseInt(this.width_ / 2, 10)];
  this.textColor_ = style.textColor || "black";
  this.textSize_ = style.textSize || 11;
  this.textDecoration_ = style.textDecoration || "none";
  this.fontWeight_ = style.fontWeight || "bold";
  this.fontStyle_ = style.fontStyle || "normal";
  this.fontFamily_ = style.fontFamily || "Arial,sans-serif";
  this.backgroundPosition_ = style.backgroundPosition || "0 0";
};

/**
 * Sets the position at which to center the icon.
 *
 * @param {google.maps.LatLng} center The latlng to set as the center.
 */
ClusterIcon.prototype.setCenter = function (center) {
  this.center_ = center;
};

/**
 * Creates the cssText style parameter based on the position of the icon.
 *
 * @param {google.maps.Point} pos The position of the icon.
 * @return {string} The CSS style text.
 */
ClusterIcon.prototype.createCss = function (pos) {
  var style = [];
  style.push("cursor: pointer;");
  style.push("position: absolute; top: " + pos.y + "px; left: " + pos.x + "px;");
  style.push("width: " + this.width_ + "px; height: " + this.height_ + "px;");
  return style.join("");
};

/**
 * Returns the position at which to place the DIV depending on the latlng.
 *
 * @param {google.maps.LatLng} latlng The position in latlng.
 * @return {google.maps.Point} The position in pixels.
 */
ClusterIcon.prototype.getPosFromLatLng_ = function (latlng) {
  var pos = this.getProjection().fromLatLngToDivPixel(latlng);
  pos.x -= this.anchorIcon_[1];
  pos.y -= this.anchorIcon_[0];
  pos.x = parseInt(pos.x, 10);
  pos.y = parseInt(pos.y, 10);
  return pos;
};

/**
 * Creates a single cluster that manages a group of proximate markers.
 *  Used internally, do not call this constructor directly.
 * @constructor
 * @param {MarkerClusterer} mc The <code>MarkerClusterer</code> object with which this
 *  cluster is associated.
 */
function Cluster(mc) {
  this.markerClusterer_ = mc;
  this.map_ = mc.getMap();
  this.gridSize_ = mc.getGridSize();
  this.minClusterSize_ = mc.getMinimumClusterSize();
  this.averageCenter_ = mc.getAverageCenter();
  this.hideLabel_ = mc.getHideLabel();
  this.markers_ = [];
  this.center_ = null;
  this.bounds_ = null;
  this.clusterIcon_ = new ClusterIcon(this, mc.getStyles());
}

/**
 * Returns the number of markers managed by the cluster. You can call this from
 * a <code>click</code>, <code>mouseover</code>, or <code>mouseout</code> event handler
 * for the <code>MarkerClusterer</code> object.
 *
 * @return {number} The number of markers in the cluster.
 */
Cluster.prototype.getSize = function () {
  return this.markers_.length;
};

/**
 * Returns the array of markers managed by the cluster. You can call this from
 * a <code>click</code>, <code>mouseover</code>, or <code>mouseout</code> event handler
 * for the <code>MarkerClusterer</code> object.
 *
 * @return {Array} The array of markers in the cluster.
 */
Cluster.prototype.getMarkers = function () {
  return this.markers_;
};

/**
 * Returns the center of the cluster. You can call this from
 * a <code>click</code>, <code>mouseover</code>, or <code>mouseout</code> event handler
 * for the <code>MarkerClusterer</code> object.
 *
 * @return {google.maps.LatLng} The center of the cluster.
 */
Cluster.prototype.getCenter = function () {
  return this.center_;
};

/**
 * Returns the map with which the cluster is associated.
 *
 * @return {google.maps.Map} The map.
 * @ignore
 */
Cluster.prototype.getMap = function () {
  return this.map_;
};

/**
 * Returns the <code>MarkerClusterer</code> object with which the cluster is associated.
 *
 * @return {MarkerClusterer} The associated marker clusterer.
 * @ignore
 */
Cluster.prototype.getMarkerClusterer = function () {
  return this.markerClusterer_;
};

/**
 * Returns the bounds of the cluster.
 *
 * @return {google.maps.LatLngBounds} the cluster bounds.
 * @ignore
 */
Cluster.prototype.getBounds = function () {
  var i;
  var bounds = new google.maps.LatLngBounds(this.center_, this.center_);
  var markers = this.getMarkers();
  for (i = 0; i < markers.length; i++) {
    bounds.extend(markers[i].getPosition());
  }
  return bounds;
};

/**
 * Removes the cluster from the map.
 *
 * @ignore
 */
Cluster.prototype.remove = function () {
  this.clusterIcon_.setMap(null);
  this.markers_ = [];
  delete this.markers_;
};

/**
 * Adds a marker to the cluster.
 *
 * @param {google.maps.marker.Marker} marker The marker to be added.
 * @return {boolean} True if the marker was added.
 * @ignore
 */
Cluster.prototype.addMarker = function (marker) {
  var i;
  var mCount;
  var mz;
  if (this.isMarkerAlreadyAdded_(marker)) {
    return false;
  }
  if (!this.center_) {
    this.center_ = marker.getPosition();
    this.calculateBounds_();
  } else {
    if (this.averageCenter_) {
      var l = this.markers_.length + 1;
      var lat = (this.center_.lat() * (l - 1) + marker.getPosition().lat()) / l;
      var lng = (this.center_.lng() * (l - 1) + marker.getPosition().lng()) / l;
      this.center_ = new google.maps.LatLng(lat, lng);
      this.calculateBounds_();
    }
  }
  marker.isAdded = true;
  this.markers_.push(marker);
  mCount = this.markers_.length;
  mz = this.markerClusterer_.getMaxZoom();
  if (mz !== null && this.map_.getZoom() > mz) {
    // Zoomed in past max zoom, so show the marker.
    if (marker.getMap() !== this.map_) {
      marker.setMap(this.map_);
    }
  } else if (mCount < this.minClusterSize_) {
    // Min cluster size not reached so show the marker.
    if (marker.getMap() !== this.map_) {
      marker.setMap(this.map_);
    }
  } else if (mCount === this.minClusterSize_) {
    // Hide the markers that were showing.
    for (i = 0; i < mCount; i++) {
      this.markers_[i].setMap(null);
    }
  } else {
    marker.setMap(null);
  }
  return true;
};

/**
 * Determines if a marker lies within the cluster's bounds.
 *
 * @param {google.maps.marker.Marker} marker The marker to check.
 * @return {boolean} True if the marker lies in the bounds.
 * @ignore
 */
Cluster.prototype.isMarkerInClusterBounds = function (marker) {
  return this.bounds_.contains(marker.getPosition());
};

/**
 * Calculates the extended bounds of the cluster with the grid.
 */
Cluster.prototype.calculateBounds_ = function () {
  var bounds = new google.maps.LatLngBounds(this.center_, this.center_);
  this.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);
};

/**
 * Updates the cluster icon.
 */
Cluster.prototype.updateIcon_ = function () {
  var mCount = this.markers_.length;
  var mz = this.markerClusterer_.getMaxZoom();
  if (mz !== null && this.map_.getZoom() > mz) {
    this.clusterIcon_.hide();
    return;
  }
  if (mCount < this.minClusterSize_) {
    // Min cluster size not yet reached.
    this.clusterIcon_.hide();
    return;
  }
  var numStyles = this.markerClusterer_.getStyles().length;
  var sums = this.markerClusterer_.getCalculator()(this.markers_, numStyles);
  this.clusterIcon_.setCenter(this.center_);
  this.clusterIcon_.useStyle(sums);
  this.clusterIcon_.show();
};

/**
 * Determines if a marker has already been added to the cluster.
 *
 * @param {google.maps.marker.Marker} marker The marker to check.
 * @return {boolean} True if the marker has already been added.
 */
Cluster.prototype.isMarkerAlreadyAdded_ = function (marker) {
  for (var i = 0, n = this.markers_.length; i < n; i++) {
    if (marker === this.markers_[i]) {
      return true;
    }
  }
  return false;
};

/**
 * @name MarkerClustererOptions
 * @class This class represents the optional parameter passed to
 *  the {@link MarkerClusterer} constructor.
 * @property {number} [gridSize=60] The grid size of a cluster in pixels. The grid is a square.
 * @property {number} [maxZoom=null] The maximum zoom level at which clustering is enabled or
 *  <code>null</code> if clustering is to be enabled at all zoom levels.
 * @property {boolean} [zoomOnClick=true] Whether to zoom the map when a cluster marker is
 *  clicked. You may want to set this to <code>false</code> if you have installed a handler
 *  for the <code>click</code> event and it deals with zooming on its own.
 * @property {boolean} [averageCenter=false] Whether the position of a cluster marker should be
 *  the average position of all markers in the cluster. If set to <code>false</code>, the
 *  cluster marker is positioned at the location of the first marker added to the cluster.
 * @property {number} [minimumClusterSize=2] The minimum number of markers needed in a cluster
 *  before the markers are hidden and a cluster marker appears.
 * @property {boolean} [ignoreHidden=false] Whether to ignore hidden markers in clusters. You
 *  may want to set this to <code>true</code> to ensure that hidden markers are not included
 *  in the marker count that appears on a cluster marker (this count is the value of the
 *  <code>text</code> property of the result returned by the default <code>calculator</code>).
 *  If set to <code>true</code> and you change the visibility of a marker being clustered, be
 *  sure to also call <code>MarkerClusterer.repaint()</code>.
 * @property {string} [title=""] The tooltip to display when the mouse moves over a cluster
 *  marker. (Alternatively, you can use a custom <code>calculator</code> function to specify a
 *  different tooltip for each cluster marker.)
 * @property {function} [calculator=MarkerClusterer.CALCULATOR] The function used to determine
 *  the text to be displayed on a cluster marker and the index indicating which style to use
 *  for the cluster marker. The input parameters for the function are (1) the array of markers
 *  represented by a cluster marker and (2) the number of cluster icon styles. It returns a
 *  {@link ClusterIconInfo} object. The default <code>calculator</code> returns a
 *  <code>text</code> property which is the number of markers in the cluster and an
 *  <code>index</code> property which is one higher than the lowest integer such that
 *  <code>10^i</code> exceeds the number of markers in the cluster, or the size of the styles
 *  array, whichever is less. The <code>styles</code> array element used has an index of
 *  <code>index</code> minus 1. For example, the default <code>calculator</code> returns a
 *  <code>text</code> value of <code>"125"</code> and an <code>index</code> of <code>3</code>
 *  for a cluster icon representing 125 markers so the element used in the <code>styles</code>
 *  array is <code>2</code>. A <code>calculator</code> may also return a <code>title</code>
 *  property that contains the text of the tooltip to be used for the cluster marker. If
 *   <code>title</code> is not defined, the tooltip is set to the value of the <code>title</code>
 *   property for the MarkerClusterer.
 * @property {string} [clusterClass="cluster"] The name of the CSS class defining general styles
 *  for the cluster markers. Use this class to define CSS styles that are not set up by the code
 *  that processes the <code>styles</code> array.
 * @property {Array} [styles] An array of {@link ClusterIconStyle} elements defining the styles
 *  of the cluster markers to be used. The element to be used to style a given cluster marker
 *  is determined by the function defined by the <code>calculator</code> property.
 *  The default is an array of {@link ClusterIconStyle} elements whose properties are derived
 *  from the values for <code>imagePath</code>, <code>imageExtension</code>, and
 *  <code>imageSizes</code>.
 * @property {boolean} [enableRetinaIcons=false] Whether to allow the use of cluster icons that
 * have sizes that are some multiple (typically double) of their actual display size. Icons such
 * as these look better when viewed on high-resolution monitors such as Apple's Retina displays.
 * Note: if this property is <code>true</code>, sprites cannot be used as cluster icons.
 * @property {number} [batchSize=MarkerClusterer.BATCH_SIZE] Set this property to the
 *  number of markers to be processed in a single batch when using a browser other than
 *  Internet Explorer (for Internet Explorer, use the batchSizeIE property instead).
 * @property {number} [batchSizeIE=MarkerClusterer.BATCH_SIZE_IE] When Internet Explorer is
 *  being used, markers are processed in several batches with a small delay inserted between
 *  each batch in an attempt to avoid Javascript timeout errors. Set this property to the
 *  number of markers to be processed in a single batch; select as high a number as you can
 *  without causing a timeout error in the browser. This number might need to be as low as 100
 *  if 15,000 markers are being managed, for example.
 * @property {string} [imagePath=MarkerClusterer.IMAGE_PATH]
 *  The full URL of the root name of the group of image files to use for cluster icons.
 *  The complete file name is of the form <code>imagePath</code>n.<code>imageExtension</code>
 *  where n is the image file number (1, 2, etc.).
 * @property {string} [imageExtension=MarkerClusterer.IMAGE_EXTENSION]
 *  The extension name for the cluster icon image files (e.g., <code>"png"</code> or
 *  <code>"jpg"</code>).
 * @property {Array} [imageSizes=MarkerClusterer.IMAGE_SIZES]
 *  An array of numbers containing the widths of the group of
 *  <code>imagePath</code>n.<code>imageExtension</code> image files.
 *  (The images are assumed to be square.)
 */
/**
 * Creates a MarkerClusterer object with the options specified in {@link MarkerClustererOptions}.
 * @constructor
 * @extends google.maps.OverlayView
 * @param {google.maps.Map} map The Google map to attach to.
 * @param {Array.<google.maps.marker.Marker>} [opt_markers] The markers to be added to the cluster.
 * @param {MarkerClustererOptions} [opt_options] The optional parameters.
 */
function MarkerClusterer(map, opt_markers, opt_options) {
  // MarkerClusterer implements google.maps.OverlayView interface. We use the
  // extend function to extend MarkerClusterer with google.maps.OverlayView
  // because it might not always be available when the code is defined so we
  // look for it at the last possible moment. If it doesn't exist now then
  // there is no point going ahead :)
  this.extend(MarkerClusterer, google.maps.OverlayView);
  opt_markers = opt_markers || [];
  opt_options = opt_options || {};
  this.markers_ = [];
  this.clusters_ = [];
  this.listeners_ = [];
  this.activeMap_ = null;
  this.ready_ = false;
  this.gridSize_ = opt_options.gridSize || 60;
  this.minClusterSize_ = opt_options.minimumClusterSize || 2;
  this.maxZoom_ = opt_options.maxZoom || null;
  this.styles_ = opt_options.styles || [];
  this.title_ = opt_options.title || "";
  this.zoomOnClick_ = true;
  if (opt_options.zoomOnClick !== undefined) {
    this.zoomOnClick_ = opt_options.zoomOnClick;
  }
  this.averageCenter_ = false;
  if (opt_options.averageCenter !== undefined) {
    this.averageCenter_ = opt_options.averageCenter;
  }
  this.ignoreHidden_ = false;
  if (opt_options.ignoreHidden !== undefined) {
    this.ignoreHidden_ = opt_options.ignoreHidden;
  }
  this.enableRetinaIcons_ = false;
  if (opt_options.enableRetinaIcons !== undefined) {
    this.enableRetinaIcons_ = opt_options.enableRetinaIcons;
  }
  this.hideLabel_ = false;
  if (opt_options.hideLabel !== undefined) {
    this.hideLabel_ = opt_options.hideLabel;
  }
  this.imagePath_ = opt_options.imagePath || MarkerClusterer.IMAGE_PATH;
  this.imageExtension_ = opt_options.imageExtension || MarkerClusterer.IMAGE_EXTENSION;
  this.imageSizes_ = opt_options.imageSizes || MarkerClusterer.IMAGE_SIZES;
  this.calculator_ = opt_options.calculator || MarkerClusterer.CALCULATOR;
  this.batchSize_ = opt_options.batchSize || MarkerClusterer.BATCH_SIZE;
  this.batchSizeIE_ = opt_options.batchSizeIE || MarkerClusterer.BATCH_SIZE_IE;
  this.clusterClass_ = opt_options.clusterClass || "cluster";
  if (navigator.userAgent.toLowerCase().indexOf("msie") !== -1) {
    // Try to avoid IE timeout when processing a huge number of markers:
    this.batchSize_ = this.batchSizeIE_;
  }
  this.setupStyles_();
  this.addMarkers(opt_markers, true);
  this.setMap(map); // Note: this causes onAdd to be called
}

/**
 * Implementation of the onAdd interface method.
 * @ignore
 */
MarkerClusterer.prototype.onAdd = function () {
  var cMarkerClusterer = this;
  this.activeMap_ = this.getMap();
  this.ready_ = true;
  this.repaint();

  // Add the map event listeners
  this.listeners_ = [google.maps.event.addListener(this.getMap(), "zoom_changed", function () {
    cMarkerClusterer.resetViewport_(false);
    // Workaround for this Google bug: when map is at level 0 and "-" of
    // zoom slider is clicked, a "zoom_changed" event is fired even though
    // the map doesn't zoom out any further. In this situation, no "idle"
    // event is triggered so the cluster markers that have been removed
    // do not get redrawn. Same goes for a zoom in at maxZoom.
    if (this.getZoom() === (this.get("minZoom") || 0) || this.getZoom() === this.get("maxZoom")) {
      google.maps.event.trigger(this, "idle");
    }
  }), google.maps.event.addListener(this.getMap(), "idle", function () {
    cMarkerClusterer.redraw_();
  })];
};

/**
 * Implementation of the onRemove interface method.
 * Removes map event listeners and all cluster icons from the DOM.
 * All managed markers are also put back on the map.
 * @ignore
 */
MarkerClusterer.prototype.onRemove = function () {
  var i;

  // Put all the managed markers back on the map:
  for (i = 0; i < this.markers_.length; i++) {
    if (this.markers_[i].getMap() !== this.activeMap_) {
      this.markers_[i].setMap(this.activeMap_);
    }
  }

  // Remove all clusters:
  for (i = 0; i < this.clusters_.length; i++) {
    this.clusters_[i].remove();
  }
  this.clusters_ = [];

  // Remove map event listeners:
  for (i = 0; i < this.listeners_.length; i++) {
    google.maps.event.removeListener(this.listeners_[i]);
  }
  this.listeners_ = [];
  this.activeMap_ = null;
  this.ready_ = false;
};

/**
 * Implementation of the draw interface method.
 * @ignore
 */
MarkerClusterer.prototype.draw = function () {};

/**
 * Sets up the styles object.
 */
MarkerClusterer.prototype.setupStyles_ = function () {
  var i, size;
  if (this.styles_.length > 0) {
    return;
  }
  for (i = 0; i < this.imageSizes_.length; i++) {
    size = this.imageSizes_[i];
    this.styles_.push({
      url: this.imagePath_ + (i + 1) + "." + this.imageExtension_,
      height: size,
      width: size
    });
  }
};

/**
 *  Fits the map to the bounds of the markers managed by the clusterer.
 */
MarkerClusterer.prototype.fitMapToMarkers = function () {
  var i;
  var markers = this.getMarkers();
  var bounds = new google.maps.LatLngBounds();
  for (i = 0; i < markers.length; i++) {
    bounds.extend(markers[i].getPosition());
  }
  this.getMap().fitBounds(bounds);
};

/**
 * Returns the value of the <code>gridSize</code> property.
 *
 * @return {number} The grid size.
 */
MarkerClusterer.prototype.getGridSize = function () {
  return this.gridSize_;
};

/**
 * Sets the value of the <code>gridSize</code> property.
 *
 * @param {number} gridSize The grid size.
 */
MarkerClusterer.prototype.setGridSize = function (gridSize) {
  this.gridSize_ = gridSize;
};

/**
 * Returns the value of the <code>minimumClusterSize</code> property.
 *
 * @return {number} The minimum cluster size.
 */
MarkerClusterer.prototype.getMinimumClusterSize = function () {
  return this.minClusterSize_;
};

/**
 * Sets the value of the <code>minimumClusterSize</code> property.
 *
 * @param {number} minimumClusterSize The minimum cluster size.
 */
MarkerClusterer.prototype.setMinimumClusterSize = function (minimumClusterSize) {
  this.minClusterSize_ = minimumClusterSize;
};

/**
 *  Returns the value of the <code>maxZoom</code> property.
 *
 *  @return {number} The maximum zoom level.
 */
MarkerClusterer.prototype.getMaxZoom = function () {
  return this.maxZoom_;
};

/**
 *  Sets the value of the <code>maxZoom</code> property.
 *
 *  @param {number} maxZoom The maximum zoom level.
 */
MarkerClusterer.prototype.setMaxZoom = function (maxZoom) {
  this.maxZoom_ = maxZoom;
};

/**
 *  Returns the value of the <code>styles</code> property.
 *
 *  @return {Array} The array of styles defining the cluster markers to be used.
 */
MarkerClusterer.prototype.getStyles = function () {
  return this.styles_;
};

/**
 *  Sets the value of the <code>styles</code> property.
 *
 *  @param {Array.<ClusterIconStyle>} styles The array of styles to use.
 */
MarkerClusterer.prototype.setStyles = function (styles) {
  this.styles_ = styles;
};

/**
 * Returns the value of the <code>title</code> property.
 *
 * @return {string} The content of the title text.
 */
MarkerClusterer.prototype.getTitle = function () {
  return this.title_;
};

/**
 *  Sets the value of the <code>title</code> property.
 *
 *  @param {string} title The value of the title property.
 */
MarkerClusterer.prototype.setTitle = function (title) {
  this.title_ = title;
};

/**
 * Returns the value of the <code>zoomOnClick</code> property.
 *
 * @return {boolean} True if zoomOnClick property is set.
 */
MarkerClusterer.prototype.getZoomOnClick = function () {
  return this.zoomOnClick_;
};

/**
 *  Sets the value of the <code>zoomOnClick</code> property.
 *
 *  @param {boolean} zoomOnClick The value of the zoomOnClick property.
 */
MarkerClusterer.prototype.setZoomOnClick = function (zoomOnClick) {
  this.zoomOnClick_ = zoomOnClick;
};

/**
 * Returns the value of the <code>averageCenter</code> property.
 *
 * @return {boolean} True if averageCenter property is set.
 */
MarkerClusterer.prototype.getAverageCenter = function () {
  return this.averageCenter_;
};

/**
 *  Sets the value of the <code>averageCenter</code> property.
 *
 *  @param {boolean} averageCenter The value of the averageCenter property.
 */
MarkerClusterer.prototype.setAverageCenter = function (averageCenter) {
  this.averageCenter_ = averageCenter;
};

/**
 * Returns the value of the <code>ignoreHidden</code> property.
 *
 * @return {boolean} True if ignoreHidden property is set.
 */
MarkerClusterer.prototype.getIgnoreHidden = function () {
  return this.ignoreHidden_;
};

/**
 *  Sets the value of the <code>ignoreHidden</code> property.
 *
 *  @param {boolean} ignoreHidden The value of the ignoreHidden property.
 */
MarkerClusterer.prototype.setIgnoreHidden = function (ignoreHidden) {
  this.ignoreHidden_ = ignoreHidden;
};

/**
 * Returns the value of the <code>enableRetinaIcons</code> property.
 *
 * @return {boolean} True if enableRetinaIcons property is set.
 */
MarkerClusterer.prototype.getEnableRetinaIcons = function () {
  return this.enableRetinaIcons_;
};

/**
 *  Sets the value of the <code>enableRetinaIcons</code> property.
 *
 *  @param {boolean} enableRetinaIcons The value of the enableRetinaIcons property.
 */
MarkerClusterer.prototype.setEnableRetinaIcons = function (enableRetinaIcons) {
  this.enableRetinaIcons_ = enableRetinaIcons;
};

/**
 * Returns the value of the <code>imageExtension</code> property.
 *
 * @return {string} The value of the imageExtension property.
 */
MarkerClusterer.prototype.getImageExtension = function () {
  return this.imageExtension_;
};

/**
 *  Sets the value of the <code>imageExtension</code> property.
 *
 *  @param {string} imageExtension The value of the imageExtension property.
 */
MarkerClusterer.prototype.setImageExtension = function (imageExtension) {
  this.imageExtension_ = imageExtension;
};

/**
 * Returns the value of the <code>imagePath</code> property.
 *
 * @return {string} The value of the imagePath property.
 */
MarkerClusterer.prototype.getImagePath = function () {
  return this.imagePath_;
};

/**
 *  Sets the value of the <code>imagePath</code> property.
 *
 *  @param {string} imagePath The value of the imagePath property.
 */
MarkerClusterer.prototype.setImagePath = function (imagePath) {
  this.imagePath_ = imagePath;
};

/**
 * Returns the value of the <code>imageSizes</code> property.
 *
 * @return {Array} The value of the imageSizes property.
 */
MarkerClusterer.prototype.getImageSizes = function () {
  return this.imageSizes_;
};

/**
 *  Sets the value of the <code>imageSizes</code> property.
 *
 *  @param {Array} imageSizes The value of the imageSizes property.
 */
MarkerClusterer.prototype.setImageSizes = function (imageSizes) {
  this.imageSizes_ = imageSizes;
};

/**
 * Returns the value of the <code>calculator</code> property.
 *
 * @return {function} the value of the calculator property.
 */
MarkerClusterer.prototype.getCalculator = function () {
  return this.calculator_;
};

/**
 * Sets the value of the <code>calculator</code> property.
 *
 * @param {function(Array.<google.maps.marker.Marker>, number)} calculator The value
 *  of the calculator property.
 */
MarkerClusterer.prototype.setCalculator = function (calculator) {
  this.calculator_ = calculator;
};

/**
 * Sets the value of the <code>hideLabel</code> property.
 *
 *  @param {boolean} printable The value of the hideLabel property.
 */
MarkerClusterer.prototype.setHideLabel = function (hideLabel) {
  this.hideLabel_ = hideLabel;
};

/**
 * Returns the value of the <code>hideLabel</code> property.
 *
 * @return {boolean} the value of the hideLabel property.
 */
MarkerClusterer.prototype.getHideLabel = function () {
  return this.hideLabel_;
};

/**
 * Returns the value of the <code>batchSizeIE</code> property.
 *
 * @return {number} the value of the batchSizeIE property.
 */
MarkerClusterer.prototype.getBatchSizeIE = function () {
  return this.batchSizeIE_;
};

/**
 * Sets the value of the <code>batchSizeIE</code> property.
 *
 *  @param {number} batchSizeIE The value of the batchSizeIE property.
 */
MarkerClusterer.prototype.setBatchSizeIE = function (batchSizeIE) {
  this.batchSizeIE_ = batchSizeIE;
};

/**
 * Returns the value of the <code>clusterClass</code> property.
 *
 * @return {string} the value of the clusterClass property.
 */
MarkerClusterer.prototype.getClusterClass = function () {
  return this.clusterClass_;
};

/**
 * Sets the value of the <code>clusterClass</code> property.
 *
 *  @param {string} clusterClass The value of the clusterClass property.
 */
MarkerClusterer.prototype.setClusterClass = function (clusterClass) {
  this.clusterClass_ = clusterClass;
};

/**
 *  Returns the array of markers managed by the clusterer.
 *
 *  @return {Array} The array of markers managed by the clusterer.
 */
MarkerClusterer.prototype.getMarkers = function () {
  return this.markers_;
};

/**
 *  Returns the number of markers managed by the clusterer.
 *
 *  @return {number} The number of markers.
 */
MarkerClusterer.prototype.getTotalMarkers = function () {
  return this.markers_.length;
};

/**
 * Returns the current array of clusters formed by the clusterer.
 *
 * @return {Array} The array of clusters formed by the clusterer.
 */
MarkerClusterer.prototype.getClusters = function () {
  return this.clusters_;
};

/**
 * Returns the number of clusters formed by the clusterer.
 *
 * @return {number} The number of clusters formed by the clusterer.
 */
MarkerClusterer.prototype.getTotalClusters = function () {
  return this.clusters_.length;
};

/**
 * Adds a marker to the clusterer. The clusters are redrawn unless
 *  <code>opt_nodraw</code> is set to <code>true</code>.
 *
 * @param {google.maps.marker.Marker} marker The marker to add.
 * @param {boolean} [opt_nodraw] Set to <code>true</code> to prevent redrawing.
 */
MarkerClusterer.prototype.addMarker = function (marker, opt_nodraw) {
  this.pushMarkerTo_(marker);
  if (!opt_nodraw) {
    this.redraw_();
  }
};

/**
 * Adds an array of markers to the clusterer. The clusters are redrawn unless
 *  <code>opt_nodraw</code> is set to <code>true</code>.
 *
 * @param {Array.<google.maps.marker.Marker>} markers The markers to add.
 * @param {boolean} [opt_nodraw] Set to <code>true</code> to prevent redrawing.
 */
MarkerClusterer.prototype.addMarkers = function (markers, opt_nodraw) {
  var key;
  for (key in markers) {
    if (markers.hasOwnProperty(key)) {
      this.pushMarkerTo_(markers[key]);
    }
  }
  if (!opt_nodraw) {
    this.redraw_();
  }
};

/**
 * Pushes a marker to the clusterer.
 *
 * @param {google.maps.marker.Marker} marker The marker to add.
 */
MarkerClusterer.prototype.pushMarkerTo_ = function (marker) {
  // If the marker is draggable add a listener so we can update the clusters on the dragend:
  // if (marker.getDraggable()) {
  //     var cMarkerClusterer = this;
  //     google.maps.event.addListener(marker, "dragend", function() {
  //         if (cMarkerClusterer.ready_) {
  //             this.isAdded = false;
  //             cMarkerClusterer.repaint();
  //         }
  //     });
  // }
  marker.isAdded = false;
  this.markers_.push(marker);
};

/**
 * Removes a marker from the cluster and map.  The clusters are redrawn unless
 *  <code>opt_nodraw</code> is set to <code>true</code>. Returns <code>true</code> if the
 *  marker was removed from the clusterer.
 *
 * @param {google.maps.marker.Marker} marker The marker to remove.
 * @param {boolean} [opt_nodraw] Set to <code>true</code> to prevent redrawing.
 * @param {boolean} [opt_noMapRemove] Set to <code>true</code> to prevent removal from map but still removing from cluster management
 * @return {boolean} True if the marker was removed from the clusterer.
 */
MarkerClusterer.prototype.removeMarker = function (marker, opt_nodraw, opt_noMapRemove) {
  var removeFromMap =  true && !opt_noMapRemove;
  var removed = this.removeMarker_(marker, removeFromMap);
  if (!opt_nodraw && removed) {
    this.repaint();
  }
  return removed;
};

/**
 * Removes an array of markers from the cluster and map. The clusters are redrawn unless
 *  <code>opt_nodraw</code> is set to <code>true</code>. Returns <code>true</code> if markers
 *  were removed from the clusterer.
 *
 * @param {Array.<google.maps.marker.Marker>} markers The markers to remove.
 * @param {boolean} [opt_nodraw] Set to <code>true</code> to prevent redrawing.
 * @param {boolean} [opt_noMapRemove] Set to <code>true</code> to prevent removal from map but still removing from cluster management
 * @return {boolean} True if markers were removed from the clusterer.
 */
MarkerClusterer.prototype.removeMarkers = function (markers, opt_nodraw, opt_noMapRemove) {
  var i, r;
  var removed = false;
  var removeFromMap =  true && !opt_noMapRemove;
  for (i = 0; i < markers.length; i++) {
    r = this.removeMarker_(markers[i], removeFromMap);
    removed = removed || r;
  }
  if (!opt_nodraw && removed) {
    this.repaint();
  }
  return removed;
};

/**
 * Removes a marker and returns true if removed, false if not.
 *
 * @param {google.maps.marker.Marker} marker The marker to remove
 * @param {boolean} removeFromMap set to <code>true</code> to explicitly remove from map as well as cluster manangement
 * @return {boolean} Whether the marker was removed or not
 */
MarkerClusterer.prototype.removeMarker_ = function (marker, removeFromMap) {
  var i;
  var index = -1;
  if (this.markers_.indexOf) {
    index = this.markers_.indexOf(marker);
  } else {
    for (i = 0; i < this.markers_.length; i++) {
      if (marker === this.markers_[i]) {
        index = i;
        break;
      }
    }
  }
  if (index === -1) {
    // Marker is not in our list of markers, so do nothing:
    return false;
  }
  if (removeFromMap) {
    marker.setMap(null);
  }
  this.markers_.splice(index, 1); // Remove the marker from the list of managed markers
  return true;
};

/**
 * Removes all clusters and markers from the map and also removes all markers
 *  managed by the clusterer.
 */
MarkerClusterer.prototype.clearMarkers = function () {
  this.resetViewport_(true);
  this.markers_ = [];
};

/**
 * Recalculates and redraws all the marker clusters from scratch.
 *  Call this after changing any properties.
 */
MarkerClusterer.prototype.repaint = function () {
  var oldClusters = this.clusters_.slice();
  this.clusters_ = [];
  this.resetViewport_(false);
  this.redraw_();

  // Remove the old clusters.
  // Do it in a timeout to prevent blinking effect.
  setTimeout(function () {
    var i;
    for (i = 0; i < oldClusters.length; i++) {
      oldClusters[i].remove();
    }
  }, 0);
};

/**
 * Returns the current bounds extended by the grid size.
 *
 * @param {google.maps.LatLngBounds} bounds The bounds to extend.
 * @return {google.maps.LatLngBounds} The extended bounds.
 * @ignore
 */
MarkerClusterer.prototype.getExtendedBounds = function (bounds) {
  var projection = this.getProjection();

  // Turn the bounds into latlng.
  var tr = new google.maps.LatLng(bounds.getNorthEast().lat(), bounds.getNorthEast().lng());
  var bl = new google.maps.LatLng(bounds.getSouthWest().lat(), bounds.getSouthWest().lng());

  // Convert the points to pixels and the extend out by the grid size.
  var trPix = projection.fromLatLngToDivPixel(tr);
  trPix.x += this.gridSize_;
  trPix.y -= this.gridSize_;
  var blPix = projection.fromLatLngToDivPixel(bl);
  blPix.x -= this.gridSize_;
  blPix.y += this.gridSize_;

  // Convert the pixel points back to LatLng
  var ne = projection.fromDivPixelToLatLng(trPix);
  var sw = projection.fromDivPixelToLatLng(blPix);

  // Extend the bounds to contain the new bounds.
  bounds.extend(ne);
  bounds.extend(sw);
  return bounds;
};

/**
 * Redraws all the clusters.
 */
MarkerClusterer.prototype.redraw_ = function () {
  this.createClusters_(0);
};

/**
 * Removes all clusters from the map. The markers are also removed from the map
 *  if <code>opt_hide</code> is set to <code>true</code>.
 *
 * @param {boolean} [opt_hide] Set to <code>true</code> to also remove the markers
 *  from the map.
 */
MarkerClusterer.prototype.resetViewport_ = function (opt_hide) {
  var i, marker;
  // Remove all the clusters
  for (i = 0; i < this.clusters_.length; i++) {
    this.clusters_[i].remove();
  }
  this.clusters_ = [];

  // Reset the markers to not be added and to be removed from the map.
  for (i = 0; i < this.markers_.length; i++) {
    marker = this.markers_[i];
    marker.isAdded = false;
    if (opt_hide) {
      marker.setMap(null);
    }
  }
};

/**
 * Calculates the distance between two latlng locations in km.
 *
 * @param {google.maps.LatLng} p1 The first lat lng point.
 * @param {google.maps.LatLng} p2 The second lat lng point.
 * @return {number} The distance between the two points in km.
 * @see http://www.movable-type.co.uk/scripts/latlong.html
 */
MarkerClusterer.prototype.distanceBetweenPoints_ = function (p1, p2) {
  var R = 6371; // Radius of the Earth in km
  var dLat = (p2.lat() - p1.lat()) * Math.PI / 180;
  var dLon = (p2.lng() - p1.lng()) * Math.PI / 180;
  var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(p1.lat() * Math.PI / 180) * Math.cos(p2.lat() * Math.PI / 180) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  var d = R * c;
  return d;
};

/**
 * Determines if a marker is contained in a bounds.
 *
 * @param {google.maps.marker.Marker} marker The marker to check.
 * @param {google.maps.LatLngBounds} bounds The bounds to check against.
 * @return {boolean} True if the marker is in the bounds.
 */
MarkerClusterer.prototype.isMarkerInBounds_ = function (marker, bounds) {
  var northEast = bounds.getNorthEast();
  var southWest = bounds.getSouthWest();
  var position = marker.getPosition();
  var minX, maxX, minY, maxY;
  minX = southWest.lat();
  maxX = northEast.lat();
  minY = southWest.lng();
  maxY = northEast.lng();
  while (0 > maxY) {
    maxY += 180;
  }
  maxY += 180;
  // bounds[this.a].g = maxY;? what for
  if (minX < position.lat() && position.lat() < maxX && minY < position.lng() && position.lng() < maxY) {
    return true;
  }
  return false;
};

/**
 * Adds a marker to a cluster, or creates a new cluster.
 *
 * @param {google.maps.marker.Marker} marker The marker to add.
 */
MarkerClusterer.prototype.addToClosestCluster_ = function (marker) {
  var i, d, cluster, center;
  var distance = 40000; // Some large number
  var clusterToAddTo = null;
  for (i = 0; i < this.clusters_.length; i++) {
    cluster = this.clusters_[i];
    center = cluster.getCenter();
    if (center) {
      d = this.distanceBetweenPoints_(center, marker.getPosition());
      if (d < distance) {
        distance = d;
        clusterToAddTo = cluster;
      }
    }
  }
  if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {
    clusterToAddTo.addMarker(marker);
  } else {
    cluster = new Cluster(this);
    cluster.addMarker(marker);
    this.clusters_.push(cluster);
  }
};

/**
 * Creates the clusters. This is done in batches to avoid timeout errors
 *  in some browsers when there is a huge number of markers.
 *
 * @param {number} iFirst The index of the first marker in the batch of
 *  markers to be added to clusters.
 */

MarkerClusterer.prototype.createClusters_ = function (iFirst) {
  var i, marker;
  var mapBounds;
  var cMarkerClusterer = this;
  if (!this.ready_) {
    return;
  }

  // Cancel previous batch processing if we're working on the first batch:
  if (iFirst === 0) {
    /**
     * This event is fired when the <code>MarkerClusterer</code> begins
     *  clustering markers.
     * @name MarkerClusterer#clusteringbegin
     * @param {MarkerClusterer} mc The MarkerClusterer whose markers are being clustered.
     * @event
     */
    google.maps.event.trigger(this, "clusteringbegin", this);
    if (typeof this.timerRefStatic !== "undefined") {
      clearTimeout(this.timerRefStatic);
      delete this.timerRefStatic;
    }
  }

  // Get our current map view bounds.
  // Create a new bounds object so we don't affect the map.
  //
  // See Comments 9 & 11 on Issue 3651 relating to this workaround for a Google Maps bug:
  if (this.getMap().getZoom() > 3) {
    mapBounds = new google.maps.LatLngBounds(this.getMap().getBounds().getSouthWest(), this.getMap().getBounds().getNorthEast());
  } else {
    mapBounds = new google.maps.LatLngBounds(new google.maps.LatLng(85.02070771743472, -178.48388434375), new google.maps.LatLng(-85.08136444384544, 178.00048865625));
  }
  var bounds = this.getExtendedBounds(mapBounds);
  // console.log(bounds);

  var iLast = Math.min(iFirst + this.batchSize_, this.markers_.length);
  for (i = iFirst; i < iLast; i++) {
    this.markers_[i];
    if (this.markers_.isFilter === true) {
      if (this.markers_[i].isFilter === undefined) {
        if (this.markers_[i].setMap !== undefined) this.markers_[i].setMap(null);
        continue;
      }
    }
    if (!this.markers_[i].isAdded && this.isMarkerInBounds_(this.markers_[i], bounds)) {
      if (!this.ignoreHidden_ || this.ignoreHidden_ && this.markers_[i].getVisible()) {
        if (this.markers_[i].getMap === undefined) this.markers_[i] = this.addOrtherMarker(this.markers_[i]);
        this.addToClosestCluster_(this.markers_[i]);
      }
    }
  }
  if (iLast < this.markers_.length) {
    this.timerRefStatic = setTimeout(function () {
      cMarkerClusterer.createClusters_(iLast);
    }, 0);
  } else {
    delete this.timerRefStatic;

    /**
     * This event is fired when the <code>MarkerClusterer</code> stops
     *  clustering markers.
     * @name MarkerClusterer#clusteringend
     * @param {MarkerClusterer} mc The MarkerClusterer whose markers are being clustered.
     * @event
     */
    google.maps.event.trigger(this, "clusteringend", this);
    for (i = 0; i < this.clusters_.length; i++) {
      this.clusters_[i].updateIcon_();
    }
  }
};
MarkerClusterer.prototype.addOrtherMarker = function (data) {
  var self = this;
  var position = [data.lat, data.lng];
  var color, tooltip;
  if (typeof testVariable !== "undefined") color = systemconfig.markerColor;
  if (data.color) color = data.color;
  if (data.tooltip) tooltip = data.tooltip;
  var image = {
    path: "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z",
    // This marker is 20 pixels wide by 32 pixels high.
    scaledSize: new google.maps.Size(24, 24),
    // The origin for this image is (0, 0).
    origin: new google.maps.Point(0, 0),
    // The anchor for this image is the base of the flagpole at (0, 32).
    anchor: new google.maps.Point(12, 12),
    fillColor: color,
    fillOpacity: 1,
    strokeColor: "white",
    strokeWeight: 4
  };
  var marker = new google.maps.marker.Marker({
    position: new google.maps.LatLng(position[0], position[1]),
    draggable: false,
    icon: image,
    zIndex: 2
  });
  if (tooltip) {
    var style = {
      maxWidth: 350
    };
    var content = "";
    if (_typeof(tooltip) == "object") {
      if (tooltip.style) style = tooltip.style;
      if (tooltip.element) content = tooltip.element;
    } else content = tooltip;
    var infowindow = new google.maps.InfoWindow(style);
    google.maps.event.addListener(marker, 'mouseover', function () {
      infowindow.setContent(content);
      infowindow.open(self.map_, marker);
    });
    google.maps.event.addListener(marker, 'mouseout', function (event) {
      infowindow.close();
    });
  }
  marker.dataMarker = data;
  marker.isFilter = data.isFilter;
  return marker;
};

/**
 * Extends an object's prototype by another's.
 *
 * @param {Object} obj1 The object to be extended.
 * @param {Object} obj2 The object to extend with.
 * @return {Object} The new extended object.
 * @ignore
 */
MarkerClusterer.prototype.extend = function (obj1, obj2) {
  return function (object) {
    var property;
    for (property in object.prototype) {
      this.prototype[property] = object.prototype[property];
    }
    return this;
  }.apply(obj1, [obj2]);
};

/**
 * The default function for determining the label text and style
 * for a cluster icon.
 *
 * @param {Array.<google.maps.marker.Marker>} markers The array of markers represented by the cluster.
 * @param {number} numStyles The number of marker styles available.
 * @return {ClusterIconInfo} The information resource for the cluster.
 * @constant
 * @ignore
 */
MarkerClusterer.CALCULATOR = function (markers, numStyles) {
  var index = 0;
  var title = "";
  var count = markers.length.toString();
  var dv = count;
  while (dv !== 0) {
    dv = parseInt(dv / 10, 10);
    index++;
  }
  index = Math.min(index, numStyles);
  return {
    text: count,
    index: index,
    title: title
  };
};

/**
 * The number of markers to process in one batch.
 *
 * @type {number}
 * @constant
 */
MarkerClusterer.BATCH_SIZE = 2000;

/**
 * The number of markers to process in one batch (IE only).
 *
 * @type {number}
 * @constant
 */
MarkerClusterer.BATCH_SIZE_IE = 500;

/**
 * The default root name for the marker cluster images.
 *
 * @type {string}
 * @constant
 */
MarkerClusterer.IMAGE_PATH = "//cdn.rawgit.com/mahnunchik/markerclustererplus/master/images/m";

/**
 * The default extension name for the marker cluster images.
 *
 * @type {string}
 * @constant
 */
MarkerClusterer.IMAGE_EXTENSION = "png";

/**
 * The default array of sizes for the marker cluster images.
 *
 * @type {Array.<number>}
 * @constant
 */
MarkerClusterer.IMAGE_SIZES = [53, 56, 66, 78, 90];
if (typeof String.prototype.trim !== 'function') {
  /**
   * IE hack since trim() doesn't exist in all browsers
   * @return {string} The string with removed whitespace
   */
  String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g, '');
  };
}
window.MarkerClusterer = MarkerClusterer;
var _default = MarkerClusterer;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(39725);
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _file = __webpack_require__(54134);
var _Svg = _interopRequireDefault(__webpack_require__(98315));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _Text = __webpack_require__(35844);
var _BScroller = _interopRequireDefault(__webpack_require__(1446));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var MediACore = new _Dom["default"]();
MediACore.install(_ACore["default"]);
var _ = MediACore._;
var $ = MediACore.$;
function openFileDialog(props) {
  if (!MediACore.$fileInput) {
    MediACore.$fileInput = _({
      tag: 'input',
      "class": 'vmedia-no-show',
      attr: {
        type: 'file'
      },
      props: {}
    }).addTo(document.body);
  }
  props = props || {};
  if (props.accept) {
    if (props.accept instanceof Array) MediACore.$fileInput.attr('accept', props.accept.join(','));else MediACore.$fileInput.attr('accept', props.accept);
  } else {
    MediACore.$fileInput.attr('accept', null);
  }
  if (props.multiple) {
    MediACore.$fileInput.attr('multiple', 'true');
  } else {
    MediACore.$fileInput.attr('multiple');
  }
  MediACore.$fileInput.value = null;
  MediACore.$fileInput.click();
  return new Promise(function (resolve, reject) {
    var finish = false;
    var body = $('body');
    MediACore.$fileInput.once('change', function () {
      finish = true;
      resolve(Array.prototype.map.call(this.files, function (file) {
        return file;
      }));
    });
    body.once('mousedown', function () {
      if (finish) return;
      resolve();
    });
  });
}
function MediaInput() {
  this.$editor = $('.vmedia-media-input-text-container-editor', this);
  this.$editor.on('paste', this.eventHandler.paste);
  this.$editor.on('keydown', this.eventHandler.keydown, true);
  this.$addImagebtn = $('#add-image-btn', this);
  this.$addImagebtn.on('click', this.eventHandler.clickAddImage);
  this.$addFilebtn = $('#add-file-btn', this);
  this.$addFilebtn.on('click', this.eventHandler.clickAddFile);
  this.$imagePreviewContainer = $('.vmedia-media-input-imagepreview-container', this);
  this.on('dragover', this.eventHandler.dragOver);
  this.on('drop', this.eventHandler.drop);
  this.$sendbtn = $('#send-btn', this);
  this.$sendbtn.on('click', this.eventHandler.send);
  this.$toolLeftCtn = $('.vmedia-media-input-tool-container-left', this);
  this.$pluginContentCtn = $('.vmedia-media-input-plugin-content-container', this);
  this.snapData = [];
  this.snapDataHead = 0;
  this.sync = this.afterAttached();
  this.snapText();
}
MediaInput.tag = 'MediaInput'.toLowerCase();
MediaInput.render = function () {
  return _({
    "class": 'vmedia-media-input',
    extendEvent: ['send', 'update', 'releaseplugin'],
    child: {
      "class": 'vmedia-media-input-text-container',
      child: [{
        "class": 'vmedia-media-input-imagepreview-container',
        child: {
          "class": 'vmedia-media-input-dropover',
          child: 'download-ico'
        }
      }, {
        "class": 'vmedia-media-input-text-container-editor',
        attr: {
          contenteditable: 'true'
        },
        on: {}
      }, {
        "class": 'vmedia-media-input-text-container-buttons',
        attr: {
          title: 'Send'
        }
      }, {
        "class": 'vmedia-media-input-tool-container',
        child: [{
          "class": 'vmedia-media-input-tool-container-left',
          child: [{
            tag: 'button',
            attr: {
              id: 'add-image-btn',
              title: 'Add image'
            },
            child: 'add-image-ico'
          }, {
            tag: 'button',
            attr: {
              id: 'add-file-btn',
              title: 'Add file'
            },
            child: 'add-file-ico'
          }]
        }, {
          "class": 'vmedia-media-input-tool-container-right',
          child: [{
            tag: 'button',
            id: 'send-btn',
            attr: {
              title: 'Send'
            },
            child: 'send-ico'
          }]
        }]
      }, '.vmedia-media-input-plugin-content-container.blur']
    }
  });
};
MediaInput.prototype.addImage = function (url, title, data) {
  _({
    tag: 'imagepreview',
    attr: {
      title: title
    },
    props: {
      data: data,
      imgSrc: url
    },
    on: {
      pressremove: function pressremove() {
        this.selfRemove();
      }
    }
  }).addTo(this.$imagePreviewContainer);
};
MediaInput.prototype.addFile = function (url, ext, title, data) {
  _({
    tag: 'filepreview',
    attr: {
      title: title
    },
    props: {
      fileSrc: url,
      ext: ext,
      data: data
    },
    on: {
      pressremove: function pressremove() {
        this.selfRemove();
      }
    }
  }).addTo(this.$imagePreviewContainer);
};
MediaInput.property = {};
MediaInput.property.text = {
  set: function set(value) {
    this.$editor.clearChild();
    value = value || '';
    var lines = value.split(/\r*\n/);
    if (lines.length < 1) return;
    this.$editor.addChild(document.createTextNode(lines[0]));
    lines.shift();
    lines.forEach(function (line) {
      this.$editor.addChild(_({
        child: document.createTextNode(line)
      }));
    }.bind(this));
    this.snapText();
  },
  get: function get() {
    return this.getTextFromElements(this.$editor);
  }
};
MediaInput.property.files = {
  get: function get() {
    return Array.prototype.filter.call(this.$imagePreviewContainer.childNodes, function (e) {
      return e._azar_extendTags && e._azar_extendTags.filepreview;
    }).map(function (e) {
      return e.data;
    });
  }
};
MediaInput.property.images = {
  get: function get() {
    return Array.prototype.filter.call(this.$imagePreviewContainer.childNodes, function (e) {
      return e._azar_extendTags && e._azar_extendTags.imagepreview;
    }).map(function (e) {
      return e.data;
    });
  }
};

// MediaInput.property

MediaInput.property.plugins = {
  set: function set(value) {
    this.sync = this.sync.then(this._dettachPlugins.bind(this, this._plugins));
    if (value) {
      if (!(value instanceof Array)) value = [value];
      this._plugins = value;
      this.addClass('has-plugin');
    } else {
      //remove plugin
      this.sync.then(this._dettachPlugins.bind(this));
      this._plugins = null;
      this.removeClass('has-plugin');
    }
    this.sync = this.sync.then(this._attachPlugins.bind(this, this._plugins));
  },
  get: function get() {
    return this._plugins || null;
  }
};
MediaInput.prototype.appendText = function (text) {
  var lastBr = null;
  if (this.$editor.childNodes && this.$editor.childNodes.length > 0 && this.$editor.childNodes[this.$editor.childNodes.length - 1].tagName && this.$editor.childNodes[this.$editor.childNodes.length - 1].tagName.toLowerCase() == 'br') {
    lastBr = this.$editor.childNodes[this.$editor.childNodes.length - 1];
  }
  var lines = text.split(/\r?\n/);
  if (lastBr) {
    for (var i = 0; i < lines.length; ++i) {
      if (i > 0) this.$editor.addChild(_('br'));
      var e = _({
        text: lines[i]
      });
      this.$editor.addChild(e);
    }
  } else {
    for (var i = 0; i < lines.length; ++i) {
      if (i > 0) this.$editor.addChildBefore(_('br'), lastBr);
      var e = _({
        text: lines[i]
      });
    }
    this.$editor.addChildBefore(e, lastBr);
  }
  (0, _Text.setSelectionRange)(this.$editor, Infinity);
};
MediaInput.prototype._attachPlugins = function (plugins) {
  if (!plugins) return;
  var self = this;
  plugins.forEach(function (plugin) {
    var oldContent = null;
    var $button = _('button').addTo(self.$toolLeftCtn).on('click', function () {
      if (self._lastActivePlugin == plugin) return;
      self.releasePlugin();
      self._lastActivePlugin = plugin;
      self.$pluginContentCtn.removeClass('blur');
      self.$pluginContentCtn.clearChild();
      if (plugin.getContent) {
        var newContent = plugin.getContent(self, _, $, self.$pluginContentCtn, oldContent);
        oldContent = newContent;
        self.$pluginContentCtn.addChild(newContent);
      }
      var buttonBound = $button.getBoundingClientRect();
      var rootBound = self.$pluginContentCtn.parentNode.getBoundingClientRect();
      self.$pluginContentCtn.addStyle({
        left: buttonBound.left + buttonBound.width / 2 - rootBound.left + 'px',
        bottom: rootBound.bottom - buttonBound.top + 'px'
      });
      if (plugin.onActive) plugin.onActive(self);
      setTimeout(function () {
        var outListener = function outListener(event) {
          if (_EventEmitter["default"].hitElement(self.$pluginContentCtn, event)) {} else if (self._lastActivePlugin == plugin) {
            var prevented = true;
            if (plugin.onBlur) plugin.onBlur({
              preventDefault: function preventDefault() {
                prevented = false;
              }
            });
            if (prevented) {
              self.releasePlugin();
              $(document.body).off('click', outListener);
            }
          } else {
            $(document.body).off('click', outListener);
          }
        };
        $(document.body).on('click', outListener);
        self.once('releaseplugin', function (ev) {
          if (ev.plugin == plugin) {
            $(document.body).off('click', outListener);
          }
        });
      }, 100);
    });
    var btnInners = plugin.getTriggerInner(self, _, $, $button);
    if (!(btnInners instanceof Array)) btnInners = [btnInners];
    btnInners.forEach(function (e) {
      if (typeof e == 'string') {
        e = _({
          text: e
        });
      }
      $button.addChild(e);
    });
    if (plugin.onAttached) plugin.onAttached(self);
  });
  //todo
  return true;
};
MediaInput.prototype.releasePlugin = function () {
  if (this._lastActivePlugin) {
    var plugin = this._lastActivePlugin;
    plugin.onDeactived && plugin.onDeactived(self);
    this.$pluginContentCtn.addClass('blur');
    this.emit('releaseplugin', {
      target: this,
      plugin: plugin
    }, this);
    this._lastActivePlugin = null;
  }
};
MediaInput.prototype._dettachPlugins = function (plugins) {
  if (!plugins) return;
  var self = this;
  plugins.forEach(function (plugin) {
    if (plugin.onAttached) plugin.onAttached(self);
  });
  //todo
  this._lastActivePlugin = null;
  return true;
};
MediaInput.prototype.focus = function () {
  this.$editor.focus();
  (0, _Text.setSelectionRange)(this.$editor, Infinity);
};
MediaInput.prototype.clear = function () {
  Array.prototype.filter.call(this.$imagePreviewContainer.childNodes, function (e) {
    return e._azar_extendTags && e._azar_extendTags.imagepreview;
  }).forEach(function (e) {
    e.selfRemove();
  });
  Array.prototype.filter.call(this.$imagePreviewContainer.childNodes, function (e) {
    return e._azar_extendTags && e._azar_extendTags.filepreview;
  }).forEach(function (e) {
    return e.selfRemove();
  });
  this.$editor.innerHTML = "";
  this.emit('update', {
    target: this
  }, this);
};
MediaInput.prototype.escapeSpace = function (s) {
  return s.replace(/\s/g, '&nbsp');
};
MediaInput.prototype.unescapeSpace = function (s) {
  return s.replace(/&nbsp/g, ' ');
};
MediaInput.prototype.getTextFromElements = function (element) {
  return (0, _Text.getTextIn)(element);
  // var self = this;

  // function visit(e, prevE) {
  //     var ac = '';
  //     var isNewLine = false;
  //     if (prevE && prevE.nodeType != Node.TEXT_NODE) {

  //         if (prevE.tagName && prevE.tagName.toLowerCase() == 'br') {
  //             isNewLine = true;
  //         }
  //         else if (Element.prototype.getComputedStyleValue.call(prevE, 'display') == 'block') {
  //             isNewLine = true;
  //         }
  //     }

  //     if (e.nodeType == Node.TEXT_NODE) {
  //         if (isNewLine) ac += '\n';
  //         ac += e.data;
  //     }
  //     else {
  //         var lastE = undefined;
  //         for (var i = 0; i < e.childNodes.length; ++i) {
  //             ac += visit(e.childNodes[i], i > 0 ? e.childNodes[i - 1] : null);

  //         }
  //     }
  //     return ac;
  // }

  // return visit(element);
};

MediaInput.prototype.getElementsFromText = function (text) {
  var newElements = text.split('\n').map(function (text) {
    return document.createTextNode(text);
  }).reduce(function (ac, cr, i, arr) {
    if (i > 0) ac.push(_('br'));
    ac.push(cr);
    return ac;
  }, []);
  return newElements;
};

// MediaInput.prototype.textOnly = function(e) {
//     if (e.nodeType == Node.TEXT_NODE) return e.textContent;
//     if (!e.tagName) return '';
//     if (e.tagName.toLowerCase() == 'br') return '\n';
//     return ($(e).getComputedStyleValue('display') == 'block' ? '\n' : '') + Array.prototype.map.call(e.childNodes, this.textOnly.bind(this)).join('')
// };

MediaInput.prototype.makeTextOnly = function () {
  var self = this;
  var editor = this.$editor;
  Array.apply(null, this.$editor.childNodes).forEach(function (e) {
    e = $(e);
    if (e.nodeType == Node.TEXT_NODE) return;
    if (e.tagName) {
      var tagName = e.tagName.toLowerCase();
      if (tagName == 'br') return;
      if (tagName.match(/img|script|svg|button|iframe|hr|video|canvas/)) {
        e.selfRemove(e);
      }
      if (tagName.match(/select|input|textarea/)) {
        e.selfReplace(document.createTextNode(e.value));
        return;
      }
      var newElements = self.getElementsFromText(self.getTextFromElements(e));
      var lastElement;
      if (e.getComputedStyleValue('display') == 'block') {
        lastElement = _('br');
      } else {
        lastElement = newElements.pop();
      }
      e.selfReplace(lastElement);
      newElements.forEach(function (nE) {
        editor.addChildBefore(nE, lastElement);
      });
    }
  });
  this.emit('update', {
    target: editor
  }, this);
};
MediaInput.eventHandler = {};
MediaInput.eventHandler.keydown = function (event) {
  if (event.key == "Enter") {
    if (!event.ctrlKey && !event.altKey && !event.shiftKey) {
      event.preventDefault();
      this.eventHandler.send(event);
      this.snapText();
    }
  }
  if (event.ctrlKey && event.key == 'z') {
    event.preventDefault();
    this.undoText();
  }
  if (event.ctrlKey && event.key == 'x') {
    setTimeout(this.snapText.bind(this), 100);
  }
  setTimeout(this.emit.bind(this, 'update', event, this), 1);
};
MediaInput.eventHandler.send = function (event) {
  if (this.images.length == 0 && this.text.trim().length == 0 && this.files.length == 0) {
    return;
  }
  this.emit('send', event, this);
  this.snapText();
};
MediaInput.eventHandler.clickAddImage = function (event) {
  openFileDialog({
    accept: 'image/*',
    multiple: true
  }).then(function (files) {
    if (!files) return;
    files.map(function (file) {
      var url = (window.URL || window.webkitURL).createObjectURL(file);
      this.addImage(url, file.name, {
        file: file,
        name: file.name,
        url: url
      });
      this.emit('update', event, this);
    }.bind(this));
  }.bind(this));
};
MediaInput.eventHandler.clickAddFile = function (event) {
  openFileDialog({
    multiple: true
  }).then(function (files) {
    if (!files) return;
    files.map(function (file) {
      var url = (window.URL || window.webkitURL).createObjectURL(file);
      if (file.type.match(/^image/)) {
        this.addImage(url, file.name, {
          file: file,
          name: file.name,
          url: url
        });
      } else {
        var p = file.name.split('.');
        var ext = p.length > 1 ? p[p.length - 1] : '';
        this.addFile(url, ext.toUpperCase(), file.name, {
          file: file,
          name: file.name,
          url: url
        });
      }
    }.bind(this));
    this.emit('update', event, this);
  }.bind(this));
};
MediaInput.eventHandler.dragOver = function (event) {
  event.preventDefault();
  this._lastDragOver = new Date().getTime();
  var currentDragOver = this._lastDragOver;
  if (!this.dragOver) {
    this.dragOver = true;
    this.addClass('dragover');
    this.emit('update', event, this);
  }
  setTimeout(function () {
    this._waitDragFileOut;
    if (this._lastDragOver == currentDragOver) {
      this.removeClass('dragover');
      this.dragOver = false;
      this.emit('update', event, this);
    }
  }.bind(this), 200);
};
MediaInput.eventHandler.drop = function (event) {
  event.preventDefault();
  if (event.dataTransfer.items) {
    for (var i = 0; i < event.dataTransfer.items.length; i++) {
      if (event.dataTransfer.items[i].kind === 'file') {
        var file = event.dataTransfer.items[i].getAsFile();
        if (!file.type && file.size % 4096 == 0) {
          //todo: folder
        } else {
          this.addSystemFile(file);
          this.emit('update', event, this);
        }
      }
    }
  } else {
    for (var i = 0; i < event.dataTransfer.files.length; i++) {
      var file = event.dataTransfer.files[i];
      if (!file.type && file.size % 4096 == 0) {} else {
        this.addSystemFile(file);
        this.emit('update', event, this);
      }
    }
  }
};
MediaInput.prototype.addSystemFile = function (file) {
  var url = (window.URL || window.webkitURL).createObjectURL(file);
  if (file.type.match(/^image/)) {
    this.addImage(url, file.name, {
      file: file,
      name: file.name,
      url: url
    });
  } else {
    var p = file.name.split('.');
    var ext = p.length > 1 ? p[p.length - 1] : '';
    this.addFile(url, ext.toUpperCase(), file.name, {
      file: file,
      name: file.name,
      url: url
    });
  }
};
MediaInput.eventHandler.paste = function (event) {
  var pasteData = event.clipboardData || window.clipboardData;
  var beforePasteElement = [];
  var self = this;
  function visit(e, ac) {
    ac.push(e);
    if (e.childNodes) {
      for (var i = 0; i < e.childNodes.length; ++i) {
        visit(e.childNodes[i], ac);
      }
    }
  }
  visit(this.$editor, beforePasteElement);
  function relocalCursor() {
    var afterPasteElement = [];
    visit(self.$editor, afterPasteElement);
    var diffElts = afterPasteElement.filter(function (e) {
      return beforePasteElement.indexOf(e) < 0;
    });
    if (diffElts.length > 0) {
      var last = diffElts.pop();
      if (last.nodeType == Node.TEXT_NODE) {
        var range = document.createRange();
        range.selectNodeContents(last);
        range.setStart(last, last.data.length);
        var sel = window.getSelection();
        sel.removeAllRanges();
        sel.addRange(range);
      } else {
        (0, _Text.setSelectionRange)(last, Infinity);
      }
    }
  }

  /**Safari bug */
  if (pasteData && pasteData.items) {
    var items = pasteData.items;
    var isAddImage = false;
    for (var i = 0; i < items.length; i++) {
      if (items[i].type.indexOf('image') !== -1) {
        var blob = items[i].getAsFile();
        var URLObj = window.URL || window.webkitURL;
        var source = URLObj.createObjectURL(blob);
        var file = (0, _file.blobToFile)(blob);
        var buffer = (0, _file.blobToArrayBuffer)(blob).then(function (arrayBuffer) {
          this.addImage(source, 'Clipboard', {
            file: blob,
            name: null,
            url: source,
            blob: blob,
            arrayBuffer: arrayBuffer
          });
          this.emit('update', event, this);
        }.bind(this));
        isAddImage = true;
        this.emit('update', event, this);
      }
    }
    if (isAddImage) event.preventDefault();
    requestAnimationFrame(function () {
      self.makeTextOnly();
      relocalCursor();
    });
  } else {
    requestAnimationFrame(function () {
      var img = $('img', this.$editor, function (img) {
        if (img) {
          img = $(img);
          var source = img.getAttribute('src');
          img.selfRemove();
          _Dom["default"].imageToCanvas(img).then(function (canvas) {
            var dataURI = canvas.toDataURL();
            var blob = (0, _file.dataURItoBlob)(dataURI);
            var file = (0, _file.blobToFile)(blob);
            var buffer = (0, _file.blobToArrayBuffer)(blob).then(function (arrayBuffer) {
              this.addImage(source, 'Clipboard', {
                dataURI: dataURI,
                file: blob,
                name: null,
                url: source,
                blob: blob,
                arrayBuffer: arrayBuffer
              });
              this.emit('update', event, this);
            }.bind(this));
          }.bind(this), function (e) {})["catch"](function (e) {});
        }
      }.bind(this));
      this.makeTextOnly();
      relocalCursor();
    }.bind(this));
  }
};
MediaInput.prototype.undoText = function () {
  if (this.snapDataHead <= 1) return;
  this.snapDataHead--;
  if (this.snapDataHead <= 0) return;
  var newText = this.snapData[this.snapDataHead - 1];
  this.text = newText;
  (0, _Text.setSelectionRange)(this.$editor, Infinity);
};
MediaInput.prototype.redoText = function () {
  if (this.snapData.length <= this.snapDataHead) return;
  this.snapDataHead++;
  var newText = this.snapData[this.snapDataHead - 1];
  var currentText = this.text;
  this.text = newText;
  (0, _Text.setSelectionRange)(this.$editor, Infinity);
};
MediaInput.prototype.snapText = function () {
  while (this.snapData.length > this.snapDataHead && this.snapData.length > 0) {
    this.snapData.pop();
  }
  var oldText = this.snapData[this.snapDataHead - 1];
  var newText = this.text;
  if (newText == oldText) return;
  this.snapData.push(this.text);
  this.snapDataHead++;
};
function ImagePreview() {
  var res = _({
    extendEvent: 'pressremove',
    "class": ['vmedia-media-input-imagepreview', 'vmedia-no-select'],
    child: ['img', 'times-ico']
  });
  res.$img = $('img', res);
  res.$timesIco = $('times-ico', res);
  res.$timesIco.on('click', function (event) {
    res.emit('pressremove', event, res);
  });
  _OOP["default"].drillProperty(res, res.$img, 'imgSrc', 'src');
  return res;
}
;
function FilePreview() {
  var res = _({
    extendEvent: 'pressremove',
    "class": ['vmedia-media-input-filepreview', 'vmedia-no-select'],
    child: ['attachment-ico', 'times-ico']
  });
  res.$img = $('attachment-ico', res);
  _OOP["default"].drillProperty(res, res.$img, 'ext');
  res.$timesIco = $('times-ico', res);
  res.$timesIco.on('click', function (event) {
    res.emit('pressremove', event, res);
  });
  return res;
}
;
MediACore.creator.mediainput = MediaInput;
MediACore.creator.imagepreview = ImagePreview;
MediACore.creator.filepreview = FilePreview;
MediACore.creator['send-ico'] = function () {
  return _(['<svg class="send" width="100" height="100" version="1.1" viewBox="0 0 26.458 26.458">', '    <g transform="translate(0 -270.54)">', '        <path d="m0.64298 272.44 3.1712 9.5402 22.152 1.7742-22.152 1.7482-3.1712 9.4749 25.323-11.223z" />', '    </g>', '</svg>'].join(''));
};
MediACore.creator['add-file-ico'] = function () {
  return _(['<svg class="add-file" width="100" height="100" version="1.1" viewBox="0 0 26.458 26.458" xmlns="http://www.w3.org/2000/svg">', '    <g transform="translate(0 -270.54)">', '        <path d="m4.2431 295.69c-0.74006-0.0759-1.4136-0.33772-2.0047-0.77942-0.19965-0.14919-0.60549-0.55475-0.75233-0.75182-0.45099-0.60524-0.7154-1.2913-0.77699-2.016-0.01275-0.15007-0.01628-2.6111-0.01252-8.7468 0.0049-8.0504 0.0068-8.5472 0.03338-8.6986 0.0883-0.50391 0.22692-0.91024 0.44705-1.3104 0.52794-0.95973 1.452-1.6645 2.5119-1.9158 0.44319-0.10508 0.12729-0.0972 4.1445-0.10308 2.5538-4e-3 3.6864-1e-4 3.7795 0.0121 0.38853 0.0508 0.80777 0.24687 1.2709 0.59434 0.44102 0.33085 0.68272 0.55272 1.7227 1.5813 0.46507 0.45998 1.2812 1.2664 1.8136 1.7921 0.96172 0.94958 1.3847 1.3824 1.696 1.7354 0.61073 0.69257 0.92 1.2063 1.0441 1.7344 0.02613 0.11122 0.02875 0.28598 0.03409 2.2731 0.0047 1.7451 0.0018 2.1574-0.01502 2.178-0.01424 0.0174-0.10685 0.0394-0.2936 0.0699-0.45695 0.0745-1.0078 0.22363-1.4356 0.38862-0.10025 0.0387-0.1888 0.0663-0.19678 0.0613-0.0085-5e-3 -0.01461-0.7983-0.01475-1.9156-2.09e-4 -1.6438-0.0036-1.9208-0.0245-2.0096-0.06972-0.29578-0.28642-0.50043-0.63767-0.60222-0.32942-0.0955-0.31104-0.0947-2.4299-0.10482l-1.9437-9e-3 -0.12495-0.0442c-0.25474-0.0901-0.45899-0.26526-0.5666-0.48578-0.10853-0.22238-0.10356-0.127-0.10407-1.9994-4.63e-4 -1.7153-0.01031-2.1544-0.05446-2.4288-0.06935-0.43095-0.22893-0.69171-0.5027-0.82138l-0.10904-0.0516h-3.1807c-3.4262 0-3.27-4e-3 -3.5482 0.0835-0.68034 0.21325-1.1718 0.754-1.3329 1.4666l-0.0345 0.15261v8.5059c0 8.1045 0.0014 8.5125 0.02871 8.6468 0.08088 0.39719 0.25808 0.72858 0.53956 1.0091 0.28082 0.27984 0.576 0.44186 0.98191 0.53896 0.11389 0.0273 0.36156 0.0293 4.5294 0.0374l4.409 9e-3 0.02019 0.0402c0.0111 0.0221 0.07695 0.15943 0.14632 0.30521s0.17519 0.3518 0.23515 0.45783c0.14341 0.25357 0.43703 0.69284 0.61725 0.92343 0.0793 0.10148 0.14077 0.19003 0.13659 0.19679-0.0073 0.0118-9.9306 0.0132-10.046 1e-3z" />', '        <path transform="matrix(.26458 0 0 .26458 0 270.54)" d="m72.469 65.742v7.4062h-7.4062v7.2852h7.4062v7.2812h7.2793v-7.2812h7.3535v-7.2852h-7.3535v-7.4062zm24.948 11.119a21.371 21.371 0 0 1-21.371 21.371 21.371 21.371 0 0 1-21.371-21.371 21.371 21.371 0 0 1 21.371-21.371 21.371 21.371 0 0 1 21.371 21.371z" style="fill-rule:evenodd;" />', '        <path d="m17.256 283.76 1.921-0.47607-0.04725-4.2884c0-0.50159-0.29516-1.2441-1.0789-2.0168l-4.6989-4.6324c-0.73814-0.72769-1.5947-0.97084-2.1519-0.97084h-7.0235c-2.1533 0.0144-3.4601 2.6226-3.4778 3.4778v17.284c0 2.121 2.2409 3.5346 3.5346 3.5346h10.058l-1.1146-1.9305h-8.6658c-1.1271 0-1.8503-1.1115-1.8503-1.8503v-16.867c0-1.0721 1.1373-1.6977 1.6977-1.6977h6.2175c0.43142 0 0.8103 0.28958 0.8103 1.1742v3.714c0 0.24768 0.36442 0.90967 0.90968 0.90967h3.2537c1.2453 0 1.6905 0.32876 1.6905 1.1613z"  />', '    </g>', '</svg>'].join(''));
};
MediACore.creator['add-image-ico'] = function () {
  return _(['<svg class="add-image" width="100" height="100" version="1.1" viewBox="0 0 26.458 26.458" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="absol/src/HTML5/Elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">', '    <g transform="translate(0 -270.54)">', '        <path d="m24.73 288.69a5.9808 5.9808 0 0 1-5.9808 5.9808 5.9808 5.9808 0 0 1-5.9808-5.9808 5.9808 5.9808 0 0 1 5.9808-5.9808 5.9808 5.9808 0 0 1 5.9808 5.9808zm1.503-0.037a7.5843 7.5843 0 0 1-7.5843 7.5843 7.5843 7.5843 0 0 1-7.5843-7.5843 7.5843 7.5843 0 0 1 7.5843-7.5843 7.5843 7.5843 0 0 1 7.5843 7.5843z" style="fill-rule:evenodd;fill:#414141"/>', '        <path d="m17.869 284.42v3.4127h-3.4081v1.6066h3.4081v3.438h1.6061v-3.438h3.4432v-1.6066h-3.4432v-3.4127z" style="fill-rule:evenodd;fill:#414141"/>', '        <path d="m24.614 281.39v-6.1305c0-1.6957-1.2841-2.6602-2.6602-2.6602h-18.412c-1.4547 0-2.7249 1.0223-2.7249 2.7249v14.986c0 1.2346 0.99768 2.6028 2.586 2.586h6.9542c-0.36184-0.63963-0.51495-1.0286-0.69323-1.6506h-6.4562c-0.29938 0-0.72246-0.40379-0.72246-0.72247v-1.8082l6.0428-6.7569 2.0296 2.0129 0.9605-1.3029-2.9734-3.1488-5.9885 6.7736v-11.426c0-0.24935 0.30766-0.63476 0.63476-0.63476h18.934c0.3592 0 0.84357 0.19284 0.84357 0.84357v5.2285c0.61147 0.22444 1.1564 0.59412 1.6454 1.0858z" style="fill:#414141"/>', '        <circle cx="17.869" cy="277.61" r="1.6891" style="fill-rule:evenodd;fill:#414141"/>', '    </g>', '</svg>'].join(''));
};
MediACore.creator['attachment-ico'] = function () {
  return _(['<svg class="attachment" width="1024" height="1024"  version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" >', '    <path d="M145.6 0C100.8 0 64 35.2 64 80v862.4C64 987.2 100.8 1024 145.6 1024h732.8c44.8 0 81.6-36.8 81.6-81.6V324.8L657.6 0h-512z" fill="#8199AF"/>', '    <path d="M960 326.4v16H755.2s-100.8-20.8-99.2-108.8c0 0 4.8 92.8 97.6 92.8H960z" fill="#617F9B"/>', '    <path d="M657.6 0v233.6c0 25.6 17.6 92.8 97.6 92.8H960L657.6 0z" fill="#fff"/>', '    <path d="m491.77 770.31c17.6-19.2 17.6-48 0-67.2s-48-17.6-65.6 0l-147.2 147.2c-17.6 17.6-17.6 48 0 65.6s48 19.2 65.6 0l91.2-89.6c4.8-4.8 4.8-12.8 0-17.6s-14.4-6.4-19.2 0l-57.6 56c-8 8-19.2 8-27.2 0s-8-20.8 0-28.8l56-56c20.8-20.8 54.4-20.8 75.2 0s20.8 54.4 0 75.2l-89.6 89.6c-33.6 33.6-88 33.6-123.2 0-33.6-33.6-33.6-88 0-121.6l147.2-147.2c33.6-33.6 89.6-33.6 123.2 0s33.6 88 0 121.6l-14.4 14.4c-1.6-14.4-6.4-28.8-16-41.6z" style="fill:#fff"/>', '    <path d="m130.09 23.864h504.75v182.93h-545.65v-140.08c0.34155-16.845 13.608-42.414 40.9-42.847z" style="fill-opacity:.29648;fill-rule:evenodd;fill:#fff"/>', '</svg>'].join(''));
};
MediACore.creator['attachment-ico'].property = {
  ext: {
    set: function set(value) {
      value = value || '';
      if (this.$ext) {
        this.$ext.selfRemove();
      }
      this.$ext = _Svg["default"].ShareInstance._('<text text-anchor="middle" x="321.39" y="170" font-size="145.76" style="fill:white;" >' + value + '</text>').addTo(this);
    },
    get: function get() {
      return this._ext || '';
    }
  }
};
MediACore.creator['times-ico'] = function () {
  return _(['<svg class="times" width="100" height="100" version="1.1" viewBox="0 0 26.458 26.458" xmlns="http://www.w3.org/2000/svg">', '    <g transform="translate(0 -270.54)">', '        <path d="m7.7013 276.49 5.4832 5.4832 5.5494-5.5494 1.7874 1.7874-5.5291 5.5291 5.4957 5.4957-1.754 1.754-5.5124-5.5124-5.5542 5.5542-1.7623-1.7623 5.5375-5.5375-5.5208-5.5208zm17.103 7.3351a11.558 11.558 0 0 1-11.558 11.558 11.558 11.558 0 0 1-11.558-11.558 11.558 11.558 0 0 1 11.558-11.558 11.558 11.558 0 0 1 11.558 11.558z" style="fill-rule:evenodd;"/>', '    </g>'].join(''));
};
MediACore.creator['download-ico'] = function () {
  return _(['<svg class="download" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">', '    <g transform="translate(0,-197)">', '        <path d="m44.888 209.14h13.982c1.1087 0.0459 2.2328 0.74137 2.317 2.3612v23.694h13.622c1.9742-0.18801 3.004 2.6244 1.9175 4.1118l-23.469 23.918c-0.876 0.77477-1.9993 0.77232-2.9362 0l-23.559-24.009c-0.86532-1.0422 0.11658-4.1953 2.3821-4.2047h13.268v-22.939c-0.08167-1.1772 0.78292-2.9507 2.4768-2.9312z" style="fill:#00c3e5"/>', '        <path d="m86.97 276.99a3.5027 3.5696 0 0 1-3.5027 3.5696 3.5027 3.5696 0 0 1-3.5027-3.5696 3.5027 3.5696 0 0 1 3.5027-3.5696 3.5027 3.5696 0 0 1 3.5027 3.5696zm-12.768 0a3.5027 3.5696 0 0 1-3.5027 3.5696 3.5027 3.5696 0 0 1-3.5027-3.5696 3.5027 3.5696 0 0 1 3.5027-3.5696 3.5027 3.5696 0 0 1 3.5027 3.5696zm-60.003-16.135h24.609c9.1206 13.508 17.573 12.942 26.609 0h23.839c2.8529 5e-3 3.5087 2.3205 3.4679 3.8227v18.953c0.04867 1.3083-1.5145 2.9901-2.7505 2.9832h-76.253c-1.049 0.0441-2.6554-1.4851-2.6306-3.1451l-1.56e-4 -18.792c0.0024-1.3549 0.50958-3.7927 3.1091-3.8227z" style="fill-rule:evenodd;fill:#00c3e5"/>', '    </g>', '</svg>'].join(''));
};
MediACore.creator['plus-ico'] = function () {
  return _('<svg class="_7oal" height="24" width="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><polygon points="-6,30 30,30 30,-6 -6,-6 "></polygon><path d="m18,11l-5,0l0,-5c0,-0.552 -0.448,-1 -1,-1c-0.5525,0 -1,0.448 -1,1l0,5l-5,0c-0.5525,0 -1,0.448 -1,1c0,0.552 0.4475,1 1,1l5,0l0,5c0,0.552 0.4475,1 1,1c0.552,0 1,-0.448 1,-1l0,-5l5,0c0.552,0 1,-0.448 1,-1c0,-0.552 -0.448,-1 -1,-1m-6,13c-6.6275,0 -12,-5.3725 -12,-12c0,-6.6275 5.3725,-12 12,-12c6.627,0 12,5.3725 12,12c0,6.6275 -5.373,12 -12,12" ></path></g></svg>');
};
_ACore["default"].install(MediaInput);
var _default = MediaInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.Dropdown = Dropdown;
exports.Dropright = Dropright;
exports.HMenu = HMenu;
exports.HMenuItem = HMenuItem;
exports.MenuButton = MenuButton;
exports.VMenu = VMenu;
exports.VMenuItem = VMenuItem;
exports.VMenuLine = VMenuLine;
exports.VRootMenu = VRootMenu;
__webpack_require__(46538);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _Dom = _interopRequireWildcard(__webpack_require__(64821));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _BlurTrigger = _interopRequireDefault(__webpack_require__(17471));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
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 _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function MenuButton() {
  this.$text = $('.absol-vmenu-button-text', this);
  this.$key = $('.absol-vmenu-button-key', this);
  this.$arrow = $('.absol-vmenu-arrow', this);
  this.$iconCtn = $('.absol-vmenu-button-ext-icon-container', this);
  _OOP["default"].drillProperty(this, this.$text, 'text', 'innerHTML');
  _OOP["default"].drillProperty(this, this.$key, 'key', 'innerHTML');
}
MenuButton.tag = 'menubutton';
MenuButton.render = function () {
  return _({
    tag: 'button',
    "class": 'absol-vmenu-button',
    child: [{
      "class": 'absol-vmenu-button-ext-icon-container',
      child: 'img.absol-vmenu-button-icon'
    }, '.absol-vmenu-button-text', '.absol-vmenu-button-key', {
      "class": 'absol-vmenu-arrow-container',
      child: 'span.absol-vmenu-arrow'
    }]
  });
};
MenuButton.property = {};
MenuButton.property.extendClasses = {
  set: function set(value) {
    var self = this;
    this.extendClasses.forEach(function (className) {
      self.removeClass(className);
    });
    this._extendClass = [];
    if (!value) return;
    if (typeof value == 'string') {
      value = value.split(/\s+/).filter(function (c) {
        return c.length > 0;
      });
    }
    if (value instanceof Array) {
      this._extendClass = value;
      this._extendClass.forEach(function (className) {
        self.addClass(className);
      });
    } else {
      throw new Error('Invalid extendClasses');
    }
  },
  get: function get() {
    return this._extendClass || [];
  }
};
MenuButton.property.icon = {
  set: function set(value) {
    this.$iconCtn.clearChild();
    this._icon = value;
    if (value) {
      _(value).addTo(this.$iconCtn);
    }
  },
  get: function get() {
    return this._icon;
  }
};
MenuButton.property.iconSrc = {
  set: function set(value) {
    if (value) this.icon = {
      tag: 'img',
      props: {
        src: value
      }
    };else this.icon = value;
  },
  get: function get() {
    return this.icon && this.icon.props && this.icon.props.src;
  }
};
MenuButton.property.extendStyle = {
  set: function set(value) {
    this.removeStyle(this._extendStyle || {});
    this._extendStyle = value || {};
    this.addStyle(this.extendStyle);
  },
  get: function get() {
    return this._extendStyle || {};
  }
};
_ACore["default"].install(MenuButton);

/***
 *
 * @extends Follower
 * @constructor
 */
function Dropdown() {
  this.$container = $('.absol-dropdown-content', this);
  this.$container.followTarget = this;
  this.$container.sponsorElement = this;
  this.$container.anchor = [1, 2, 6, 5];
}
Dropdown.tag = 'dropdown';
Dropdown.render = function () {
  return _({
    "class": ['absol-drop-hidden', 'absol-dropdown'],
    child: 'follower.absol-dropdown-content.as-bscroller'
  });
};
Dropdown.property = {};
Dropdown.property.show = {
  set: function set(value) {
    if (value) {
      this.removeClass('absol-drop-hidden');
      // ResizeSystem.update();
      if (this.$container.lastChild && this.$container.lastChild.$items) {
        this.$container.lastChild.$items.forEach(function (itemElt) {
          if (itemElt.autoFixParentSize) {
            itemElt.autoFixParentSize();
          }
        });
      }
      var aPst = this.findAvailablePosition();
      if (aPst.crampedHeight) {
        this.removeClass('overlap-top');
        // this.$container.followTarget = null;?
        this.$container.addStyle({
          'max-height': aPst.maxHeight + 'px'
        });
        this.$container.refollow();
        this.$container.updatePosition();
        this.$container.addStyle('top', this.getBoundingClientRect().top + aPst.posTop + 'px');
      } else {
        this.$container.removeStyle('max-height').removeStyle('top');
        this.$container.refollow();
        this.$container.updatePosition();
      }
    } else {
      this.addClass('absol-drop-hidden');
    }
  },
  get: function get() {
    return !this.hasClass('absol-drop-hidden');
  }
};
Dropdown.prototype.findAvailablePosition = function () {
  var outBound = _Dom["default"].traceOutBoundingClientRect(document.body);
  var containerBound = this.$container.getBoundingClientRect();
  var bound = this.getBoundingClientRect();
  var distTop = bound.top - outBound.top;
  var distLeft = bound.left - outBound.left;
  var distRight = -bound.right + outBound.right;
  var distBottom = -bound.bottom + outBound.bottom;
  var result = {};
  if (distLeft >= containerBound.width) result.left = true;
  if (distTop >= containerBound.height) result.top = true;
  if (distRight >= containerBound.width) result.right = true;
  if (distBottom >= containerBound.height) result.bottom = true;
  if (distRight + bound.width >= containerBound.width) result.overlapRight = true;
  if (distLeft + bound.width >= containerBound.width) result.overlapLeft = true;
  if (distBottom + bound.height >= containerBound.height) result.overlapBottom = true;
  if (distTop + bound.height >= containerBound.height) result.overlapTop = true;
  if (!result.overlapTop && !result.overlapBottom) {
    result.crampedHeight = true;
    result.maxHeight = outBound.height - 20;
    result.posTop = distBottom - Math.min(containerBound.height, result.maxHeight) + bound.height - 10;
  }
  return result;
};
Dropdown.prototype.addChild = function (child) {
  if (child instanceof Array) {
    for (var i = 0; i < child.length; ++i) {
      this.addChild(child[i]);
    }
  } else {
    if (!this.$trigger) {
      this["super"](child);
      this.$trigger = child;
    } else {
      this.$container.addChild(child);
    }
  }
};
Dropdown.prototype.clearChild = function () {
  if (this.$trigger) {
    this.$trigger.selfRemove();
    this.$trigger = undefined;
  }
  this.$container.clearChild();
};
Dropdown.prototype.init = function (props) {
  props = props || {};
  Object.assign(this, props);
};
function Dropright() {
  this.$container = $('.absol-dropright-content', this);
  this.$container.followTarget = this;
  this.$container.sponsorElement = this;
  this.$container.anchor = [0, 3, 7, 4];
}
Dropright.tag = 'dropright';
Dropright.render = function () {
  return _({
    "class": ['absol-drop-hidden', 'absol-dropright'],
    child: 'follower.absol-dropright-content.as-bscroller',
    data: {
      $trigger: undefined,
      $content: undefined,
      _isShow: false
    }
  });
};
Object.assign(Dropright.prototype, Dropdown.prototype);

//is the same
Dropright.prototype.addChild = Dropdown.prototype.addChild;
Dropright.prototype.clearChild = Dropdown.prototype.clearChild;
Dropright.property = Object.assign({}, Dropdown.property);
function VMenuLine() {
  return _('<div class="absol-vmenu-line"><div></div></div>');
}
VMenuLine.tag = 'VMenuLine'.toLowerCase();
function VMenuItem() {
  var thisVM = this;
  this.$dropper = $('dropright', this);
  this.$vmenu = $('vmenu', this);
  this.$button = $('menubutton', this);
  this.$text = thisVM.$button.$text;
  this.$key = thisVM.$button.$key;
  this.$arrow = thisVM.$button.$arrow;
  this.$iconCtn = thisVM.$button.$iconCtn;
  _OOP["default"].drillProperty(this, this.$button, ['text', 'extendClasses', 'extendStyle', 'key', 'icon', 'iconSrc']);
  _OOP["default"].drillProperty(this, this.$vmenu, ['activeTab']);
  this.eventHandler = _OOP["default"].bindFunctions(this, VMenuItem.eventHandler);
  this.$vmenu.on('press', this.eventHandler.pressItem, true);
  this.$button.on('click', this.eventHandler.clickButton, true);
  this.$button.on('mouseenter', this.eventHandler.enterButton, true);
  this._textMarginRight = 0;
}
VMenuItem.tag = 'VMenuItem'.toLowerCase();
VMenuItem.render = function () {
  return _({
    tag: 'dropright',
    extendEvent: ['press', 'enter'],
    child: ['menubutton', {
      tag: 'vmenu'
    }]
  });
};
VMenuItem.prototype.init = function (props) {
  Object.assign(this, props || {});
};
VMenuItem.prototype.autoFixParentSize = function () {
  var parentWidth = this.$dropper.getBoundingClientRect().width; // dropper is fixed parent content size
  if (!parentWidth) return;
  var buttonWidth = this.$button.getBoundingClientRect().width;
  var fontSize = this.$text.getFontSize();
  this._textMarginRight = parentWidth - buttonWidth + this._textMarginRight;
  this.$text.addStyle('margin-right', this._textMarginRight / fontSize + 'em');
};
VMenuItem.eventHandler = {};
VMenuItem.eventHandler.enterButton = function (event) {
  event.menuItem = this;
  var newEvent = _EventEmitter["default"].copyEvent(event);
  this.emit('enter', newEvent, this);
};
VMenuItem.eventHandler.pressItem = function (event) {
  var newEvent = _EventEmitter["default"].copyEvent(event, {
    target: this
  });
  this.emit('press', newEvent, this);
};
VMenuItem.eventHandler.clickButton = function (event) {
  event.menuDontHide = this.items && this.items.length > 0;
  event.menuItem = this;
  event.vmenuItem = this;
  var newEvent = _EventEmitter["default"].copyEvent(event, {
    target: this
  });
  this.emit('press', newEvent, this);
};
VMenuItem.property = {};
VMenuItem.property.items = {
  set: function set(items) {
    items = items || [];
    if (items.length > 0) {
      this.$arrow.addClass(['mdi', 'mdi-chevron-right']);
    } else {
      this.$arrow.removeClass(['mdi', 'mdi-chevron-right']);
    }
    this.$vmenu.items = items;
  },
  get: function get() {
    return this.$vmenu.items;
  }
};
VMenuItem.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('absol-menu-item-disabled');
    } else {
      this.removeClass('absol-menu-item-disabled');
    }
  },
  get: function get() {
    return this.hasClass('absol-menu-item-disabled');
  }
};
VMenuItem.property.hidden = {
  set: function set(value) {
    if (value) {
      this.addClass('absol-menu-item-hidden');
    } else {
      this.removeClass('absol-menu-item-hidden');
    }
  },
  get: function get() {
    return this.hasClass('absol-menu-item-hidden');
  }
};

/**
 * @extends AElement
 * @constructor
 */
function VMenu() {}
VMenu.tag = 'vmenu';
VMenu.render = function () {
  return _({
    "class": 'absol-vmenu',
    extendEvent: 'press'
  });
};
VMenu.property = {};
VMenu.property.activeTab = {
  set: function set(tabIndex) {
    this._activeTab = tabIndex;
    if (this.$items) {
      for (var i = 0; i < this.$items.length; ++i) {
        var item = this.$items[i];
        item.show = i == tabIndex && !item.disabled;
        item.activeTab = -1;
        if (i == tabIndex && !item.disabled) {
          item.$button && item.items && item.items.length > 0 && item.$button.addClass('absol-vmenu-button-hover');
        } else {
          item.$button && item.$button.removeClass('absol-vmenu-button-hover');
        }
      }
    }
  },
  get: function get() {
    return this._activeTab;
  }
};
VMenu.property.extendStyle = {
  set: function set(value) {
    this.removeStyle(this._extendStyle || {});
    this._extendStyle = value || {};
    this.addStyle(this.extendStyle);
  },
  get: function get() {
    return this._extendStyle || {};
  }
};
VMenu.property.extendClasses = {
  set: function set(value) {
    var self = this;
    this.extendClasses.forEach(function (className) {
      self.removeClass(className);
    });
    this._extendClass = [];
    if (!value) return;
    if (typeof value == 'string') {
      value = value.split(/\s+/).filter(function (c) {
        return c.length > 0;
      });
    }
    if (value instanceof Array) {
      this._extendClass = value;
      this._extendClass.forEach(function (className) {
        self.addClass(className);
      });
    } else {
      throw new Error('Invalid extendClasses');
    }
  },
  get: function get() {
    return this._extendClass || [];
  }
};
VMenu.eventHandler = {};
VMenu.eventHandler.enterItem = function (event) {
  var tabIndex = event.menuItem._tabIndex;
  this.activeTab = tabIndex;
};
VMenu.eventHandler.pressItem = function (event) {
  this.emit('press', _EventEmitter["default"].copyEvent(event, {
    target: this
  }), this);
};
VMenu.property.items = {
  set: function set(items) {
    this._childFromItems(items || []);
  },
  get: function get() {
    return this.$items;
  }
};
VMenu.prototype.init = function (props) {
  Object.assign(this, props || {});
};
VMenu.prototype._childFromItems = function (items) {
  this.clearChild();
  this.$items = items.map(function (item, index) {
    var itemElt;
    if (typeof item === 'string' && (item.substr(0, 1) === '-' || item.substr(0, 1) === '=')) {
      itemElt = _('vmenuline');
    } else if ((0, _Dom.isDomNode)(item)) {
      itemElt = item;
    } else if (item.child || item["class"] || item.tag || item.style || typeof item === 'string') {
      itemElt = _(item);
    } else {
      itemElt = _({
        tag: 'vmenuitem',
        props: Object.assign({
          _tabIndex: index
        }, item),
        on: {
          enter: {
            callback: this.eventHandler.enterItem,
            cap: true
          },
          press: {
            callback: this.eventHandler.pressItem,
            cap: true
          }
        }
      });
    }
    this.addChild(itemElt);
    return itemElt;
  }.bind(this));
  //todo
};

function HMenuItem() {
  this.blurTrigger = null;
  this.$vmenu = $('vmenu', this);
  this.$dropDown = this;
  this.$button = $('button.absol-hmenu-button', this);
  _OOP["default"].drillProperty(this, this.$button, 'text', 'innerHTML');
  _OOP["default"].drillProperty(this, this.$vmenu, 'items');
  _OOP["default"].drillProperty(this, this.$vmenu, 'activeTab');
  this.$button.on('click', this.eventHandler.clickButton);
  this.$button.on('mouseenter', this.eventHandler.enterButton, true);
  this.$vmenu.on('press', this.eventHandler.pressItem, true);

  //property show not need because dropdown is itself
  return this;
}
HMenuItem.tag = 'HMenuItem'.toLowerCase();
HMenuItem.render = function () {
  return _({
    tag: 'dropdown',
    extendEvent: ['press', 'enter'],
    child: ['button.absol-hmenu-button', 'vmenu']
  });
};
HMenuItem.eventHandler = {};
HMenuItem.eventHandler.clickButton = function (event) {
  event.menuItem = this;
  event.hmenuItem = this;
  this.emit('press', _EventEmitter["default"].copyEvent(event, {
    target: this
  }), this);
};
HMenuItem.eventHandler.enterButton = function (event) {
  event.menuItem = this;
  this.emit('enter', _EventEmitter["default"].copyEvent(event, {
    target: this
  }), this);
};
HMenuItem.eventHandler.pressItem = function (event) {
  this.emit('press', _EventEmitter["default"].copyEvent(event, {
    target: this
  }), this);
};
HMenuItem.property = {};
HMenuItem.property.disabled = VMenuItem.property.disabled;
HMenuItem.property.hidden = VMenuItem.property.hidden;
HMenuItem.prototype.init = function (props) {
  props = props || {};
  Object.assign(this, props);
};

/***
 * @extends AElement
 * @constructor
 */
function HMenu() {}
HMenu.tag = 'hmenu';
HMenu.render = function () {
  return _({
    "class": 'absol-hmenu',
    extendEvent: ['press', 'enter', 'activetab', 'cancel']
  });
};
HMenu.eventHandler = {};
HMenu.eventHandler.pressItem = function (event) {
  /**
   * this.activeTab can be undefined
   * undefine >= 0 => false
   * undefine < 0 => false
   */

  if (event.menuItem.items && event.menuItem.items.length > 0 && !(this.activeTab >= 0)) {
    this.activeTab = event.menuItem._tabIndex;
  } else {
    event.isLeaf = !event.menuItem.items || !event.menuItem.items.length;
    this.emit('press', event, this);
  }
};
HMenu.eventHandler.enterItem = function (event) {
  if (this.activeTab >= 0) {
    this.activeTab = event.menuItem._tabIndex;
  }
};
HMenu.eventHandler.clickSomewhere = function (event) {
  // if (EventEmitter.hitElement(this, event)) return;
  this.activeTab = -1;
  // window.removeEventListener('blur', this.eventHandler.clickSomewhere);
};

HMenu.prototype._childFromItems = function (items) {
  this.clearChild();
  this.$items = items.map(function (item, index) {
    var res = _({
      tag: 'hmenuitem',
      props: Object.assign({
        _tabIndex: index
      }, item),
      on: {
        press: {
          callback: this.eventHandler.pressItem,
          cap: true
        },
        enter: {
          callback: this.eventHandler.enterItem,
          cap: true
        }
      }
    });
    this.addChild(res);
    return res;
  }.bind(this));
};
HMenu.prototype.init = function (props) {
  Object.assign(this, props || {});
};
HMenu.property = {};
HMenu.property.items = {
  set: function set(items) {
    this._childFromItems(items || []);
  },
  get: function get() {
    return this.$items;
  }
};
HMenu.property.activeTab = {
  /***
   * @this HMenu
   * @param tabIndex
   */
  set: function set(tabIndex) {
    var lastValue = this._activeTab;
    this._activeTab = tabIndex;
    for (var i = 0; i < this.$items.length; ++i) {
      var item = this.$items[i];
      item.show = i == tabIndex && !item.disabled;
      item.activeTab = -1;
      if (i == tabIndex && !item.disabled) {
        item.$button && item.items && item.items.length > 0 && item.$button.addClass('absol-hmenu-button-hover');
      } else {
        item.$button && item.$button.removeClass('absol-hmenu-button-hover');
      }
    }
    if (!(lastValue >= 0) && this._activeTab >= 0) {
      if (this.blurTrigger) {
        this.blurTrigger.destroy();
      }
      this.blurTrigger = new _BlurTrigger["default"]([this], "click", this.eventHandler.clickSomewhere, 100, 10);
    } else if (lastValue >= 0 && !(this._activeTab >= 0)) {
      if (this.blurTrigger) {
        this.blurTrigger.destroy();
        this.blurTrigger = null;
      }
    }
    if (lastValue >= 0) {
      if (tabIndex >= 0 && tabIndex != lastValue) {
        this.emit('activetab', {
          type: 'activetab',
          tabIndex: tabIndex,
          target: this
        }, this);
      } else if (!(tabIndex >= 0)) {
        this.emit('cancel', {
          type: 'cancel',
          lastActiveIndex: lastValue,
          target: this
        }, this);
      }
    } else {
      if (tabIndex >= 0) {
        this.emit('activetab', {
          type: 'activetab',
          tabIndex: tabIndex,
          target: this
        }, this);
      }
    }
  },
  get: function get() {
    return this._activeTab;
  }
};

/***
 * @extends AElement
 * @constructor
 */
function VRootMenu() {
  var _this = this;
  this._items = [];
  this.$attachhook = _({
    tag: 'attachhook',
    props: {
      prevWidth: 0,
      requestUpdateSize: function requestUpdateSize() {
        var newWidth = _this.getBoundingClientRect().width;
        if (newWidth === _this.$attachhook.prevWidth) return;
        _this.$attachhook.prevWidth = newWidth;
        Array.prototype.forEach.call(_this.childNodes, function (elt) {
          if (elt.autoFixParentSize) {
            elt.autoFixParentSize();
          }
        });
      }
    },
    on: {
      attached: function attached() {
        _ResizeSystem["default"].add(_this.$attachhook);
        _this.$attachhook.requestUpdateSize();
      }
    }
  }).addTo(this);
  this.items = [];
}
VRootMenu.tag = 'VRootMenu'.toLowerCase();
VRootMenu.render = function () {
  return _({
    "class": ['as-v-root-menu'],
    extendEvent: ['press', 'enter', 'activetab', 'cancel']
  });
};
VRootMenu.prototype._childFromItems = function (items) {
  var _this2 = this;
  var thisM = this;
  while (this.lastChild && this.lastChild !== this.$attachhook) {
    this.lastChild.remove();
  }
  while (this.firstChild && this.firstChild !== this.$attachhook) {
    this.firstChild.remove();
  }
  this.$items = items.map(function (item, i) {
    var itemElt;
    if (typeof item === 'string' && (item.substr(0, 1) === '-' || item.substr(0, 1) === '=')) {
      itemElt = _('vmenuline');
    } else if ((0, _Dom.isDomNode)(item)) {
      itemElt = item;
    } else if (item.child || item["class"] || item.tag || item.style || typeof item === 'string') {
      itemElt = _(item);
    } else {
      itemElt = _({
        tag: 'vmenuitem',
        props: item,
        on: {
          enter: thisM.eventHandler.enterItem,
          press: thisM.eventHandler.pressItem
        }
      });
    }
    itemElt._tabIndex = i;
    thisM.addChild(itemElt);
    return itemElt;
  });
  this.$attachhook.prevWidth = 0;
  this.$attachhook.requestUpdateSize();
  (0, _ACore.$$)('img', this).filter(function (x) {
    return !!x.getAttribute('src') && !x.classList.contains('absol-vmenu-button-icon');
  }).forEach(function (elt) {
    (0, _Dom.waitImageLoaded)(elt).then(function () {
      return _this2.$attachhook.requestUpdateSize();
    });
  });
};
VRootMenu.property = Object.assign({}, HMenu.property);
VRootMenu.eventHandler = Object.assign({}, HMenu.eventHandler);
_ACore["default"].install([HMenu, VMenuItem, VMenu, Dropright, VMenuLine, Dropdown, HMenuItem, VRootMenu]);

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _FlexiconButton = _interopRequireDefault(__webpack_require__(78266));
__webpack_require__(40210);
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; }
/***
 * @extends AElement
 * @constructor
 */
function MessageDialog() {
  this.$header = (0, _ACore.$)('.as-message-dialog-header', this);
  this.$title = (0, _ACore._)({
    tag: 'span',
    "class": 'as-message-dialog-title',
    child: {
      text: ''
    }
  });
  this.$body = (0, _ACore.$)('.as-message-dialog-body', this);
  this.$footer = (0, _ACore.$)('.as-message-dialog-footer', this);
  this.$actionBtns = [];
}
MessageDialog.tag = 'MessageDialog'.toLowerCase();
MessageDialog.render = function () {
  return (0, _ACore._)({
    extendEvent: ['action'],
    "class": 'as-message-dialog',
    child: [{
      "class": 'as-message-dialog-header'
    }, {
      "class": 'as-message-dialog-body'
    }, {
      "class": 'as-message-dialog-footer'
    }]
  });
};
['addChild', 'removeChild', 'clearChild', 'addChildBefore', 'addChildAfter'].forEach(function (key) {
  MessageDialog.prototype[key] = function () {
    this.$body[key].apply(this.$body, arguments);
    return this;
  };
});
MessageDialog.prototype._makeActionBtn = function (action) {
  var _this = this;
  var button = (0, _ACore._)({
    tag: _FlexiconButton["default"].tag,
    "class": action["class"] || [],
    props: {
      text: action.text || action.name,
      icon: action.icon || null
    },
    on: {
      click: function click(event) {
        _this.emit('action', {
          type: 'action',
          target: _this,
          originalEvent: event,
          action: action
        }, _this);
      }
    }
  });
  if (action.name) button.attr('data-name', action.name);
  return button;
};
MessageDialog.property = {};
MessageDialog.property.dialogActions = {
  /***
   * @this MessageDialog
   * @param actions
   */
  set: function set(actions) {
    var _this2 = this;
    this._actions = actions || [];
    this.$actionBtns.forEach(function (button) {
      return button.remove();
    });
    this.$actionBtns = this._actions.map(function (action) {
      return _this2._makeActionBtn(action);
    });
    this.$footer.addChild(this.$actionBtns);
  },
  get: function get() {
    return this._actions;
  }
};
MessageDialog.property.dialogTitle = {
  set: function set(value) {
    this._dialogTitle = value;
    this.$title.firstChild.data = '';
    this.$title.attr('data-ml-key', undefined);
    if (typeof value === "string") {
      this.$title.firstChild.data = value;
    } else if (value && value.mlKey) {
      this.$title.firstChild.data = '';
      this.$title.attr('data-ml-key', value.mlKey);
    }
    if (value && !this.$title.parentElement) {
      this.$header.addChild(this.$title);
    } else if (!value && this.$title.parentElement) {
      this.$title.remove();
    }
  },
  get: function get() {
    return this._dialogTitle;
  }
};
_ACore["default"].install(MessageDialog);
var _default = MessageDialog;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(70603);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var $ = _ACore["default"].$;
var _ = _ACore["default"]._;
function Modal() {
  this._contentAlign = [];
  this.contentAlign = 'middle center';
  this.$content = $('.as-modal-content', this);
}
Modal.tag = 'modal';
Modal.render = function () {
  return _({
    "class": 'as-modal',
    child: '.as-modal-content'
  });
};
['findChildBefore', 'findChildAfter', 'removeChild', 'clearChild', 'addChild'].forEach(function (key) {
  Modal.prototype[key] = function () {
    this.$content[key].apply(this.$content, arguments);
  };
});
Modal.prototype.getChildren = function () {
  return this.$content.children;
};
Modal.property = {};
Modal.property.show = {
  set: function set(value) {
    if (value) this.removeClass('as-hidden');else this.addClass('as-hidden');
  },
  get: function get() {
    return !this.hasClass('as-hidden');
  }
};
Modal.property.contentAlign = {
  set: function set(value) {
    var thisM = this;
    this._contentAlign.forEach(function (name) {
      thisM.removeClass('as-' + name);
    });
    value = value || '';
    if (typeof value === 'string') {
      this._contentAlign = value.split(/\s+/);
    } else if (value instanceof Array) {
      this._contentAlign = value;
    } else {
      throw new Error("Invalid contentAlign!");
    }
    var thisM = this;
    this._contentAlign.forEach(function (name) {
      thisM.addClass('as-' + name);
    });
  },
  get: function get() {
    return this._contentAlign.join(' ');
  }
};
_ACore["default"].install(Modal);
var _default = Modal;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _MultiSelectMenu = _interopRequireDefault(__webpack_require__(63176));
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _CheckListBox = __webpack_require__(62896);
var _EventEmitter = _interopRequireWildcard(__webpack_require__(46833));
var _Dom = __webpack_require__(64821);
var _utils = __webpack_require__(84512);
var _Array = __webpack_require__(40411);
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _attribute = __webpack_require__(18144);
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _MultiLanguageCSS = __webpack_require__(89074);
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 }; }
var hitItem = function hitItem(event) {
  var target = event.target;
  for (var i = 0; i < 5 && target; ++i) {
    if (target.hasClass && target.hasClass('absol-selectbox-item')) return true;
    target = target.parentElement;
  }
  return false;
};
var hitClose = function hitClose(event) {
  var target = event.target;
  if (target.hasClass && target.hasClass('absol-selectbox-item-close')) return true;
  target = target.parentElement;
  return !!(target.hasClass && target.hasClass('absol-selectbox-item-close'));
};

/***
 * @extends AElement
 * @constructor
 */
function MultiCheckMenu() {
  (0, _MultiLanguageCSS.loadLanguageModule)();
  this.addClass('as-multi-check-menu');

  // this.on('click', this.eventHandler.click);
  /***
   * @type {CheckListBox}
   */
  this.$selectlistBox = (0, _ACore._)({
    tag: _CheckListBox.CheckListBox,
    //use new version
    props: {
      anchor: [1, 6, 2, 5]
    }
  });
  this.addStyle('--as-width-limit', this.$selectlistBox.widthLimit + 'px');
  this.$itemCtn = (0, _ACore.$)('.as-multi-select-menu-item-ctn', this);
  this.$attachhook = (0, _ACore.$)('attachhook', this).on('attached', this.eventHandler.attached);
  this.$attachhook.requestUpdateSize = this.updateSize.bind(this);
  this.boxCtrl = new MSMBoxController(this);
  this.itemsViewCtrl = new MSMItemsViewController(this);
  _OOP["default"].drillProperty(this, this.boxCtrl, 'isFocus');
  _OOP["default"].drillProperty(this, this.$selectlistBox, 'enableSearch');
  _OOP["default"].drillProperty(this, this.itemsViewCtrl, '$items'); //adapt
  this.commitedValues = []; //commit value

  this.$selectlistBox.followTarget = this;
  this.$selectlistBox.sponsorElement = this;
  this.disableClickToFocus = false;
  this.orderly = true; //always true
  this.itemFocusable = false;
  // this.placeholder = LangSys.getText('txt_select_value') || '-- Select values --';

  /**
   * @type {boolean}
   * @memberof MultiCheckMenu#
   * @name disabled
   */

  /**
   * @type {boolean}
   * @memberof MultiCheckMenu#
   * @name readOnly
   */

  /**
   * @type {Array<number|null|string|Date>}
   * @memberof MultiCheckMenu#
   * @name values
   */
}

MultiCheckMenu.tag = 'MultiCheckMenu'.toLowerCase();
MultiCheckMenu.render = _MultiSelectMenu["default"].render;
Object.assign(MultiCheckMenu.prototype, _MultiSelectMenu["default"].prototype);
MultiCheckMenu.property = Object.assign({}, _MultiSelectMenu["default"].property);
MultiCheckMenu.eventHandler = Object.assign({}, _MultiSelectMenu["default"].eventHandler);
delete MultiCheckMenu.property.isFocus;
MultiCheckMenu.prototype.styleHandlers = {};
MultiCheckMenu.prototype.styleHandlers.maxWidth = function (value) {
  var parsedValue = (0, _attribute.parseMeasureValue)(value);
  if (parsedValue.unit === 'px') {
    this.addClass('as-has-max-width');
    this.addStyle('--max-width', value);
  } else {
    this.removeClass('as-has-max-width');
  }
};
MultiCheckMenu.prototype.styleHandlers['max-width'] = MultiCheckMenu.prototype.styleHandlers.maxWidth;
MultiCheckMenu.prototype.styleHandlers.width = function (value) {
  var parsedValue = (0, _attribute.parseMeasureValue)(value);
  if (parsedValue.unit === 'px') {
    this.addClass('as-has-max-width');
    this.addStyle('--max-width', value);
    this.style.width = value;
  } else {
    this.removeClass('as-has-max-width');
  }
};

/**
 * @this MultiCheckMenu
 * @param value
 */
MultiCheckMenu.prototype.styleHandlers.maxHeight = function (value) {
  var psValue = (0, _attribute.parseMeasureValue)(value);
  if (psValue) {
    switch (psValue.unit) {
      case 'px':
        psValue.value = Math.min(psValue.value, 90);
        break;
      case 'em':
      case 'rem':
        psValue.value = Math.min(psValue.value, 90 / 14);
        break;
    }
    this.$itemCtn.addStyle('max-height', psValue.value + psValue.unit);
  } else {
    this.$itemCtn.removeStyle('max-height');
  }
};
MultiCheckMenu.prototype.styleHandlers['max-height'] = MultiCheckMenu.prototype.styleHandlers.maxHeight;
MultiCheckMenu.prototype.styleHandlers.hidden = function (value) {
  if (value === 'hidden') {
    this.style.overflow = 'hidden';
    this.$itemCtn.style.overflow = 'hidden';
  } else {
    this.style.overflow = '';
    this.$itemCtn.style.overflow = '';
  }
};
MultiCheckMenu.prototype.addStyle = function (arg0, arg1) {
  if (typeof arg0 === "string" && this.styleHandlers[arg0]) {
    this.styleHandlers[arg0].apply(this, Array.prototype.slice.call(arguments, 1));
    return this;
  } else {
    return _AElement["default"].prototype.addStyle.apply(this, arguments);
  }
};
MultiCheckMenu.prototype.removeStyle = function (arg0) {
  if (typeof arg0 === "string" && this.styleHandlers[arg0]) {
    this.styleHandlers[arg0].call(this, '');
    return this;
  } else {
    return _AElement["default"].prototype.removeStyle.apply(this, arguments);
  }
};
MultiCheckMenu.prototype._updateOverflow = function () {
  var bound;
  if (this.getComputedStyleValue('overflow') === 'hidden') {
    bound = this.getBoundingClientRect();
    if (bound.width === 0) return;
    this.$itemCtn.removeClass('as-has-more');
    var hasMore = false;
    var elt;
    for (var i = 0; i < this.$itemCtn.childNodes.length; ++i) {
      elt = this.$itemCtn.childNodes[i];
      if (!hasMore) {
        elt.removeStyle('display');
        var cBound = elt.getBoundingClientRect();
        if (cBound.bottom > bound.bottom) {
          hasMore = true;
        }
      }
      if (hasMore) {
        elt.addStyle('display', 'none');
      }
    }
    if (hasMore) this.$itemCtn.addClass('as-has-more');
  }
};
MultiCheckMenu.property.values = {
  set: function set(values) {
    if (values === undefined || values === null) values = [];else if (!Array.isArray(values)) values = [values];
    this.$selectlistBox.values = values;
    this.commitedValues = this.$selectlistBox.values;
    this.itemsViewCtrl.update();
  },
  get: function get() {
    return this.commitedValues;
  }
};
MultiCheckMenu.property.items = {
  /**
   * @this MultiCheckMenu
   * @param items
   */
  set: function set(items) {
    this.$selectlistBox.items = items;
    this.commitedValues = this.$selectlistBox.values;
    this.addStyle('--list-min-width', this.$selectlistBox._estimateWidth + 'px');
    this.itemsViewCtrl.update();
  },
  get: function get() {
    return this.$selectlistBox.items;
  }
};
MultiCheckMenu.property.placeholder = {
  set: function set(value) {
    if (value) {
      this.$itemCtn.attr('data-placeholder', value + '');
    } else {
      this.$itemCtn.attr('data-placeholder', null);
    }
  },
  get: function get() {
    return this.$itemCtn.attr('data-placeholder');
  }
};
MultiCheckMenu.prototype.updateSize = function () {
  var bound;
  if (this.boxCtrl.isFocus) {
    bound = this.getBoundingClientRect();
    this.$selectlistBox.addStyle('min-width', Math.max(bound.width, this.$selectlistBox.getFontSize() * 18.5) + 'px');
    this.$selectlistBox.refollow();
    this.$selectlistBox.updatePosition();
  }
};
MultiCheckMenu.prototype.findItemsByValue = function (value) {
  return this.$selectlistBox.findItemsByValue(value);
};

/**
 * @this MultiCheckMenu
 * @param event
 */
// MultiCheckMenu.eventHandler.selectListBoxChange = function (event) {
//     var idx;
//     switch (event.action) {
//         case 'check':
//             idx = this._tempValues.indexOf(event.value);
//             if (idx < 0) {
//                 this._tempValues.push(event.value);
//             }
//             break;
//         case 'uncheck':
//             idx = this._tempValues.indexOf(event.value);
//             if (idx >= 0) {
//                 this._tempValues.splice(idx, 1);
//             }
//             break;
//         case 'check_all':
//             this._tempValues = this.$selectlistBox.values;
//             break;
//         case 'uncheck_all':
//             this._tempValues = [];
//             break;
//     }
//
//     setTimeout(function () {
//         this.viewItemsByValues(this._tempValues);
//         var bound = this.getBoundingClientRect();
//         this.$selectlistBox.addStyle('min-width', Math.max(bound.width, this.$selectlistBox.getFontSize() * 15.5) + 'px');
//         this.$selectlistBox.refollow();
//         this.$selectlistBox.updatePosition();
//         ResizeSystem.requestUpdateSignal();
//     }.bind(this), 1);
// };
//
// MultiCheckMenu.eventHandler.selectListBoxCancel = function (event) {
//     this.viewItemsByValues(this.commitedValues);
//     this.isFocus = false;
//     this.$selectlistBox.values = this.commitedValues;
// };
//
// MultiCheckMenu.eventHandler.selectListBoxClose = function (event) {
//     this.eventHandler.selectListBoxPressItem(event);//to notify something remove, add
//     this.isFocus = false;
// };

/*
MultiCheckMenu.property.isFocus = {
    set: function (value) {
        if (value && (this.disabled || this.readOnly)) return;
        if (!this._isFocus && value) {
            this._tempValues = this._values.slice();
            this.$selectlistBox.values = this._values;
            this.activeValue = null;
        }
        var thisSM = this;
        if (!this.items || this.items.length === 0) value = false;//prevent focus
        if (this._isFocus === value) return;
        this._isFocus = !!value;
        if (this._isFocus) {
            thisSM.off('click', this.eventHandler.click);
            this.$selectlistBox.addTo(document.body);
            var bound = this.getBoundingClientRect();
            this.$selectlistBox.addStyle('min-width', Math.max(bound.width, this.$selectlistBox.getFontSize() * 15.5) + 'px');
            this.$selectlistBox.refollow();
            this.$selectlistBox.updatePosition();
            setTimeout(function () {
                thisSM.$selectlistBox.focus();
                document.addEventListener('mousedown', thisSM.eventHandler.bodyClick);
            }, 100);
            this.$selectlistBox.viewListAtFirstSelected();
        }
        else {
            document.removeEventListener('mousedown', thisSM.eventHandler.bodyClick);

            document.addEventListener('mouseup', function mup() {
                setTimeout(function () {
                    thisSM.on('click', thisSM.eventHandler.click);
                    document.removeEventListener('mouseup', mup);
                }, 5);
            });
            this.$selectlistBox.selfRemove();
            this.$selectlistBox.unfollow();
            this.$selectlistBox.resetSearchState();
        }
    },
    get: MultiSelectMenu.property.isFocus.get
};*/

MultiCheckMenu.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};

/***
 * call after close checklistbox
 * @param event
 */

/*
MultiCheckMenu.eventHandler.selectListBoxPressItem = function (event) {
    var prevValues = this.commitedValues;
    var prevDict = prevValues.reduce(function (ac, cr) {
        ac[cr + ''] = cr;
        return ac;
    }, {});
    this.$selectlistBox.updatePosition();
    var curValues = this.$selectlistBox.values;
    var changed = false;
    var curDict = curValues.reduce(function (ac, cr) {
        ac[cr + ''] = cr;
        return ac;
    }, {});
    this.commitedValues = curValues.slice();
    prevValues.forEach(function (value) {
        if ((value + '') in curDict) return;
        var holders = this.$selectlistBox.findItemsByValue(value);
        if (!holders || holders.length === 0) return;
        var item = holders[0].item;
        this.emit('remove', Object.assign({}, event, {
            type: 'remove',
            target: this,
            value: item.value,
            data: item,
            itemData: item
        }), this);
        changed = true;
    }.bind(this));

    curValues.forEach(function (value) {
        if ((value + '') in prevDict) return;
        var holders = this.$selectlistBox.findItemsByValue(value);
        if (!holders || holders.length === 0) return;
        var item = holders[0].item;
        this.emit('add', Object.assign({}, event, {
            type: 'add',
            target: this,
            value: item.value,
            data: item,
            itemData: item
        }), this);
        changed = true;
    }.bind(this));
    this._updateItems();
    this.isFocus = false;
    if (changed)
        this.emit('change', Object.assign({}, event, {
            type: 'change',
            action: 'submit',
            target: this,
            values: this.values
        }), this);
};


ACore.install(MultiCheckMenu);

export default MultiCheckMenu;


/**
 *
 * @param {MultiCheckMenu} elt
 * @constructor
 */
function MSMItemsViewController(elt) {
  this.elt = elt;
  this.$items = [];
}
MSMItemsViewController.prototype.share = {
  pool: [],
  pressCloseEventHandle: function pressCloseEventHandle(event) {
    var parentElt = this.$parent;
    if (!parentElt) return;
    parentElt.itemsViewCtrl.ev_pressCloseItem(this, event);
  },
  pressHandler: function pressHandler(event) {
    var parentElt = this.$parent;
    if (!parentElt) return;
    parentElt.itemsViewCtrl.ev_pressItem(this, event);
  }
};
MSMItemsViewController.prototype.revokeResource = function () {
  delete this.elt;
};
MSMItemsViewController.prototype.makeItem = function () {
  return (0, _ACore._)({
    tag: 'selectboxitem',
    on: {
      close: this.share.pressCloseEventHandle,
      press: this.share.pressHandler
    }
  });
};
MSMItemsViewController.prototype.releaseItem = function (itemElt) {
  this.share.pool.push(itemElt);
  itemElt.$parent = null;
};
MSMItemsViewController.prototype.requireItem = function () {
  var itemElt;
  if (this.share.pool.length > 0) {
    itemElt = this.share.pool.pop();
  } else {
    itemElt = this.makeItem();
  }
  itemElt.$parent = this.elt;
  return itemElt;
};
MSMItemsViewController.prototype.requireListLength = function (n) {
  if (!(0, _utils.isNaturalNumber)(n)) n = 0;
  var itemElt;
  while (this.$items.length < n) {
    itemElt = this.requireItem();
    this.elt.$itemCtn.addChild(itemElt);
    this.$items.push(itemElt);
  }
  while (this.$items.length > n) {
    itemElt = this.$items.pop();
    this.elt.$itemCtn.removeChild(itemElt);
    this.releaseItem(itemElt);
  }
};
MSMItemsViewController.prototype.assignItems = function (items) {
  for (var i = 0; i < this.$items.length && i < items.length; ++i) {
    this.$items[i].data = items[i];
  }
};
MSMItemsViewController.prototype.viewItems = function (items) {
  var cBound = this.elt.getBoundingClientRect();
  this.requireListLength(items.length);
  this.assignItems(items);
  // this._requireItem(items.length);
  // this._assignItems(items);
  // if (this.itemFocusable) {
  //     this._updateFocusItem();
  // }
  setTimeout(this.elt._updateOverflow.bind(this.elt), 100);
  var nBound = this.elt.getBoundingClientRect();
  if (nBound.width !== cBound.width || nBound.height !== cBound.height) {
    _ResizeSystem["default"].updateUp(this.elt);
  }
};
MSMItemsViewController.prototype.viewItemsByIndexes = function (indexes) {
  var items = [];
  var item;
  for (var i = 0; i < indexes.length; ++i) {
    item = this.elt.$selectlistBox.getItemByIndex(indexes[i]);
    if (item) items.push(item);
  }
  this.viewItems(items);
};
MSMItemsViewController.prototype.viewItemsByValues = function (values) {
  var items = [];
  var holders;
  for (var i = 0; i < values.length; ++i) {
    holders = this.elt.$selectlistBox.findItemsByValue(values[i]);
    if (holders) {
      holders = holders.map(function (hd) {
        return hd.item;
      });
      items = items.concat(holders);
    }
  }
  this.viewItems(items);
};
MSMItemsViewController.prototype.update = function () {
  this.viewItemsByValues(this.elt.values);
};
MSMItemsViewController.prototype.ev_pressCloseItem = function (itemElt, event) {
  var values = this.elt.$selectlistBox.values;
  var value = itemElt.value;
  var newValues = values.filter(function (x) {
    return x !== value;
  });
  var data = itemElt.data;
  this.elt.$selectlistBox.values = newValues;
  if (this.elt.boxCtrl.isFocus) {
    this.viewItemsByValues(newValues);
  } else {
    this.elt.commitedValues = this.elt.$selectlistBox.values;
    this.update();
    this.elt.emit('change', {
      type: 'change',
      action: 'remove',
      data: data,
      value: value,
      target: this.elt
    });
  }
};
MSMItemsViewController.prototype.ev_pressItem = function (itemElt, event) {
  if (!this.disableClickToFocus && this.itemFocusable) {
    this.elt.$selectlistBox.viewListAtItem(itemElt.data);
    //todo: focus
  }
};

Object.defineProperty(MSMItemsViewController.prototype, 'disableClickToFocus', {
  set: function set(value) {
    if (value) {
      this.elt.addClass('as-disable-click-to-focus');
    } else {
      this.elt.removeClass('as-disable-click-to-focus');
    }
  },
  get: function get() {
    return this.elt.hasClass('as-disable-click-to-focus');
  }
});
Object.defineProperty(MSMItemsViewController.prototype, 'itemFocusable', {
  set: function set(value) {
    if (value) {
      this.elt.addClass('as-item-focusable');
    } else {
      this.elt.removeClass('as-item-focusable');
    }
    this._updateFocusItem();
  },
  get: function get() {
    return this.elt.hasClass('as-item-focusable');
  }
});
Object.defineProperty(MSMItemsViewController.prototype, 'activeValue', {
  set: function set(value) {
    this._activeValue = value;
    if (this.itemFocusable) {
      this._updateFocusItem();
      //todo
    }
  },

  get: function get() {
    return this._activeValue;
  }
});

/**
 *
 * @param {MultiCheckMenu} elt
 * @constructor
 */
function MSMBoxController(elt) {
  var _this = this;
  Object.keys(this.constructor.prototype).forEach(function (key) {
    if (key.startsWith('ev_')) _this[key] = _this[key].bind(_this);
  });
  this.elt = elt;
  if (this.elt.$selectlistBox.cancelWaiting) this.elt.$selectlistBox.cancelWaiting();
  this.lockOpen = false;
  this.elt.on('mousedown', this.ev_click);
  this.elt.$selectlistBox.on({
    preupdateposition: this.ev_preUpdateListPosition,
    change: this.ev_listChange,
    cancel: this.ev_listCancel,
    close: this.ev_listClose
  });
}
Object.defineProperty(MSMBoxController.prototype, 'isFocus', {
  /**
   * @this MSMBoxController
   * @returns {*}
   */
  set: function set(value) {
    value = !!value;
    if (value) {
      this.open();
    } else {
      this.close();
    }
  },
  /**
   * @this MSMBoxController
   * @returns {*}
   */
  get: function get() {
    return this.elt.hasClass('as-focus');
  }
});
MSMBoxController.prototype.open = function () {
  var _this2 = this;
  if (this.lockOpen || this.elt.disabled || this.elt.readOnly) return;
  if (this.elt.hasClass('as-focus')) return;
  this.elt.addClass('as-focus');
  this.elt.$selectlistBox.addTo(document.body);
  this.elt.off('mousedown', this.ev_click);
  var bound = this.elt.getBoundingClientRect();
  this.elt.$selectlistBox.addStyle('min-width', Math.max(bound.width, this.elt.$selectlistBox.getFontSize() * 18.5) + 'px');
  this.elt.$selectlistBox.followTarget = this.elt;
  this.addListennerTO = setTimeout(function () {
    document.addEventListener('mousedown', _this2.ev_mousedownOut);
    _this2.elt.$selectlistBox.focus();
    _this2.elt.$selectlistBox.viewListAtFirstSelected();
  }, 50);
};
MSMBoxController.prototype.close = function () {
  if (!this.elt.hasClass('as-focus')) return;
  this.elt.removeClass('as-focus');
  this.elt.$selectlistBox.resetSearchState();
  this.elt.$selectlistBox.selfRemove();
  clearTimeout(this.addListennerTO);
  document.removeEventListener('mousedown', this.ev_mousedownOut);
  this.elt.on('click', this.ev_click);
  var values = this.elt.$selectlistBox.values;
  if (!(0, _Array.arrayCompare)(values, this.elt.commitedValues)) {
    this.elt.commitedValues = values;
    this.elt.emit('change', Object.assign({}, event, {
      type: 'change',
      action: 'submit',
      target: this
    }), this);
  }
};
MSMBoxController.prototype.ev_click = function (event) {
  if (hitClose(event)) return;
  this.open();
};
MSMBoxController.prototype.ev_preUpdateListPosition = function () {
  var bound = this.elt.getBoundingClientRect();
  var screenSize = (0, _Dom.getScreenSize)();
  var availableTop = bound.top - 5;
  var availableBot = screenSize.height - 5 - bound.bottom;
  this.elt.$selectlistBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px');
  var outBound = (0, _Dom.traceOutBoundingClientRect)(this.elt);
  if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) {
    this.close();
  }
};
MSMBoxController.prototype.ev_listChange = function (event) {
  var _this3 = this;
  setTimeout(function () {
    _this3.elt.itemsViewCtrl.viewItems(_this3.elt.$selectlistBox.selectedItems);
  }, 1);
  // var idx;
  // switch (event.action) {
  //     case 'check':
  //         idx = this._tempValues.indexOf(event.value);
  //         if (idx < 0) {
  //             this._tempValues.push(event.value);
  //         }
  //         break;
  //     case 'uncheck':
  //         idx = this._tempValues.indexOf(event.value);
  //         if (idx >= 0) {
  //             this._tempValues.splice(idx, 1);
  //         }
  //         break;
  //     case 'check_all':
  //         this._tempValues = this.$selectlistBox.values;
  //         break;
  //     case 'uncheck_all':
  //         this._tempValues = [];
  //         break;
  // }
  //
  // setTimeout(function () {
  //     this.viewItemsByValues(this._tempValues);
  //     var bound = this.getBoundingClientRect();
  //     this.$selectlistBox.addStyle('min-width', Math.max(bound.width, this.$selectlistBox.getFontSize() * 15.5) + 'px');
  //     this.$selectlistBox.refollow();
  //     this.$selectlistBox.updatePosition();
  //     ResizeSystem.requestUpdateSignal();
  // }.bind(this), 1);
};

MSMBoxController.prototype.ev_listCancel = function () {
  this.elt.$selectlistBox.values = this.elt.commitedValues;
  this.close();
  this.elt.itemsViewCtrl.update();
};
MSMBoxController.prototype.ev_listClose = function (event) {
  var newValues = this.elt.$selectlistBox.values;
  if (!(0, _Array.arrayCompare)(this.elt.commitedValues, newValues)) {
    this.elt.commitedValues = newValues;
    this.elt.emit('change', Object.assign({}, event, {
      type: 'change',
      target: this.elt,
      originalEvent: event.originalEvent || event
    }));
  }
  this.elt.itemsViewCtrl.update();
  this.close();
};
MSMBoxController.prototype.ev_mousedownOut = function (event) {
  if ((0, _EventEmitter.hitElement)(this.elt.$selectlistBox, event)) return;
  if (!this.elt.disableClickToFocus && this.elt.itemFocusable && hitItem(event)) return;
  this.lockOpen = true;
  this.close();
  document.addEventListener('mouseup', this.ev_mouseupOut);
};
MSMBoxController.prototype.ev_mouseupOut = function () {
  var _this4 = this;
  setTimeout(function () {
    _this4.lockOpen = false;
  }, 50);
};
_ACore["default"].install(MultiCheckMenu);
var _default = MultiCheckMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _ExpTree = _interopRequireDefault(__webpack_require__(87326));
__webpack_require__(94817);
var _SelectListBox = _interopRequireDefault(__webpack_require__(47818));
var _search = _interopRequireWildcard(__webpack_require__(67858));
var _utils = __webpack_require__(84512);
var _CheckBoxInput = _interopRequireDefault(__webpack_require__(8398));
var _EventEmitter = __webpack_require__(46833);
var _MultiLanguageCSS = __webpack_require__(89074);
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 isBranchStatus(status) {
  return status === 'open' || status === 'close';
}
function invertStatus(status) {
  return {
    open: 'close',
    close: 'open'
  }[status] || 'none';
}

/***
 * @extends Follower
 * @constructor
 */
function MultiCheckTreeLeafBox() {
  (0, _MultiLanguageCSS.loadLanguageModule)();
  this._initControl();
  this._searchCache = {};
  this._items = [];
  this._values = [];
  this.strictValue = true;
  this.$items = [];
  this.$itemByValue = {};
  this.$dislayItems = this.$items;
  this.$dislayItemByValue = this.$itemByValue;
  this.$content = (0, _ACore.$)('.as-select-tree-leaf-box-content', this);
  this._savedStatus = {};
  this.estimateSize = {
    width: 0,
    height: 0
  };
}
MultiCheckTreeLeafBox.tag = 'MultiCheckTreeLeafBox'.toLowerCase();
MultiCheckTreeLeafBox.render = function () {
  return (0, _ACore._)({
    tag: _Follower["default"],
    attr: {
      tabindex: 0
    },
    "class": ['as-select-tree-leaf-box', 'as-select-list-box'],
    extendEvent: ['change'],
    child: [{
      "class": 'as-select-list-box-search-ctn',
      child: 'searchtextinput'
    }, {
      "class": ['as-bscroller', 'as-select-list-box-scroller', 'as-select-tree-leaf-box-content'],
      child: []
    }, 'attachhook.as-dom-signal'],
    props: {
      anchor: [1, 6, 2, 5]
    }
  });
};
MultiCheckTreeLeafBox.prototype.focus = _SelectListBox["default"].prototype.focus;
MultiCheckTreeLeafBox.prototype._initControl = function () {
  this.$searchInput = (0, _ACore.$)('searchtextinput', this).on('stoptyping', this.eventHandler.searchModify);
};
MultiCheckTreeLeafBox.prototype.resetSearchState = function () {
  var value = this.$searchInput.value;
  if (value.length > 0) {
    this.$searchInput.value = '';
    if (value.trim().length) {
      this.$content.clearChild();
      this.$content.addChild(this.$items);
      this.$dislayItems = this.$items;
      this.$dislayItemByValue = this.$itemByValue;
      this._updateSelectedItems();
    }
  }
  this.updatePosition();
};
MultiCheckTreeLeafBox.prototype._findFirstLeaf = function () {
  var found = false;
  function visit(item) {
    if (item.isLeaf) {
      found = item;
      return true;
    }
    if (item.items && item.items.length > 0) {
      item.items.some(visit);
    }
    return !!found;
  }
  this._items.some(visit);
  return found;
};
MultiCheckTreeLeafBox.prototype._makeTree = function (item, dict, savedStatus) {
  var self = this;
  var status = 'none';
  var isLeaf = item.isLeaf;
  if (item.items && item.items.length > 0) {
    status = 'close';
  }
  if (isBranchStatus(status) && isBranchStatus(savedStatus[item.value])) {
    status = savedStatus[item.value];
  }
  var treeElt = (0, _ACore._)({
    tag: _ExpTree["default"].tag,
    "class": 'as-select-tree-leaf-item',
    props: {
      name: item.text,
      desc: item.desc,
      icon: item.icon,
      status: status,
      itemData: item
    },
    on: {
      'statuschange': this.updatePosition.bind(this)
    }
  });
  var nodeElt = treeElt.getNode().on({
    press: function press(event) {
      if (isBranchStatus(treeElt.status)) {
        treeElt.status = invertStatus(treeElt.status);
        savedStatus[item.value] = treeElt.status;
        self.updatePosition();
      } else if (isLeaf) {
        if (!(0, _EventEmitter.hitElement)(checkboxElt, event)) {
          var checked = !checkboxElt.checked;
          checkboxElt.checked = checked;
          var idx = self._values.indexOf(item.value);
          var changed = false;
          if (checked && idx < 0) {
            changed = true;
            self._values.push(item.value);
          } else if (!checked && idx >= 0) {
            changed = true;
            self._values.splice(idx, 1);
          }
          if (changed) self.emit('change', {
            item: item,
            target: self,
            itemElt: treeElt,
            originalEvent: event
          }, self);
        }
      }
    }
  });
  var checkboxElt = null;
  if (isLeaf) {
    checkboxElt = (0, _ACore._)({
      tag: _CheckBoxInput["default"].tag,
      on: {
        change: function change(event) {
          var checked = checkboxElt.checked;
          var idx = self._values.indexOf(item.value);
          var changed = false;
          if (checked && idx < 0) {
            changed = true;
            self._values.push(item.value);
          } else if (!checked && idx >= 0) {
            changed = true;
            self._values.splice(idx, 1);
          }
          if (changed) self.emit('change', {
            item: item,
            target: self,
            itemElt: treeElt,
            originalEvent: event
          }, self);
        }
      }
    });
    nodeElt.addChildAfter(checkboxElt, nodeElt.$toggleIcon);
    treeElt.$checkbox = checkboxElt;
  }
  if (dict) {
    if (dict[item.value] && !this.warned) {
      this.warned = true;
      console.warn(this, 'has duplicated value, element will not work correctly!', item);
    }
    dict[item.value] = treeElt;
  }
  if (isLeaf) {
    treeElt.addClass('as-is-leaf');
  }
  if (item.items && item.items.length > 0) {
    item.items.forEach(function (item1) {
      treeElt.addChild(self._makeTree(item1, dict, savedStatus));
    });
  }
  return treeElt;
};
MultiCheckTreeLeafBox.prototype._estimateItemWidth = function (item, level) {
  var width = 12; //padding
  width += 12 * level;
  width += 14.7 + 5; //toggle icon
  if (item.icon) width += 21; //icon
  width += 7 + (0, _utils.estimateWidth14)(item.text) + 5 + 7; //margin-text
  if (item.desc) width += 6 + (0, _utils.estimateWidth14)(item.desc) * 0.85;
  if (item.isLeaf) width += 16;
  return width;
};
MultiCheckTreeLeafBox.prototype.viewToSelected = function () {
  var selectedNode = this.$selectedItem;
  if (!selectedNode) return;
  selectedNode.scrollIntoView();
  var parent = selectedNode.getParent();
  while (parent && parent.getParent) {
    if (parent.status === 'close') {
      parent.getNode().emit('press');
    }
    parent = parent.getParent();
  }
};
MultiCheckTreeLeafBox.prototype._calcEstimateSize = function (items) {
  var self = this;
  var width = 0;
  var height = 0;
  function visit(item, level) {
    var itemWidth = self._estimateItemWidth(item, level);
    width = Math.max(width, itemWidth);
    height += 28;
    if (item.items && item.items.length) {
      item.items.forEach(function (item) {
        visit(item, level + 1);
      });
    }
  }
  items.forEach(function (item) {
    visit(item, 0);
  });
  return {
    width: width,
    height: height
  };
};
MultiCheckTreeLeafBox.prototype._updateSelectedItems = function () {
  var dict = this._values.reduce(function (ac, cr) {
    ac[cr] = true;
    return ac;
  }, {});
  var itemElt;
  for (var val in this.$dislayItemByValue) {
    itemElt = this.$dislayItemByValue[val];
    if (itemElt.$checkbox) {
      itemElt.$checkbox.checked = !!dict[itemElt.itemData.value];
    }
  }
};
MultiCheckTreeLeafBox.property = {};
MultiCheckTreeLeafBox.eventHandler = {};
MultiCheckTreeLeafBox.property.items = {
  /***
   * @this MultiCheckTreeLeafBox
   * @param items
   */
  set: function set(items) {
    var self = this;
    this._savedStatus = {};
    this._searchCache = {};
    items = (0, _utils.copySelectionItemArray)(items || [], {
      removeNoView: true
    });
    this._items = items;
    (0, _search.prepareSearchForList)(items);
    this.$content.clearChild();
    this.$itemByValue = {};
    this.$dislayItemByValue = this.$itemByValue;
    this.$items = items.map(function (item) {
      return self._makeTree(item, self.$itemByValue, self._savedStatus);
    });
    this.$dislayItems = this.$items;
    this.$content.addChild(this.$items);
    this.estimateSize = this._calcEstimateSize(items);
    this.addStyle('--select-list-estimate-width', this.estimateSize.width + 'px');
    this._updateSelectedItems();
    this.updatePosition();
  },
  get: function get() {
    return this._items;
  }
};
MultiCheckTreeLeafBox.property.values = {
  set: function set(values) {
    this._values.splice(0, this._values.length);
    values = values || [];
    var arr = this._values;
    values.reduce(function (ac, cr) {
      if (!ac[cr]) {
        ac[cr] = true;
        arr.push(cr);
      }
      return ac;
    }, {});
    this._updateSelectedItems();
  },
  get: function get() {
    return this._values;
  }
};
MultiCheckTreeLeafBox.property.enableSearch = _SelectListBox["default"].property.enableSearch;
MultiCheckTreeLeafBox.prototype._search = function (query) {
  var self = this;
  var queryItem = (0, _search["default"])({
    text: query
  });
  var minScore = Infinity;
  var maxScore = -Infinity;
  function makeScoreTree(item) {
    var holder = {
      item: item,
      score: (0, _search.calcItemMatchScore)(queryItem, item),
      childrenScore: 0,
      children: []
    };
    minScore = Math.min(minScore, holder.score);
    maxScore = Math.max(maxScore, holder.score);
    var children;
    if (item.items && item.items.length > 0) {
      children = item.items.map(makeScoreTree);
      holder.children = children;
      holder.childrenScore = holder.children.reduce(function (ac, cr) {
        return Math.max(ac, cr.score, cr.childrenScore);
      }, 0);
    }
    return holder;
  }
  var treeScores = this._items.map(makeScoreTree);
  var midScore = (maxScore + minScore) / 2;
  var savedStatus = {};
  function filterTree(scoredTrees, ignore) {
    return scoredTrees.filter(function (holder) {
      return ignore || holder.score >= midScore || holder.childrenScore >= midScore;
    }).map(function makeTree(holder) {
      var item = Object.assign({}, holder.item);
      if (!ignore && holder.children && holder.children.length > 0) {
        if (holder.childrenScore >= midScore) {
          savedStatus[item.value] = 'open';
          item.items = filterTree(holder.children, false);
        } else {
          savedStatus[item.value] = 'close';
          item.items = filterTree(holder.children, true);
        }
      }
      return item;
    });
  }
  var resultItems = filterTree(treeScores, false);
  var dict = {};
  var $items = resultItems.map(function (item) {
    return self._makeTree(item, dict, savedStatus);
  });
  return {
    $items: $items,
    items: resultItems,
    savedStatus: Object.assign({}, savedStatus),
    originSavedStatus: savedStatus,
    dict: dict
  };
};

/***
 * @this MultiCheckTreeLeafBox
 */
MultiCheckTreeLeafBox.eventHandler.searchModify = function () {
  var query = this.$searchInput.value.trim();
  if (query.length === 0) {
    this.$content.clearChild().addChild(this.$items);
    this.$dislayItemByValue = this.$itemByValue;
    this.$dislayItems = this.$items;
    this._updateSelectedItems();
    this.updatePosition();
    return;
  }
  if (!this._searchCache[query]) {
    this._searchCache[query] = this._search(query);
  }
  var searchData = this._searchCache[query];
  searchData.savedStatus = Object.assign(searchData.savedStatus, searchData.originSavedStatus);
  for (var val in searchData.dict) {
    if (isBranchStatus(searchData.dict[val].status)) {
      if (searchData.savedStatus[val]) {
        searchData.dict[val].status = searchData.savedStatus[val];
      }
    }
  }
  this.$content.clearChild().addChild(searchData.$items);
  this.$dislayItemByValue = searchData.dict;
  this.$dislayItems = searchData.$items;
  this._updateSelectedItems();
  this.updatePosition();
};
_ACore["default"].install(MultiCheckTreeLeafBox);
var _default = MultiCheckTreeLeafBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _MultiCheckTreeLeafBox = _interopRequireDefault(__webpack_require__(77361));
var _SelectTreeLeafMenu = _interopRequireWildcard(__webpack_require__(66138));
var _SelectBoxItem = _interopRequireDefault(__webpack_require__(27233));
var _MultiSelectMenu = _interopRequireDefault(__webpack_require__(63176));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _SelectMenu = _interopRequireDefault(__webpack_require__(41735));
var _MultiLanguageCSS = __webpack_require__(89074);
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; }
/****
 * Only leafs have checkbox
 * @extends AElement
 * @constructor
 */
function MultiCheckTreeLeafMenu() {
  (0, _MultiLanguageCSS.loadLanguageModule)();
  this.$selectBox = (0, _ACore._)({
    tag: _MultiCheckTreeLeafBox["default"].tag,
    on: {
      change: this.eventHandler.selectBoxChange,
      preupdateposition: this.eventHandler.preUpdateListPosition
    }
  });
  this.$selectlistBox = this.$selectBox;
  _OOP["default"].drillProperty(this, this.$selectBox, 'enableSearch');
  this.on('mousedown', this.eventHandler.click);
  this.$itemCtn = (0, _ACore.$)('.as-multi-select-menu-item-ctn', this);
  this.boxCtrl = new _SelectTreeLeafMenu.STLBoxController(this);
  _OOP["default"].drillProperty(this, this.boxCtrl, 'isFocus');
}
MultiCheckTreeLeafMenu.tag = 'MultiCheckTreeLeafMenu'.toLowerCase();
MultiCheckTreeLeafMenu.render = function () {
  return (0, _ACore._)({
    "class": ['as-multi-select-menu', 'as-multi-check-tree-leaf-menu'],
    extendEvent: ['change'],
    attr: {
      tabindex: '1'
    },
    child: [{
      attr: {
        'data-ml-key': 'txt_select_value'
      },
      "class": ['as-multi-select-menu-item-ctn', 'as-bscroller']
    }, {
      tag: 'button',
      "class": 'as-multi-select-menu-toggle-btn',
      child: 'dropdown-ico'
    }, 'attachhook']
  });
};
MultiCheckTreeLeafMenu.prototype._updateSelectedItems = function () {
  var values = this.$selectBox.values;
  while (this.$itemCtn.childNodes.length > values.length) {
    this.$itemCtn.removeChild(this.$itemCtn.lastChild);
  }
  while (this.$itemCtn.childNodes.length < values.length) {
    this.$itemCtn.addChild(this._makeItem());
  }
  var item;
  for (var i = 0; i < values.length; ++i) {
    item = this.$selectBox.$itemByValue[values[i]] && this.$selectBox.$itemByValue[values[i]].itemData;
    if (item) {
      this.$itemCtn.childNodes[i].data = item;
      this.$itemCtn.childNodes[i].removeStyle('display', 'none');
    } else {
      this.$itemCtn.childNodes[i].addStyle('display', 'none');
    }
  }
};
MultiCheckTreeLeafMenu.prototype._makeItem = function () {
  var itemElt = (0, _ACore._)({
    tag: _SelectBoxItem["default"].tag
  });
  itemElt.on('close', this.eventHandler.itemPressClose.bind(null, itemElt));
  return itemElt;
};
MultiCheckTreeLeafMenu.prototype.init = function (props) {
  props = props || {};
  var cProps = Object.assign({}, props);
  if ('items' in props) {
    this.items = props.items;
    delete cProps.items;
  }
  if ('values' in props) {
    this.values = props.values;
    delete cProps.values;
  }
  Object.assign(this, cProps);
};
MultiCheckTreeLeafMenu.property = {};
MultiCheckTreeLeafMenu.property.items = {
  set: function set(items) {
    this.$selectBox.items = items;
    this.addStyle('--select-list-estimate-width', Math.max(145 + 20, this.$selectBox.estimateSize.width) + 'px');
    this._updateSelectedItems();
  },
  get: function get() {
    return this.$selectBox.items;
  }
};
MultiCheckTreeLeafMenu.property.values = {
  set: function set(values) {
    values = values || [];
    this.pendingValues = values;
    this.$selectBox.values = values;
    this._updateSelectedItems();
  },
  get: function get() {
    var _this = this;
    if ('pendingValues' in this) return this.pendingValues;
    return this.$selectBox.values.slice().filter(function (value) {
      return !!_this.$selectBox.$itemByValue[value];
    });
  }
};
MultiCheckTreeLeafMenu.property.disabled = _MultiSelectMenu["default"].property.disabled;
MultiCheckTreeLeafMenu.property.readOnly = _MultiSelectMenu["default"].property.readOnly;
MultiCheckTreeLeafMenu.property.placeholder = {
  set: function set(value) {
    if (value) {
      this.$itemCtn.attr('data-placeholder', value + '');
    } else {
      this.$itemCtn.attr('data-placeholder', null);
    }
  },
  get: function get() {
    return this.$itemCtn.attr('data-placeholder');
  }
};
MultiCheckTreeLeafMenu.eventHandler = {};
MultiCheckTreeLeafMenu.eventHandler.clickOut = _SelectTreeLeafMenu["default"].eventHandler.clickOut;
MultiCheckTreeLeafMenu.eventHandler.preUpdateListPosition = _SelectMenu["default"].eventHandler.preUpdateListPosition;
MultiCheckTreeLeafMenu.eventHandler.click = function (event) {
  if (!this.readOnly && (event.target === this || event.target === this.$itemCtn)) {
    this.isFocus = true;
  }
};
MultiCheckTreeLeafMenu.eventHandler.selectBoxChange = function () {
  delete this.pendingValues;
  this._updateSelectedItems();
  this.emit('change', {
    type: 'change',
    target: this
  }, this);
};
MultiCheckTreeLeafMenu.eventHandler.itemPressClose = function (itemElt, event) {
  delete this.pendingValues;
  var item = itemElt.data;
  this.$selectBox.values = this.$selectBox.values.filter(function (value) {
    return value !== item.value;
  });
  this._updateSelectedItems();
  this.emit('change', {
    type: 'change',
    target: this
  }, this);
};
_ACore["default"].install(MultiCheckTreeLeafMenu);
var _default = MultiCheckTreeLeafMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _CheckTreeBox = _interopRequireDefault(__webpack_require__(93794));
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _SelectBoxItem = _interopRequireDefault(__webpack_require__(27233));
var _EventEmitter = __webpack_require__(46833);
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _Dom = __webpack_require__(64821);
var _MultiSelectMenu = _interopRequireDefault(__webpack_require__(63176));
var _CheckTreeLeafOnlyBox = _interopRequireDefault(__webpack_require__(13163));
var _utils = __webpack_require__(84512);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _attribute = __webpack_require__(18144);
var _CheckUnsafeTreeLeafOnlyBox = _interopRequireDefault(__webpack_require__(39646));
var _Array = __webpack_require__(40411);
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
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 AElement
 * @constructor
 */
function MultiCheckTreeMenu() {
  this._items = [];
  this._values = []; //commited value
  this._viewValues = [];
  /***
   * @type {CheckTreeBox|CheckTreeLeafOnlyBox}
   */
  this.$checkTreeBox = (0, _ACore._)({
    tag: this.renderProps.leafOnly ? this.attr('data-version') === '2.0' ? _CheckUnsafeTreeLeafOnlyBox["default"].tag : _CheckTreeLeafOnlyBox["default"].tag : _CheckTreeBox["default"].tag,
    // forceMobile: true,
    on: {
      change: this.eventHandler.boxChange,
      preupdateposition: this.eventHandler.preUpdateListPosition,
      toggleitem: this.eventHandler.boxToggleItem,
      cancel: this.eventHandler.boxCancel,
      close: this.eventHandler.boxClose
    },
    props: {
      initOpened: this.renderProps.initOpened,
      enableSearch: this.renderProps.enableSearch
    }
  });
  this.$itemCtn = (0, _ACore.$)('.as-multi-select-menu-item-ctn', this);
  this.$checkTreeBox.followTarget = this;
  this.$checkTreeBox.sponsorElement = this;
  this.on('mousedown', this.eventHandler.click);
  // this.placeholder = LangSys.getText('txt_select_value') || '-- Select values --';

  /**
   * parent will be selected if all off leaf selected, sub tree can not select if had no leaf
   * @name leafOnly
   * @type {boolean}
   * @memberOf MultiCheckTreeMenu#
   */
  /**
   * parent will be selected if all off leaf selected, sub tree can not select if had no leaf
   * @name initOpened
   * @type {number}
   * @memberOf MultiCheckTreeMenu#
   */

  /***
   * todo: TREE has noSelect
   */
}

MultiCheckTreeMenu.tag = 'MultiCheckTreeMenu'.toLowerCase();
MultiCheckTreeMenu.render = function (data, domDesc) {
  var leafOnly = domDesc.props && domDesc.props.leafOnly;
  var props = domDesc.props || {};
  /**
   * @name renderProps
   * @memberof MultiCheckTreeMenu#
   */
  var res = (0, _ACore._)({
    "class": ['as-multi-select-menu', 'as-multi-check-tree-menu'],
    extendEvent: ['change'],
    attr: {
      tabindex: '1'
    },
    child: [{
      "class": ['as-multi-select-menu-item-ctn', 'as-bscroller'],
      attr: {
        "data-ml-key": 'txt_select_value'
      }
    }, {
      tag: 'button',
      "class": 'as-multi-select-menu-toggle-btn',
      child: 'dropdown-ico'
    }, 'attachhook'],
    props: {
      renderProps: props
    }
  });
  if (props.version === 2) {
    res.attr('data-version', '2');
  }
  if (leafOnly) res.addClass('as-leaf-only');
  if (_BrowserDetector["default"].isMobile) res.addClass('am-multi-select-menu');
  return res;
};
MultiCheckTreeMenu.prototype.tokenPool = [];
MultiCheckTreeMenu.prototype.styleHandlers = {};
MultiCheckTreeMenu.prototype.styleHandlers.maxWidth = function (value) {
  var parsedValue = (0, _attribute.parseMeasureValue)(value);
  if (parsedValue.unit === 'px') {
    this.addClass('as-has-max-width');
    this.addStyle('--max-width', value);
  } else {
    this.removeClass('as-has-max-width');
  }
};
MultiCheckTreeMenu.prototype.styleHandlers['max-width'] = MultiCheckTreeMenu.prototype.styleHandlers.maxWidth;
MultiCheckTreeMenu.prototype.styleHandlers.width = function (value) {
  var parsedValue = (0, _attribute.parseMeasureValue)(value);
  if (parsedValue.unit === 'px') {
    this.addClass('as-has-max-width');
    this.addStyle('--max-width', value);
    this.style.width = value;
  } else {
    this.removeClass('as-has-max-width');
  }
};
MultiCheckTreeMenu.prototype.styleHandlers.overflow = function (value) {
  if (value === 'hidden') {
    this.style.overflow = 'hidden';
  } else {
    this.style.overflow = '';
  }
};
MultiCheckTreeMenu.prototype.addStyle = function (arg0, arg1) {
  if (typeof arg0 === "string" && this.styleHandlers[arg0]) {
    this.styleHandlers[arg0].apply(this, Array.prototype.slice.call(arguments, 1));
    return this;
  } else {
    return _AElement["default"].prototype.addStyle.apply(this, arguments);
  }
};
MultiCheckTreeMenu.prototype.removeStyle = function (arg0) {
  if (typeof arg0 === "string" && this.styleHandlers[arg0]) {
    this.styleHandlers[arg0].call(this, '');
    return this;
  } else {
    return _AElement["default"].prototype.removeStyle.apply(this, arguments);
  }
};
MultiCheckTreeMenu.prototype._requestToken = function () {
  var token = this.tokenPool.pop();
  if (!token) {
    token = (0, _ACore._)({
      tag: _SelectBoxItem["default"].tag,
      props: {
        menu: this
      },
      on: {
        close: function close(event) {
          setTimeout(function () {
            if (this.menu) this.menu.eventHandler.pressCloseToken(this, event);
          }.bind(this), 1);
        }
      }
    });
  }
  return token;
};
MultiCheckTreeMenu.prototype._releaseToken = function (token) {
  token.menu = null;
  this.tokenPool.push(token);
};
MultiCheckTreeMenu.prototype._filToken = function (n) {
  while (this.$itemCtn.childNodes.length > n) {
    this.$itemCtn.removeChild(this.$itemCtn.lastChild);
  }
  while (this.$itemCtn.childNodes.length < n) {
    this.$itemCtn.addChild(this._requestToken());
  }
};
MultiCheckTreeMenu.prototype._assignTokens = function (items) {
  for (var i = 0; i < items.length; ++i) {
    this.$itemCtn.childNodes[i].data = items[i];
  }
};
MultiCheckTreeMenu.prototype.findItemsByValues = function (values) {
  return values.map(function (value) {
    var holders = this.$checkTreeBox.findItemHoldersByValue(value);
    if (holders.length > 0) return holders[0].item;
    return null;
  }.bind(this)).filter(function (it) {
    return !!it;
  });
};
MultiCheckTreeMenu.prototype.viewValues = function (values) {
  values = values.slice();
  var items = this.findItemsByValues(values);
  this._filToken(items.length);
  this._assignTokens(items);
  this._viewValues = values;
  if (this.isFocus) {
    var bound = this.getBoundingClientRect();
    this.$checkTreeBox.addStyle('min-width', bound.width + 'px');
    _ResizeSystem["default"].update();
  }
  setTimeout(this._updateOverflow.bind(this), 100);
};
MultiCheckTreeMenu.prototype._updateOverflow = function () {
  var bound;
  if (this.getComputedStyleValue('overflow') === 'hidden') {
    bound = this.getBoundingClientRect();
    if (bound.width === 0) return;
    this.$itemCtn.removeClass('as-has-more');
    var hasMore = false;
    var elt;
    for (var i = 0; i < this.$itemCtn.childNodes.length; ++i) {
      elt = this.$itemCtn.childNodes[i];
      if (!hasMore) {
        elt.removeStyle('display');
        var cBound = elt.getBoundingClientRect();
        if (cBound.bottom > bound.bottom) {
          hasMore = true;
        }
      }
      if (hasMore) {
        elt.addStyle('display', 'none');
      }
    }
    if (hasMore) this.$itemCtn.addClass('as-has-more');
  }
};
MultiCheckTreeMenu.prototype.commitView = function () {
  var values = this._values;
  var newValues = this.$checkTreeBox.values.slice();
  if (!(0, _Array.arrayCompare)(values, newValues)) {
    this._values = this.$checkTreeBox.values.slice();
    this.emit('change', {
      type: 'change',
      target: this
    }, this);
  }
};
MultiCheckTreeMenu.prototype.cancelView = function () {
  this.$checkTreeBox.values = this._values.slice();
  this.viewValues(this.$checkTreeBox.viewValues);
};
MultiCheckTreeMenu.prototype.init = function (props) {
  props = props || {};
  var cProps = Object.assign({}, props);
  if ('initOpened' in props) {
    this.initOpened = props.initOpened;
    delete cProps.initOpened;
  }
  if ('leafOnly' in props) {
    this.leafOnly = props.leafOnly;
    delete cProps.leafOnly;
  }
  if ('items' in props) {
    this.items = props.items;
    delete cProps.items;
  }
  if ('values' in props) {
    this.values = props.values;
    delete cProps.values;
  }
  Object.assign(this, cProps);
};
MultiCheckTreeMenu.property = {};
MultiCheckTreeMenu.property.initOpened = {
  set: function set(value) {
    if ((0, _utils.isNaturalNumber)(value)) {
      this._initOpened = value;
    } else {
      this._initOpened = 0;
    }
    this.$checkTreeBox.initOpened = this._initOpened;
  },
  get: function get() {
    return this._initOpened;
  }
};
MultiCheckTreeMenu.property.isFocus = {
  /***
   * @this MultiCheckTreeMenu
   * @param value
   */
  set: function set(value) {
    if (value && (this.disabled || this.readOnly)) return;
    var self = this;
    value = !!value;
    var c = this.hasClass('as-focus');
    if (value === c) return;
    if (value) {
      self.off('mousedown', self.eventHandler.click);
      var bound = this.getBoundingClientRect();
      this.$checkTreeBox.addStyle('min-width', bound.width + 'px');
      this.addClass('as-focus');
      this.$checkTreeBox.addTo(document.body);
      this.$checkTreeBox.updatePosition();
      if (this._focusTimeout > 0) {
        clearTimeout(this._focusTimeout);
      }
      this._focusTimeout = setTimeout(function () {
        document.addEventListener('mousedown', this.eventHandler.clickOut);
        this._focusTimeout = -1;
        this.$checkTreeBox.focus();
      }.bind(this), 5);
    } else {
      var waitMouseUp = function waitMouseUp() {
        document.removeEventListener('mouseup', waitMouseUp);
        setTimeout(function () {
          self.on('mousedown', self.eventHandler.click);
        }, 5);
      }; // document.addEventListener('mouseup', waitMouseUp);why?
      this.removeClass('as-focus');
      this.$checkTreeBox.selfRemove();
      this.$checkTreeBox.resetSearchState();
      document.removeEventListener('mousedown', this.eventHandler.clickOut);
      setTimeout(waitMouseUp, 100);
    }
  },
  get: function get() {
    return this.hasClass('as-focus');
  }
};
MultiCheckTreeMenu.property.items = {
  set: function set(items) {
    this._items = (0, _utils.copySelectionItemArray)(items || [], {
      removeNoView: true
    });
    this.$checkTreeBox.items = this._items;
    this.addStyle('--list-min-width', Math.max(145 + 20, this.$checkTreeBox.estimateSize.width) + 'px');
    this.viewValues(this.$checkTreeBox.viewValues);
    this._values = this.$checkTreeBox.values.slice();
  },
  get: function get() {
    return this.$checkTreeBox.items;
  }
};
MultiCheckTreeMenu.property.values = {
  /***
   * @this MultiCheckTreeMenu
   * @param values
   */
  set: function set(values) {
    if (!(values instanceof Array)) values = [];
    values = (0, _Array.arrayUnique)(values);
    this.$checkTreeBox.values = values;
    this.viewValues(this.$checkTreeBox.viewValues);
    this._values = this.$checkTreeBox.values.slice();
  },
  /***
   * @this MultiCheckTreeMenu
   */
  get: function get() {
    if (this.isFocus) return this._values.slice();
    return this.$checkTreeBox.values.slice();
  }
};
MultiCheckTreeMenu.property.checkedValues = {
  get: function get() {
    return this.$checkTreeBox.viewValues.slice();
  }
};
MultiCheckTreeMenu.property.leafOnly = {
  set: function set(value) {
    if (!!value === this.hasClass('as-leaf-only')) return;
    throw Error("Can not change leafOnly value!");
  },
  get: function get() {
    return this.hasClass('as-leaf-only');
  }
};
MultiCheckTreeMenu.property.placeholder = {
  set: function set(value) {
    if (value) {
      this.$itemCtn.attr('data-placeholder', value + '');
    } else {
      this.$itemCtn.attr('data-placeholder', null);
    }
  },
  get: function get() {
    return this.$itemCtn.attr('data-placeholder');
  }
};
MultiCheckTreeMenu.property.disabled = _MultiSelectMenu["default"].property.disabled;
MultiCheckTreeMenu.property.readOnly = _MultiSelectMenu["default"].property.readOnly;
MultiCheckTreeMenu.eventHandler = {};

/***
 * @this MultiCheckTreeMenu
 * @param event
 */
MultiCheckTreeMenu.eventHandler.clickOut = function (event) {
  if (event.target.hasClass && event.target.hasClass('am-modal') || event.target === this || event.target === this.$itemCtn || !(0, _EventEmitter.hitElement)(this, event) && !(0, _EventEmitter.hitElement)(this.$checkTreeBox, event)) {
    this.isFocus = false;
    this.commitView();
  }
};

/***
 * @this MultiCheckTreeMenu
 * @param event
 */
MultiCheckTreeMenu.eventHandler.boxClose = function (event) {
  this.commitView();
  this.isFocus = false;
};

/***
 * @this MultiCheckTreeMenu
 * @param event
 */
MultiCheckTreeMenu.eventHandler.click = function (event) {
  if (!this.readOnly && (event.target === this || event.target === this.$itemCtn)) {
    this.isFocus = true;
  }
};

/***
 * @this MultiCheckTreeMenu
 * @param event
 */
MultiCheckTreeMenu.eventHandler.boxChange = function (event) {
  this.viewValues(this.$checkTreeBox.viewValues);
  _ResizeSystem["default"].update();
};
MultiCheckTreeMenu.eventHandler.boxCancel = function (event) {
  this.cancelView();
  this.isFocus = false;
};

/***
 * @this MultiCheckTreeMenu
 * @param {SelectBoxItem} tokenElt
 * @param event
 */
MultiCheckTreeMenu.eventHandler.pressCloseToken = function (tokenElt, event) {
  var value = tokenElt.value;
  var holders = this.$checkTreeBox.findItemHoldersByValue(value);
  holders.forEach(function (holder) {
    holder.unselectAll();
  });
  this.$checkTreeBox.updateSelectedInViewIfNeed();
  var newValues = this.$checkTreeBox.viewValues.slice();
  this.viewValues(newValues);
  console.log(this._values, newValues);
  if (!(0, _Array.arrayCompare)(this._values, newValues)) {
    this._values = newValues;
    this.emit('change', {
      type: 'change',
      target: this
    }, this);
  }
};
MultiCheckTreeMenu.eventHandler.preUpdateListPosition = function () {
  var bound = this.getBoundingClientRect();
  var screenSize = (0, _Dom.getScreenSize)();
  var availableTop = bound.top - 5;
  var availableBot = screenSize.height - 5 - bound.bottom;
  this.$checkTreeBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px');
  var outBound = (0, _Dom.traceOutBoundingClientRect)(this);
  if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) {
    this.isFocus = false;
  }
};
MultiCheckTreeMenu.eventHandler.boxToggleItem = function (event) {
  var bound = this.getBoundingClientRect();
  var screenSize = (0, _Dom.getScreenSize)();
  var availableTop = bound.top - 5;
  var availableBot = screenSize.height - 5 - bound.bottom;
  this.$checkTreeBox.addStyle('--max-height', (this.$checkTreeBox._lastAnchor < 4 ? availableBot : availableTop) + 'px');
  this.$checkTreeBox.updatePosition();
};
MultiCheckTreeMenu.property.enableSearch = {
  set: function set(value) {
    this.$checkTreeBox.enableSearch = !!value;
  },
  get: function get() {
    return this.$checkTreeBox.enableSearch;
  }
};
_ACore["default"].install(MultiCheckTreeMenu);
var _default = MultiCheckTreeMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
exports.loadLanguageModule = loadLanguageModule;
var _ACore = __webpack_require__(34093);
var counter = 30;
function makeCss(data) {
  var cssText = Object.keys(data).map(function (key) {
    return ['[data-ml-key=' + JSON.stringify(key) + ']::before {', '    content: ' + JSON.stringify(data[key]) + ';', '}'].join('\n');
  }).join('\n\n');
  (0, _ACore._)({
    tag: 'style',
    attr: {
      type: 'text/css'
    },
    props: {
      innerHTML: cssText
    }
  }).addTo(document.head);
}
var data = {
  txt_ok: 'OK',
  txt_cancel: 'Cancel',
  txt_close: 'Close',
  txt_option: 'Option',
  txt_check_all: 'Check All',
  txt_select_value: '-- Select values --'
};
makeCss(data);
var overrideData = {};
var LanguageModuleLoaded = false;
function loadLanguageModule() {
  if (LanguageModuleLoaded) return;
  var text;
  var newest = false,
    key;
  if (window['LanguageModule'] && window['LanguageModule'].data && window['LanguageModule'].data.length > 0) {
    LanguageModuleLoaded = true;
    for (key in data) {
      text = window['LanguageModule'].text(key);
      if (!text.startsWith('[key:') && text !== data[key]) {
        overrideData[key] = text;
        newest = true;
      }
    }
    if (newest) makeCss(overrideData);
  }
}
function waitLanguage() {
  if (window['LanguageModule'] && window['LanguageModule'].data && window['LanguageModule'].data.length > 0) {
    loadLanguageModule();
  } else {
    if (counter--) setTimeout(waitLanguage, 400 + Math.floor(16000 / counter / counter));
  }
}
waitLanguage();
var _default = {};
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
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; }
/***
 * @extends AElement
 * @constructor
 */
function MultiLanguageText() {
  this._v = Array(5).fill(null);
  this._key = null;
  this.$text = document.createTextNode('');
  this.addChild(this.$text);
}
MultiLanguageText.tag = 'mlt';
MultiLanguageText.render = function () {
  return (0, _ACore._)('span');
};
MultiLanguageText.prototype._updateText = function () {
  var text = '';
  if (this._key && window.LanguageModule && window.LanguageModule.text2) {
    text = window.LanguageModule.text2(this._key, this._v);
  }
  text = text.replace(/<br>/g, '\n');
  this.$text.data = text;
};
MultiLanguageText.attribute = Array(5).fill(0).reduce(function (ac, u, i) {
  ac['v' + i] = {
    set: function set(value) {
      this._v[i] = value;
      this._updateText();
    },
    get: function get() {
      return this._v[i];
    },
    remove: function remove() {
      this._v[i] = null;
    }
  };
  return ac;
}, {});
MultiLanguageText.attribute.key = {
  set: function set(value) {
    this._key = value;
    this._updateText();
  },
  get: function get() {
    return this._key;
  },
  remove: function remove() {
    this._key = null;
  }
};
MultiLanguageText.replaceAll = function (root) {
  (0, _ACore.$$)('mlt', root).forEach(function (elt) {
    if (elt.tagName !== 'MLT') return;
    var attr = Array.prototype.reduce.call(elt.attributes, function (ac, at) {
      ac[at.name] = at.value;
      return ac;
    }, {});
    elt.selfReplace((0, _ACore._)({
      tag: MultiLanguageText,
      attr: attr
    }));
  });
};
var _default = MultiLanguageText;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(5033);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _SelectMenu = _interopRequireDefault(__webpack_require__(41735));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _PositionTracker = _interopRequireDefault(__webpack_require__(97252));
__webpack_require__(27233);
var _SelectListBox = __webpack_require__(47818);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _SelectBox = __webpack_require__(28596);
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
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); }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @augments SelectBox
 * @augments PositionTracker
 * @constructor
 */
function MultiSelectMenu() {
  this.on('click', this.eventHandler.click);
  /***
   *
   * @type {SelectListBox}
   */
  this.$selectlistBox = _({
    tag: 'selectlistbox',
    props: {
      anchor: [1, 6, 2, 5],
      displayValue: _SelectListBox.VALUE_HIDDEN
    },
    on: {
      preupdateposition: this.eventHandler.preUpdateListPosition,
      pressitem: this.eventHandler.selectListBoxPressItem
    }
  });
  this.$itemCtn = $('.as-multi-select-menu-item-ctn', this);
  this.$attachhook = $('attachhook', this).on('attached', this.eventHandler.attached);
  _OOP["default"].drillProperty(this, this.$selectlistBox, 'enableSearch');
  this.$items = [];
  this._values = [];
  this.items = [];
  this.values = [];
  this.$selectlistBox.followTarget = this;
  this.$selectlistBox.sponsorElement = this;
  this.disableClickToFocus = false;
  this.orderly = true;
  this.itemFocusable = false;
  this._activeValue = undefined;
  this.strictValue = true;
  // this.placeholder = LangSys.getText('txt_select_value') || '-- Select values --';
}

MultiSelectMenu.tag = 'MultiSelectMenu'.toLowerCase();
MultiSelectMenu.render = function () {
  return _({
    "class": ['as-multi-select-menu'],
    extendEvent: ['change', 'add', 'remove', 'activevaluechange'],
    attr: {
      tabindex: '1'
    },
    child: [{
      attr: {
        'data-placeholder': '',
        'data-ml-key': 'txt_select_value'
      },
      "class": ['as-multi-select-menu-item-ctn', 'as-bscroller']
    }, {
      tag: 'button',
      "class": 'as-multi-select-menu-toggle-btn',
      child: 'dropdown-ico'
    }, 'attachhook']
  });
};
MultiSelectMenu.prototype._requireItem = function (n) {
  var itemElt;
  while (this.$items.length < n) {
    itemElt = (0, _SelectBox.requireItem)(this);
    this.$itemCtn.addChild(itemElt);
    this.$items.push(itemElt);
  }
  while (this.$items.length > n) {
    itemElt = this.$items.pop();
    this.$itemCtn.removeChild(itemElt);
    (0, _SelectBox.releaseItem)(itemElt);
  }
};
MultiSelectMenu.prototype._assignItems = function (items) {
  for (var i = 0; i < this.$items.length && i < items.length; ++i) {
    this.$items[i].data = items[i];
  }
};

/***
 *
 * @param {string[] | number[]} values
 * @private
 */
MultiSelectMenu.prototype._getItemsByValues = function (values) {
  var selectListBoxElt = this.$selectlistBox;
  var itemHolders = values.reduce(function (ac, cr) {
    ac.push.apply(ac, selectListBoxElt.findItemsByValue(cr));
    return ac;
  }, []);
  if (this.orderly) {
    if (typeof this.orderly === 'function') {
      itemHolders.sort(this.orderly);
    } else {
      itemHolders.sort(function (a, b) {
        return a.idx - b.idx;
      });
    }
  }
  return itemHolders.map(function (holder) {
    return holder.item;
  });
};
MultiSelectMenu.prototype._updateItems = function () {
  this.viewItemsByValues(this._values);
};
MultiSelectMenu.prototype.viewItemsByValues = function (values) {
  var cBound = this.getBoundingClientRect();
  var items = this._getItemsByValues(values);
  this._requireItem(items.length);
  this._assignItems(items);
  if (this.itemFocusable) {
    this._updateFocusItem();
  }
  var nBound = this.getBoundingClientRect();
  if (nBound.width != cBound.width || nBound.height != cBound.height) {
    _ResizeSystem["default"].updateUp(this);
  }
};
MultiSelectMenu.property = {};
MultiSelectMenu.property.disabled = _SelectMenu["default"].property.disabled;
MultiSelectMenu.property.hidden = _SelectMenu["default"].property.hidden;
MultiSelectMenu.property.isFocus = _SelectMenu["default"].property.isFocus;
MultiSelectMenu.property.readOnly = _SelectMenu["default"].property.readOnly;
MultiSelectMenu.prototype.init = function (props) {
  props = props || [];
  Object.keys(props).forEach(function (key) {
    if (props[key] === undefined) delete props[key];
  });
  this["super"](props);
};
MultiSelectMenu.prototype._updateFocusItem = function () {
  for (var i = 0; i < this.$items.length; ++i) {
    this.$items[i].active = this.$items[i].value == this._activeValue;
  }
};
MultiSelectMenu.prototype.init = _SelectMenu["default"].prototype.init;
MultiSelectMenu.prototype._implicit = function (values) {
  if (values === null || values === undefined) values = [];
  if (!(values instanceof Array)) {
    values = [values];
  }
  values = values.filter(function (value) {
    var type = _typeof(value);
    return type === 'string' || type === 'number' || type === "boolean" || value === null || value === undefined;
  }).reduce(function (ac, cr) {
    if (!ac.dict[cr]) {
      ac.dict[cr] = true;
      ac.result.push(cr);
    }
    return ac;
  }, {
    result: [],
    dict: {}
  }).result;
  return values;
};
MultiSelectMenu.prototype._explicit = function (values) {
  var selectListBoxElt = this.$selectlistBox;
  var strictValue = this.strictValue;
  values = values.filter(function (value) {
    if (!strictValue) return true;
    var cts = selectListBoxElt.findItemsByValue(value);
    if (cts && cts.length > 0) return true;
    return false;
  });
  return values;
};
MultiSelectMenu.property.items = {
  set: function set(items) {
    items = items || [];
    this.$selectlistBox.items = items;
    this.addStyle('--list-min-width', this.$selectlistBox._estimateWidth + 'px');
    this._updateItems();
  },
  get: function get() {
    return this.$selectlistBox.items;
  }
};
MultiSelectMenu.property.values = {
  set: function set(values) {
    values = this._implicit(values);
    this._values = values;
    this.$selectlistBox.values = values;
    this._updateItems();
  },
  get: function get() {
    return this._explicit(this._values);
  }
};
MultiSelectMenu.property.orderly = {
  set: function set(value) {
    var needUpdate = this._orderly === this._orderly;
    if (typeof value === 'function') {
      this._orderly;
    } else this._orderly = !!value;
    if (needUpdate) {
      this.values = this.values;
    }
  },
  get: function get() {
    return !!this._orderly;
  }
};
MultiSelectMenu.property.disableClickToFocus = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disable-click-to-focus');
    } else {
      this.removeClass('as-disable-click-to-focus');
    }
  },
  get: function get() {
    return this.hasClass('as-disable-click-to-focus');
  }
};
MultiSelectMenu.property.itemFocusable = {
  set: function set(value) {
    if (value) {
      this.addClass('as-item-focusable');
    } else {
      this.removeClass('as-item-focusable');
    }
    this._updateFocusItem();
  },
  get: function get() {
    return this.hasClass('as-item-focusable');
  }
};
MultiSelectMenu.property.activeValue = {
  set: function set(value) {
    this._activeValue = value;
    if (this.itemFocusable) {
      this._updateFocusItem();
      //todo
    }
  },

  get: function get() {
    return this._activeValue;
  }
};
MultiSelectMenu.property.strictValue = {
  set: function set(value) {
    if (value) {
      this.attr('data-strict-value', null);
    } else {
      this.attr('data-strict-value', 'false');
    }
  },
  get: function get() {
    var data = this.attr('data-strict-value');
    return !data || data != 'false' && data !== '0';
  }
};
MultiSelectMenu.eventHandler = Object.assign({}, _SelectMenu["default"].eventHandler);
MultiSelectMenu.eventHandler.attached = function () {
  var maxHeightStyle = this.getComputedStyleValue('max-height') || 'none';
  if (maxHeightStyle.match(/[0-9-]+px/)) {
    this.addStyle('--multi-select-menu-max-height', maxHeightStyle);
    this.addStyle('max-height', 'unset');
  } else if (maxHeightStyle !== 'none') {
    console.warn('Can not adapt max-height:', maxHeightStyle);
  }
};
MultiSelectMenu.eventHandler.click = function (event) {
  if (this.disabled) return;
  if ((event.target === this || event.target === this.$itemCtn) && !this.disableClickToFocus && !this.readOnly) {
    this.isFocus = !this.isFocus;
  }
};
MultiSelectMenu.eventHandler.bodyClick = function (event) {
  if (!_EventEmitter["default"].hitElement(this.$selectlistBox, event) && event.target !== this && event.target !== this.$itemCtn) {
    this.isFocus = false;
  }
};
MultiSelectMenu.eventHandler.selectListBoxPressItem = function (event) {
  var data = event.data;
  var currentValues = this.$selectlistBox.values;
  currentValues.push(data.value);
  this.$selectlistBox.values = currentValues;
  this.$selectlistBox.updatePosition();
  this._values = currentValues.slice();
  this._activeValue = data.value;
  this._updateItems();
  this.isFocus = false;
  this.emit('add', Object.assign({}, event, {
    type: 'add',
    target: this,
    value: data.value,
    data: data,
    itemData: data
  }), this);
  this.emit('change', Object.assign({}, event, {
    type: 'change',
    action: 'add',
    target: this,
    value: data.value,
    data: data,
    values: this.values
  }), this);
};
MultiSelectMenu.eventHandler.pressItem = function (item, event) {
  var value = item.value;
  if (this.itemFocusable) {
    var prevActiveValue = this.activeValue;
    if (value !== prevActiveValue) {
      this.activeValue = value;
      this.emit('activevaluechange', {
        target: this,
        originEvent: event,
        prevActiveValue: prevActiveValue,
        activeValue: value
      }, this);
    }
  }
};
MultiSelectMenu.eventHandler.pressCloseItem = function (item, event) {
  var value = item.value;
  var data = item.data;
  var index;
  index = this._values.indexOf(value);
  if (index >= 0) {
    this._values.splice(index, 1);
    this._updateItems();
    this.$selectlistBox.values = this._values;
    this.emit('remove', Object.assign({}, event, {
      type: 'change',
      target: this,
      data: data,
      value: value,
      itemData: data
    }), this);
    this.emit('change', Object.assign({}, event, {
      type: 'change',
      action: 'remove',
      target: this,
      data: data,
      value: value,
      itemData: data
    }), this);
  }
};
_ACore["default"].install(MultiSelectMenu);
var _default = MultiSelectMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends  AElement
 * @constructor
 */
function NumberSpanInput() {
  this.ev_keydown = this.ev_keydown.bind(this);
  this.on('keydown', this.ev_keydown, true);
  this.readOnly = false;
  this.value = 0;
  this.on('paste', function (event) {
    event.preventDefault();
  });
}
NumberSpanInput.tag = 'NumberSpanInput'.toLowerCase();
NumberSpanInput.render = function () {
  return _({
    tag: 'span',
    child: {
      text: ''
    }
  });
};
NumberSpanInput.prototype.selectAll = function () {
  var sel;
  if (window.getSelection) {
    sel = window.getSelection();
    sel.removeAllRanges();
    var range = document.createRange();
    range.selectNode(this.childNodes[this.childNodes.length - 1]);
    sel.addRange(range);
  } else {
    console.error("TimePicker: Not support!");
  }
};
NumberSpanInput.prototype.selectEnd = function () {
  var sel;
  if (window.getSelection) {
    sel = window.getSelection();
    sel.removeAllRanges();
    this._autoAddZero();
    var length = this.firstChild.data.length;
    var range = document.createRange();
    range.setStart(this.firstChild, length);
    range.setEnd(this.firstChild, length);
    sel.addRange(range);
  } else {
    console.error("TimePicker: Not support!");
  }
};
NumberSpanInput.prototype.selectNone = function () {
  var sel;
  if (document.activeElement === this) {
    sel = window.getSelection();
    sel.removeAllRanges();
  }
};
NumberSpanInput.prototype._autoAddZero = function () {
  if (!this.firstChild) {
    this.addChild(_({
      text: '0'
    }));
  }
};

/***
 *
 * @param {KeyboardEvent} event
 */
NumberSpanInput.prototype.ev_keydown = function (event) {
  if (event.key && event.key.length == 1 && !event.ctrlKey && !event.altKey) {
    if (event.key.match(/[0-9]/)) {} else {
      event.preventDefault();
    }
  } else if (event.key == 'Enter') {
    event.preventDefault();
  }
};
NumberSpanInput.property = {};
NumberSpanInput.property.readOnly = {
  set: function set(value) {
    this.contentEditable = !value;
  },
  get: function get() {
    return this.contentEditable === false || this.contentEditable === 'false';
  }
};

/***
 *
 * @type {NumberSpanInput}
 */
NumberSpanInput.property.value = {
  set: function set(value) {
    this._autoAddZero();
    this.firstChild.data = value + '';
  },
  get: function get() {
    return this.firstChild && this.firstChild.data || '';
  }
};
_ACore["default"].install(NumberSpanInput);
var _default = NumberSpanInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(6032);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
var _Dom = __webpack_require__(64821);
var _Vec = _interopRequireDefault(__webpack_require__(73316));
var _stringGenerate = __webpack_require__(10713);
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); }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var $$ = _ACore["default"].$$;

/***
 * @extends Hanger
 * @constructor
 */
function OnScreenWidget() {
  this.id = 'unset-id-' + (0, _stringGenerate.randomIdent)();
  this.on({
    dragstart: this.eventHandler.widgetStartDrag,
    drag: this.eventHandler.widgetDrag,
    dragend: this.eventHandler.widgetDragEnd
  });
  this.addEventListener('click', function (event) {
    if (!this._preventClick) this.emit('click', event, this);
  });
  this.$attachhook = _('attachhook').addTo(this);
  this.$attachhook.on('attached', this.eventHandler.attached);
  this.config = null;
}
OnScreenWidget.tag = 'OnScreenWidget'.toLowerCase();
OnScreenWidget.render = function () {
  return _({
    tag: 'hanger',
    extendEvent: 'click',
    "class": ['as-onscreen-widget', 'as-size-loading'],
    props: {
      hangOn: 3
    }
  });
};
OnScreenWidget.prototype.configPrefix = 'on-screen-widget-';
OnScreenWidget.prototype._genConfig = function () {
  this._widgetBound = this.getBoundingClientRect();
  var screenSize = (0, _Dom.getScreenSize)();
  return {
    cx: (this._widgetBound.left + this._widgetBound.width / 2) * 100 / screenSize.width,
    cy: (this._widgetBound.top + this._widgetBound.height / 2) * 100 / screenSize.height
  };
};
OnScreenWidget.prototype._saveConfig = function () {
  var id = this.id || '';
  if (id.startsWith('unset-id-') || !this.config) return;
  localStorage.setItem(this.configPrefix + id, JSON.stringify(this.config));
};
OnScreenWidget.prototype._loadConfig = function () {
  var id = this.id || '';
  if (id.startsWith('unset-id-')) return;
  var config = null;
  try {
    config = JSON.parse(localStorage.getItem(this.configPrefix + id));
    if (_typeof(config) !== "object" || typeof config.cx !== "number" || typeof config.cy !== 'number') {
      config = this.config || this._genConfig();
    }
  } catch (error) {
    config = this.config || this._genConfig();
  }
  var cx = config.cx || 0;
  var cy = config.cy || 0;
  this.addStyle({
    '--cx': cx / 100,
    '--cy': cy / 100
  });
  this.config = config;
};
OnScreenWidget.prototype._updateCSSSize = function () {
  var bound = this.getBoundingClientRect();
  this.addStyle({
    '--client-height': bound.height + 'px',
    '--client-width': bound.width + 'px'
  });
  this.removeClass('as-size-loading');
};

/***
 *
 * @type {OnScreenWidget|{}}
 */
OnScreenWidget.eventHandler = {};
OnScreenWidget.eventHandler.attached = function () {
  var images = $$('img', this);
  var syncs = images.map(function (img) {
    if (img.classList.contains('absol-attachhook')) return Promise.resolve();
    return (0, _Dom.waitImageLoaded)(img, 100);
  });
  var thisW = this;
  Promise.all(syncs).then(function () {
    thisW._updateCSSSize();
    thisW._loadConfig();
  });
};
OnScreenWidget.eventHandler.widgetStartDrag = function (event) {
  this._widgetBound = this.getBoundingClientRect();
  this._preventClick = true;
};
OnScreenWidget.eventHandler.widgetDrag = function (event) {
  event.preventDefault();
  var screenSize = (0, _Dom.getScreenSize)();
  var p0 = new _Vec["default"](this._widgetBound.left, this._widgetBound.top);
  var dv = event.currentPoint.sub(event.startingPoint);
  var p1 = p0.add(dv);
  var cx = (p1.x - 2) * 100 / (screenSize.width - this._widgetBound.width - 4);
  var cy = (p1.y - 2) * 100 / (screenSize.height - this._widgetBound.height - 4);
  cx = Math.max(0, Math.min(100, cx));
  cy = Math.max(0, Math.min(100, cy));
  this.addStyle({
    '--cx': cx / 100,
    '--cy': cy / 100
  });
  if (this.config) {
    this.config.cx = cx;
    this.config.cy = cy;
  }
};
OnScreenWidget.eventHandler.widgetDragEnd = function () {
  var thisWG = this;
  setTimeout(function () {
    thisWG._preventClick = false;
  }, 100);
  this._saveConfig();
};
_ACore["default"].install(OnScreenWidget);
var _default = OnScreenWidget;
exports["default"] = _default;

/***/ }),

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

"use strict";


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;
__webpack_require__(43576);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _Dom = _interopRequireWildcard(__webpack_require__(64821));
var _WindowBox = _interopRequireDefault(__webpack_require__(24405));
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
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 }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function OnScreenWindow() {
  var self = this;
  this._lastSize = {
    width: 0,
    height: 0
  };

  /***
   *
   * @type {WindowBox}
   */
  this.$windowBox = $(_WindowBox["default"].tag, this);
  _OOP["default"].drillProperty(this, this.$windowBox, 'windowTitle');
  _OOP["default"].drillProperty(this, this.$windowBox, 'windowActions');
  _OOP["default"].drillProperty(this, this.$windowBox, 'windowIcon');
  this.$windowBox.on('action', function (event) {
    self.emit('action', event, self);
  });
  this.$header = _({
    tag: _Hanger["default"].tag,
    elt: this.$windowBox.$header
  });
  this.$header.on('dragstart', this.eventHandler.dragStart.bind(this, this.$header, 'move'));

  //
  this.$bottomResizer = $('.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom', this);
  this.$bottomResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$bottomResizer, 'bottom'));

  //
  this.$rightResizer = $('.absol-onscreen-window-resizer.absol-onscreen-window-resize-right', this);
  this.$rightResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$rightResizer, 'right'));

  //
  this.$topResizer = $('.absol-onscreen-window-resizer.absol-onscreen-window-resize-top', this);
  this.$topResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$topResizer, 'top'));
  this.$leftResizer = $('.absol-onscreen-window-resizer.absol-onscreen-window-resize-left', this);
  this.$leftResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$leftResizer, 'left'));
  this.$bottomRightResizer = $('.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-right', this);
  this.$bottomRightResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$bottomRightResizer, 'bottomRight'));
  //
  this.$bottomLeftResizer = $('.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-left', this);
  this.$bottomLeftResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$bottomLeftResizer, 'bottomLeft'));
  //

  this.$topLeftResizer = $('.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-left', this);
  this.$topLeftResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$topLeftResizer, 'topLeft'));
  this.$topRightResizer = $('.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-right', this);
  this.$topRightResizer.on('dragstart', this.eventHandler.dragStart.bind(this, this.$topRightResizer, 'topRight'));
  this.$attachhook = _('attachhook').addTo(this);
  this.$attachhook.requestUpdateSize = this.relocation.bind(this);
  this.$attachhook.on('error', function () {
    _Dom["default"].addToResizeSystem(this);
  });
}
OnScreenWindow.tag = 'OnScreenWindow'.toLowerCase();
OnScreenWindow.render = function () {
  return _({
    extendEvent: ['sizechange', 'drag', 'relocation', 'action'],
    "class": 'absol-onscreen-window',
    child: [{
      tag: _WindowBox["default"].tag,
      "class": 'as-window-box'
    }, 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-top', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-left', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-right', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-right', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-left', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-left', 'hanger.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-right']
  });
};
OnScreenWindow.prototype.maybeSizeChange = function () {
  var bound = this.getBoundingClientRect();
  if (this._lastSize.width !== bound.width || this._lastSize.height !== bound.height) {
    this._lastSize = bound;
    window.dispatchEvent(new Event('resize'));
    this.emit('sizechange', {
      size: bound,
      target: this,
      type: 'sizechange'
    }, this);
  }
};
OnScreenWindow.prototype.moveFators = {
  move: {
    x: 1,
    y: 1,
    /***
     * @this OnScreenWindow
     * @param event
     */
    canMove: function canMove(event) {
      return true;
    },
    cursor: 'move'
  },
  top: {
    y: 1,
    height: -1
  },
  bottom: {
    height: 1,
    cursor: 's-resize'
  },
  bottomRight: {
    height: 1,
    width: 1,
    cursor: 'se-resize'
  },
  bottomLeft: {
    height: 1,
    width: -1,
    x: 1,
    cursor: 'sw-resize'
  },
  topLeft: {
    height: -1,
    width: -1,
    x: 1,
    y: 1,
    cursor: 'nw-resize'
  },
  topRight: {
    height: -1,
    width: 1,
    y: 1,
    cursor: 'ne-resize'
  },
  right: {
    width: 1,
    cursor: 'e-resize'
  },
  left: {
    x: 1,
    width: -1,
    cursor: 'w-resize'
  }
};

/***
 *
 * @type {{}}
 * @memberOf OnScreenWindow#
 */
OnScreenWindow.eventHandler = {};

/***
 * @this OnScreenWindow
 * @param {Hanger} elt
 * @param fN
 * @param event
 */
OnScreenWindow.eventHandler.dragStart = function (elt, fN, event) {
  var factor = this.moveFators[fN];
  if (factor.canMove && !factor.canMove.call(this, event)) return;
  this.movingData = {
    factor: factor,
    screenSize: (0, _Dom.getScreenSize)(),
    modal: _('.absol-onscreen-window-moving-modal').addStyle('cursor', factor.cursor).addTo(document.body),
    elt: elt,
    bound: this.getBoundingClientRect()
  };
  elt.on('drag', this.eventHandler.drag).on('dragend', this.eventHandler.dragEnd);
};

/***
 * @this OnScreenWindow
 * @param event
 */
OnScreenWindow.eventHandler.drag = function (event) {
  var movingData = this.movingData;
  var factor = movingData.factor;
  var bound = movingData.bound;
  var screenSize = movingData.screenSize;
  var dv = event.currentPoint.sub(event.startingPoint);
  var x, y, width, height;
  if (factor.x) {
    x = dv.x * factor.x + bound.left;
    x = Math.min(x, screenSize.width - bound.width);
    x = Math.max(0, x);
    this.addStyle('left', x + 'px');
  }
  if (factor.y) {
    y = dv.y * factor.y + bound.top;
    y = Math.min(y, screenSize.height - bound.height);
    y = Math.max(0, y);
    this.addStyle('top', y + 'px');
  }
  if (factor.width) {
    width = dv.x * factor.width + bound.width;
    this.addStyle('width', width + 'px');
  }
  if (factor.height) {
    height = dv.y * factor.height + bound.height;
    this.addStyle('height', height + 'px');
  }
  this.emit('relocation', {
    type: 'relocation',
    target: this
  }, this);
  this.maybeSizeChange();
};

/***
 * @this OnScreenWindow
 * @param event
 */
OnScreenWindow.eventHandler.dragEnd = function (event) {
  var movingData = this.movingData;
  var elt = movingData.elt;
  elt.off('drag', this.eventHandler.drag).off('dragend', this.eventHandler.dragEnd);
  setTimeout(function () {
    movingData.modal.remove();
  }, 50);
  this.movingData = null;
};
['addChild', 'addChildBefore', 'addChildAfter', 'clearChild', 'findChildBefore', 'findChildAfter'].forEach(function (key) {
  OnScreenWindow.prototype[key] = function () {
    return this.$windowBox[key].apply(this.$windowBox, arguments);
  };
});
OnScreenWindow.property = {};
OnScreenWindow.prototype.relocation = function () {
  var bound = this.getBoundingClientRect();
  var screenSize = _Dom["default"].getScreenSize();
  var isRelocated = false;
  if (bound.bottom >= screenSize.height) {
    this.addStyle('top', Math.max(0, screenSize.height - bound.height) + 'px');
    isRelocated = true;
  }
  if (bound.right >= screenSize.width) {
    this.addStyle('left', Math.max(0, screenSize.width - bound.width) + 'px');
    isRelocated = true;
  }
  if (isRelocated) {
    this.emit('relocation', {
      type: 'relocation',
      target: this
    }, this);
  }
};
_ACore["default"].install(OnScreenWindow);
var _default = OnScreenWindow;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
__webpack_require__(63386);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function PageIndicator() {
  this._idx = -1;
  this.length = 0;
  this.idx = -1;
}
PageIndicator.tag = 'PageIndicator'.toLowerCase();
PageIndicator.render = function () {
  return _({
    "class": 'as-page-indicator',
    child: []
  });
};
PageIndicator.property = {};
PageIndicator.property.length = {
  set: function set(value) {
    value = value || 0;
    value = Math.max(0, value);
    while (this.childNodes.length < value) {
      this.addChild(_('button.as-page-indicator-item'));
    }
    while (this.childNodes.length > value) {
      this.removeChild(this.childNodes[this.childNodes.length - 1]);
    }
    this.idx = this._idx; //update
  },

  get: function get() {
    return this.childNodes.length;
  }
};
PageIndicator.property.idx = {
  set: function set(value) {
    var activeElt = this.childNodes[this._idx];
    if (activeElt) activeElt.removeClass('as-active');
    this._idx = value;
    activeElt = this.childNodes[this._idx];
    if (activeElt) activeElt.addClass('as-active');
  },
  get: function get() {
    return this._idx;
  }
};
_ACore["default"].install(PageIndicator);
var _default = PageIndicator;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(65461);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function PageSelector() {
  this.$pageCount = $('.absol-page-count', this);
  this.$pageInput = $('.absol-page-number-input input', this);
  this.$pageInput.on('keyup', this.eventHandler.pressEnterKey);
  this.$prevBtn = $('li.page-previous', this);
  this.$nextBtn = $('li.page-next', this);
  this.$firstBtn = $('li.page-first', this);
  this.$lastBtn = $('li.page-last', this);
  this.$nextBtn.on('click', this.eventHandler.clickNext);
  this.$prevBtn.on('click', this.eventHandler.clickPrev);
  this.$firstBtn.on('click', this.eventHandler.clickFirst);
  this.$lastBtn.on('click', this.eventHandler.clickLast);
  this.$buttonContainer = $('.absol-page-number-buttons', this);
  this._buttons = [];
  this._pageOffset = 1;
  this._selectedIndex = 1;
  this._pageCount = 1;
  this._pageRange = 1;
  this.$pageInput.value = this._selectedIndex;
}
PageSelector.tag = 'PageSelector'.toLowerCase();
PageSelector.render = function () {
  return _({
    "class": ['absol-page-selector'],
    extendEvent: ['change'],
    child: [{
      "class": 'absol-page-number-input',
      child: [{
        tag: 'label',
        child: {
          text: "Page"
        }
      }, {
        tag: 'input',
        attr: {
          type: 'text'
        }
      }, {
        tag: 'span',
        child: {
          text: '/ '
        }
      }, {
        tag: 'span',
        "class": 'absol-page-count',
        child: {
          text: '1'
        }
      }]
    }, {
      tag: 'ul',
      "class": 'absol-page-number-buttons',
      child: [{
        tag: 'li',
        "class": "page-first",
        attr: {
          title: 'First'
        },
        child: 'a.mdi.mdi-chevron-double-left'
      }, {
        tag: 'li',
        attr: {
          title: 'Previous'
        },
        "class": 'page-previous',
        child: 'a.mdi.mdi-chevron-left'
      }, {
        tag: 'li',
        attr: {
          title: 'Next'
        },
        "class": 'page-next',
        child: 'a.mdi.mdi-chevron-right'
      }, {
        tag: 'li',
        attr: {
          title: 'Last'
        },
        "class": 'page-last',
        child: 'a.mdi.mdi-chevron-double-right'
      }]
    }]
  });
};
PageSelector.eventHandler = {};
PageSelector.eventHandler.pressEnterKey = function (event) {
  if (event.keyCode != 13) return;
  var index = parseInt(this.$pageInput.value.trim(), 10);
  if (index < 1 || index > this._pageCount) {
    this.$pageInput.value = this._selectedIndex;
    return;
  }
  this.selectPage(index, true);
};
PageSelector.eventHandler.clickLast = function (event) {
  this.selectPage(this._pageCount, true);
};
PageSelector.eventHandler.clickFirst = function (event) {
  this.selectPage(1, true);
};
PageSelector.eventHandler.clickNext = function (event) {
  if (this._selectedIndex == this._pageCount) return;
  this.selectPage(this._selectedIndex + 1, true);
};
PageSelector.eventHandler.clickPrev = function (event) {
  if (this._selectedIndex == 1) return;
  this.selectPage(this._selectedIndex - 1, true);
};
PageSelector.eventHandler.clickIndex = function (index, event) {
  this.selectPage(index + this._pageOffset, true);
};
PageSelector.prototype._createButton = function (index) {
  var button = _({
    tag: 'li',
    "class": 'absol-page-number',
    child: {
      tag: 'a',
      attr: {
        'data-index-text': index + 1
      }
    },
    on: {
      click: PageSelector.eventHandler.clickIndex.bind(this, index)
    }
  });
  this.$buttonContainer.addChildBefore(button, this.$nextBtn);
  return button;
};
PageSelector.prototype.setPageRange = function (pageCount) {
  this._pageRange = pageCount;
  while (this._buttons.length < pageCount) {
    this._buttons.push(this._createButton(this._buttons.length));
  }
  while (this._buttons.length > pageCount) {
    this._buttons.pop().remove();
  }
};
PageSelector.prototype.setStartPage = function (index) {
  this._buttons.forEach(function (e, i) {
    e.firstChild.attr('data-index-text', i + index + '');
  });
  this._pageOffset = index;
};
PageSelector.prototype.selectPage = function (index, userActive) {
  if (index == this._selectedIndex) this.setStartPage(index - parseInt(this._pageRange / 2));
  if (index >= this._pageOffset + this._pageRange) this.setStartPage(index - parseInt(this._pageRange / 2));
  if (index > this._selectedIndex) {
    if (index == this._pageOffset + this._pageRange - 1) this.setStartPage(index - parseInt(this._pageRange / 2));
  }
  if (index < this._selectedIndex) {
    if (index == this._pageOffset) this.setStartPage(index - parseInt(this._pageRange / 2));
  }
  if (index > this._pageCount - parseInt(this._pageRange / 2)) this.setStartPage(this._pageCount - this._pageRange + 1);
  if (index <= parseInt(this._pageRange / 2)) this.setStartPage(1);
  var pageOffset = this._pageOffset;
  this._buttons.forEach(function (e, i) {
    if (i + pageOffset == index) {
      e.addClass('active');
    } else {
      e.removeClass('active');
    }
  });
  if (this._selectedIndex != index) {
    this._selectedIndex = index;
    this.$pageInput.value = index;
    this.emit('change', {
      target: this,
      selectedIndex: index,
      userActive: !!userActive
    }, this);
  }
};
PageSelector.prototype.getSelectedPage = function () {
  return this._selectedIndex;
};
PageSelector.prototype.setPageCount = function (count) {
  this._pageCount = count;
  this.$pageCount.firstChild.data = '' + count;
  this.attr('data-page-count', count);
};
PageSelector.property = {};
PageSelector.property.selectedIndex = {
  set: function set(value) {
    this.selectPage(value, false);
  },
  get: function get() {
    return this._selectedIndex;
  }
};
PageSelector.property.pageCount = {
  set: function set(value) {
    this.setPageCount(value);
  },
  get: function get() {
    return this._pageCount;
  }
};
PageSelector.property.pageOffset = {
  set: function set(value) {
    this.setStartPage(value);
  },
  get: function get() {
    return this._pageOffset;
  }
};
PageSelector.property.pageRange = {
  set: function set(value) {
    this.setPageRange(value);
  },
  get: function get() {
    return this._pageRange;
  }
};
PageSelector.prototype.init = function (props) {
  props = props || {};
  props.pageOffset = props.pageOffset || 1;
  props.pageRange = props.pageRange || 5;
  props.pageCount = props.pageCount || 15;
  props.selectedIndex = typeof props.selectedIndex == "number" ? props.selectedIndex : props.pageOffset;
  if (props.pageCount < props.pageRange) props.pageRange = props.pageCount;
  this.setPageCount(props.pageCount);
  this.setPageRange(props.pageRange);
  this.setStartPage(props.pageOffset);
  this.selectPage(props.selectedIndex);
  props = Object.assign({}, props);
  delete props.pageOffset;
  delete props.pageRange;
  delete props.pageCount;
  delete props.selectedIndex;
};
_ACore["default"].install(PageSelector);
var _default = PageSelector;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(95945);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _QuickMenu = _interopRequireDefault(__webpack_require__(8277));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
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 _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); }
/***
 * @extends AElement
 * @constructor
 */
function PathMenu() {
  this._path = [];
  this.$items = [];
}
PathMenu.tag = 'PathMenu'.toLowerCase();
PathMenu.render = function () {
  return (0, _ACore._)({
    attr: {
      tabindex: '1'
    },
    extendEvent: ['press', 'change'],
    "class": 'as-path-menu'
  });
};
PathMenu.prototype._makeItem = function (data, idx) {
  var self = this;
  var button = (0, _ACore._)({
    "class": ['as-ribbon-split-button', 'as-path-menu-item'],
    child: {
      "class": 'as-ribbon-split-button-content',
      child: [{
        tag: 'button',
        attr: {
          'tabindex': '-1'
        },
        "class": 'as-ribbon-split-button-primary',
        child: {
          tag: 'span',
          "class": 'as-ribbon-split-button-text',
          child: {
            text: (data.name || data.text || '') + ''
          }
        }
      }, {
        tag: 'button',
        attr: {
          'tabindex': '-1'
        },
        "class": 'as-ribbon-split-button-extend',
        child: ['span.mdi.mdi-chevron-right']
      }]
    }
  });
  button.on('mouseenter', function () {
    if (document.activeElement && _AElement["default"].prototype.isDescendantOf.call(document.activeElement, self) && self.hasClass('as-opening-item')) {
      if (button.quickMenu) button.quickMenu.open();
    }
  });
  var extendIconElt = (0, _ACore.$)('.as-ribbon-split-button-extend .mdi', button);
  var primaryBtn = (0, _ACore.$)('.as-ribbon-split-button-primary', button).on('click', function () {
    self.emit('press', {
      target: self,
      pathItem: data,
      index: idx
    }, self);
  });

  //as-ribbon-split-button-icon
  var icon = null;
  if (data.icon) {
    icon = (0, _ACore._)(data.icon);
  } else if (data.iconSrc) {
    icon = (0, _ACore._)({
      tag: 'img',
      props: {
        src: data.iconSrc
      }
    });
  }
  if (icon) {
    if (icon.parentElement) icon = (0, _ACore.$)(icon.cloneNode(true));
    icon.addClass('as-ribbon-split-button-icon');
    primaryBtn.addChildBefore(icon, primaryBtn.firstChild);
  }
  var quickTrigger = (0, _ACore.$)('.as-ribbon-split-button-extend', button);
  if (data.items && data.items.length > 0) {
    button.quickMenu = _QuickMenu["default"].toggleWhenClick(quickTrigger, {
      getMenuProps: function getMenuProps() {
        return {
          items: data.items.map(function (it, menuIndex) {
            if (typeof it === "string") return it;
            if (_typeof(it) === "object") {
              if (it.icon || it.iconSrc || it.name || it.text) {
                return {
                  text: it.name || it.text,
                  menuIndex: menuIndex,
                  icon: it.iconSrc ? {
                    tag: 'img',
                    props: {
                      src: it.iconSrc
                    }
                  } : it.icon || undefined,
                  extendStyle: it.extendStyle || {},
                  extendClass: it.extendClass || []
                };
              }
            }
            return it;
          })
        };
      },
      anchor: [1, 6, 0, 7],
      onOpen: function onOpen() {
        self.addClass('as-opening-item');
        extendIconElt.addClass('mdi-rotate-90');
      },
      onClose: function onClose() {
        self.removeClass('as-opening-item');
        extendIconElt.removeClass('mdi-rotate-90');
      },
      onSelect: function onSelect(item) {
        var dataItem = data.items[item.menuIndex];
        self.emit('change', {
          target: self,
          pathItem: data,
          item: dataItem,
          index: idx
        }, self);
        button.removeClass('as-open');
      }
    });
  } else {
    button.addClass('as-has-no-item');
  }
  return button;
};
PathMenu.property = {};
PathMenu.property.path = {
  set: function set(path) {
    var _this = this;
    this._path = path || [];
    this.$items.forEach(function (elt) {
      return elt.remove();
    });
    this.$items = this._path.map(function (it, i) {
      return _this._makeItem(it, i);
    });
    this.addChild(this.$items);
  },
  get: function get() {
    return this._path;
  }
};
_ACore["default"].install(PathMenu);
var _default = PathMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(95945);
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; }
/***
 * @extends AElement
 * @constructor
 */
function PathView() {
  this._items = [];
  this.$items = [];
}
PathView.tag = 'PathView'.toLowerCase();
PathView.render = function () {
  return (0, _ACore._)({
    extendEvent: ['press'],
    "class": 'as-path-view'
  });
};
PathView.property = {};
PathView.property.items = {
  set: function set(value) {
    var _this = this;
    this.clearChild();
    this._items = value || [];
    this.$items = this._items.map(function (item, i, array) {
      item = item || {};
      var $item = (0, _ACore._)({
        tag: 'button',
        "class": ['as-path-view-item'],
        child: []
      });
      if (item.icon) {
        $item.addChild((0, _ACore._)(item.icon).addClass('as-path-view-item-icon'));
      }
      if (item.text || item.name) {
        $item.addChild((0, _ACore._)({
          "class": 'as-path-view-item-text',
          child: {
            text: item.text || item.name || ''
          }
        }));
      }
      if (i < array.length - 1) {
        $item.addChild((0, _ACore._)({
          "class": 'as-path-view-item-arrow',
          child: 'span.mdi.mdi-chevron-right'
        }));
      }
      $item.on('click', function (event) {
        _this.emit('press', {
          item: item,
          index: i,
          items: array,
          type: 'click',
          value: item.value,
          originalEvent: event
        });
      });
      _this.$items.push($item);
      return $item;
    });
    this.addChild(this.$items);
  },
  get: function get() {
    return this._items;
  }
};
_ACore["default"].install(PathView);
var _default = PathView;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _AutoCompleteInput = _interopRequireDefault(__webpack_require__(54845));
var _PlaceSearchAutoCompleteAdapter = _interopRequireDefault(__webpack_require__(60335));
__webpack_require__(9656);
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; }
/***
 * @extends AutoCompleteInput
 * @constructor
 */
function PlaceSearchAutoCompleteInput() {
  this.$service = (0, _ACore._)('.as-place-search-auto-complete-input-service');
  this.insertBefore(this.$service, null);
  this.adapter = new _PlaceSearchAutoCompleteAdapter["default"](this);
}
PlaceSearchAutoCompleteInput.tag = 'PlaceSearchAutoCompleteInput'.toLowerCase();
PlaceSearchAutoCompleteInput.render = function () {
  return (0, _ACore._)({
    tag: _AutoCompleteInput["default"].tag
  }, true);
};
_ACore["default"].install(PlaceSearchAutoCompleteInput);
var _default = PlaceSearchAutoCompleteInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _Element = _interopRequireDefault(__webpack_require__(55781));
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; }
/***
 * @extends {AElement}
 * @constructor
 */
function PositionTracker() {
  this.defineEvent('positionchange');
  this.$trackScrollParents = [];
  this._scrollTrackEventHandler = this.notifyPositionChange.bind(this);
}
PositionTracker.tag = 'PositionTracker'.toLowerCase();

/***
 *
 * @return {AElement}
 */
PositionTracker.render = function () {
  return (0, _ACore._)('div');
};
PositionTracker.prototype.notifyPositionChange = function (event) {
  this.emit('positionchange', {
    type: 'positionchange',
    originEvent: event
  });
};
PositionTracker.prototype.startTrackPosition = function () {
  if (this.$trackScrollParents.length > 0) this.stopTrackPosition();
  var trackElt = this;
  while (trackElt) {
    if (trackElt.addEventListener) trackElt.addEventListener('scroll', this._scrollTrackEventHandler, false);else trackElt.attachEvent('onscroll', this._scrollTrackEventHandler, false);
    this.$trackScrollParents.push(trackElt);
    trackElt = trackElt.parentElement;
  }
  if (document.addEventListener) {
    document.addEventListener('scroll', this._scrollTrackEventHandler, false);
  } else {
    document.attachEvent('onscroll', this._scrollTrackEventHandler, false);
  }
  this.$trackScrollParents.push(document);
};
PositionTracker.prototype.stopTrackPosition = function () {
  var trackElt;
  for (var i = 0; i < this.$trackScrollParents.length; ++i) {
    trackElt = this.$trackScrollParents[i];
    if (trackElt.removeEventListener) trackElt.removeEventListener('scroll', this._scrollTrackEventHandler, false);else trackElt.dettachEvent('onscroll', this._scrollTrackEventHandler, false);
  }
  this.$trackScrollParents = [];
};
_ACore["default"].install(PositionTracker);
var _default = PositionTracker;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(80441);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _file = __webpack_require__(54134);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _printer = __webpack_require__(97397);
var _PrintSerialHandlers = __webpack_require__(1162);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var textDelay = _BrowserDetector["default"].isSafari ? 100 : 1;

/***
 * @extends AElement
 * @constructor
 */
function PreInput() {
  this.defineEvent(['pasteimg', 'pastetext', 'change']);
  this.on('paste', this.eventHandler.paste);
  this.on('keydown', this.eventHandler.keydown);
  this.history = [];
  this.value = '';
  this.historyIndex = -1;
  this.changePendingEvent = null;
  this.commitChange('', 0);
}
PreInput.tag = 'preinput';
PreInput.render = function () {
  return _({
    tag: 'pre',
    "class": 'as-preinput',
    attr: {
      contenteditable: 'true'
    },
    child: 'br'
  });
};
PreInput.prototype.notifyChange = function (data, originalEvent) {
  this.emit('change', Object.assign({
    type: 'change',
    target: this,
    originalEvent: originalEvent || this.changePendingEvent
  }, data));
  this.changePendingEvent = null;
};
PreInput.prototype.applyData = function (text, offset) {
  var textNode = _({
    text: text
  });
  this.clearChild().addChild(textNode).addChild(_('br'));
  if (document.activeElement === this && this.isDescendantOf(document.body)) {
    if (document.getSelection) {
      var sel = document.getSelection();
      sel.removeAllRanges();
      var range = document.createRange();
      if (typeof offset == 'number') {
        range.setStart(textNode, Math.min(text.length, offset));
      } else {
        range.setStart(textNode, Math.min(text.length, offset.start));
        range.setEnd(textNode, Math.min(text.length, offset.end));
      }
      sel.addRange(range);
      this.scrollIntoRange(range);
    } else {
      console.error("PreInput: Not support!");
    }
  }
};
PreInput.prototype.select = function (offset) {
  if (document.activeElement !== this) this.focus();
  this.applyData(this.value, offset);
};
PreInput.prototype.scrollIntoRange = function (range) {
  var elementBound = range.getBoundingClientRect();
  var viewportBound = this.getBoundingClientRect();
  var dBottom = 0;
  if (range.startContainer && range.startContainer.data && range.startContainer.data.charAt(range.startContainer.data.length - 1) == '\n') dBottom += this.getFontSize() * 1.5;
  var currentScrollTop = this.scrollTop;
  var newScrollTop = currentScrollTop;
  if (elementBound.bottom + dBottom > viewportBound.bottom) {
    newScrollTop = currentScrollTop + (elementBound.bottom + dBottom - viewportBound.bottom);
  }
  if (elementBound.top < viewportBound.top) {
    newScrollTop = currentScrollTop - (viewportBound.top - elementBound.top);
  }
  if (newScrollTop != currentScrollTop) {
    this.scrollTop = newScrollTop;
  }
  var currentScrollLeft = this.scrollLeft;
  var newScrollLeft = currentScrollLeft;
  if (elementBound.right > viewportBound.right) {
    newScrollLeft = currentScrollLeft + (elementBound.right - viewportBound.right);
  }
  if (elementBound.left < viewportBound.left) {
    newScrollLeft = currentScrollLeft - (viewportBound.left - elementBound.left);
  }
  if (newScrollLeft != currentScrollLeft) {
    this.scrollLeft = newScrollLeft;
  }
};
PreInput.prototype.undo = function () {
  if (this.historyIndex <= 0) return;
  this.historyIndex--;
  var record = this.history[this.historyIndex];
  this.applyData(record.text, record.offset);
  this.notifyChange({
    value: record.text,
    action: 'undo',
    record: record
  });
};
PreInput.prototype.redo = function () {
  if (this.historyIndex + 1 >= this.history.length) return;
  this.historyIndex++;
  var record = this.history[this.historyIndex];
  this.applyData(record.text, record.offset);
  this.notifyChange({
    value: record.text,
    action: 'redo',
    record: record
  });
};

/**
 *
 * @param text
 * @param offset
 * @param {Event=} event
 */
PreInput.prototype.commitChange = function (text, offset) {
  while (this.historyIndex < this.history.length - 1) {
    this.history.pop();
  }
  var lastText = this.history.length > 0 ? this.history[this.history.length - 1].text : null;
  if (text === lastText) {
    if (this.history[this.history.length - 1].offset != offset) this.history[this.history.length - 1].offset = offset;
  } else {
    this.historyIndex = this.history.length;
    var record = {
      text: text,
      offset: offset
    };
    this.history.push(record);
    this.notifyChange({
      value: record.text,
      action: 'commit',
      record: record
    });
  }
};

/**
 *
 * @param text
 * @param offset
 * @param {Event=} event
 */
PreInput.prototype.waitToCommit = function (text, offset, event) {
  var thisInput = this;
  if (this._commitTimeout > 0) clearTimeout(this._commitTimeout);
  this._commitTimeout = setTimeout(function () {
    thisInput.commitChange(text, offset);
  }, textDelay);
};
PreInput.prototype.getPosition = function (node, offset) {
  if (!node) return NaN;
  if (node == this) return offset;
  var parent = node.parentElement;
  if (!parent) return NaN;
  var text = '';
  var child;
  var lastBr = false;
  for (var i = 0; i < parent.childNodes.length; ++i) {
    child = parent.childNodes[i];
    if (child == node) break;
    text += this.stringOf(child);
  }
  return this.getPosition(parent, text.length + offset);
};
PreInput.prototype.getSelectPosition = function () {
  if (window.getSelection) {
    var sel = window.getSelection();
    if (sel.getRangeAt && sel.rangeCount) {
      var range = sel.getRangeAt(0);
      var direction = 'forward';
      var cmpPosition = sel.anchorNode.compareDocumentPosition(sel.focusNode);
      if (cmpPosition === 4) {
        direction = 'forward';
      } else if (cmpPosition === 2) {
        direction = 'backward';
      } else if (!cmpPosition && sel.anchorOffset > sel.focusOffset || cmpPosition === Node.DOCUMENT_POSITION_PRECEDING) {
        direction = 'backward';
      }
      var startOffset = this.getPosition(range.startContainer, range.startOffset);
      var endOffset = this.getPosition(range.endContainer, range.endOffset);
      if (isNaN(startOffset)) return null;
      return {
        start: startOffset,
        end: endOffset,
        direction: direction
      };
    }
  } else if (document.selection) {
    console.error('May not support!');
  }
};
PreInput.prototype.stringOf = function (node, parent) {
  if (!node) return '';
  if (node.nodeType === 3) {
    return node.data;
  }
  var res = '';
  if ((node.tagName === 'BR' || node.tagName === 'br') && parent && parent.lastChild !== node) {
    return '\n';
  } else if ((node.tagName === 'DIV' || node.tagName === 'div') && parent && parent.firstChild !== node) {
    res += '\n';
  }
  var thisInput = this;
  return res + Array.prototype.map.call(node.childNodes, function (cNode, index, arr) {
    return thisInput.stringOf(cNode, node);
  }).join('');
};
PreInput.prototype._pasteText = function (text) {
  var sel = window.getSelection();
  var range;
  if (window.getSelection) {
    sel = window.getSelection();
    if (sel.getRangeAt && sel.rangeCount) {
      try {
        range = sel.getRangeAt(0);
        range.deleteContents();
        var textNode = _({
          text: text
        });
        range.insertNode(textNode);
        if (sel.removeRange) {
          sel.removeRange(range);
        } else {
          sel.removeAllRanges();
        }
        range = document.createRange();
        range.setStart(textNode, text.length);
        sel.addRange(range);
        this.scrollIntoRange(range);
        this.commitChange(this.stringOf(this), this.getPosition(textNode, text.length));
      } catch (error) {
        alert(error.message);
      }
    }
  } else if (document.selection && document.selection.createRange) {
    document.selection.createRange().text = text;
    this.commitChange(this.stringOf(this), this.getPosition(textNode, text.length));
    console.error('May not support!');
  }
};

/**
 * @type {PreInput}
 */
PreInput.eventHandler = {};
PreInput.eventHandler.paste = function (event) {
  this.changePendingEvent = event;
  var thisIp = this;
  var clipboardData = event.clipboardData || window.clipboardData;
  /**Safari bug */
  if (clipboardData) {
    if (clipboardData.items) {
      var items = Array.prototype.slice.call(clipboardData.items);
      var imgItems = items.filter(function (item) {
        return item.type.indexOf('image') >= 0;
      });
      var plainTextItems = items.filter(function (item) {
        return item.type.indexOf('text/plain') >= 0;
      });
      if (imgItems.length > 0) {
        var imgFiles = imgItems.map(function (it) {
          return it.getAsFile();
        });
        this.emit('pasteimg', {
          target: this,
          imageFile: imgFiles[0],
          imageFiles: imgFiles,
          orginEvent: event
        }, this);
      } else if (plainTextItems.length > 0) {
        var plainTextItem = plainTextItems[0]; //only one item
        plainTextItem.getAsString(function (text) {
          thisIp._pasteText(text);
        });
      } else {
        window.ABSOL_DEBUG && console.error("Can not handle clipboard data");
      }
      event.preventDefault();
    } else {
      var text = event.clipboardData.getData('text/plain');
      if (text) {
        event.preventDefault();
        this._pasteText(text);
      } else {
        var currentText = this.stringOf(this);
        var currentSelection = this.getSelectPosition();
        setTimeout(function () {
          var images = [];
          $('img', thisIp, function (elt) {
            images.push(elt);
          });
          Promise.all(images.map(function (img) {
            return _Dom["default"].imageToCanvas(img).then(function (canvas) {
              var dataURI = canvas.toDataURL();
              var blob = (0, _file.dataURItoBlob)(dataURI);
              var file = (0, _file.blobToFile)(blob);
              return {
                file: file,
                blob: blob,
                url: dataURI
              };
            }, function (error) {
              console.error(error);
            })["catch"](function (error) {
              console.error(error);
            });
          })).then(function (results) {
            results = results.filter(function (it) {
              return !!it;
            });
            if (results.length > 0) {
              var imgFiles = results.map(function (it) {
                return it.file;
              });
              var urls = results.map(function (it) {
                return it.url;
              });
              thisIp.emit('pasteimg', {
                target: this,
                imageFile: imgFiles[0],
                imageFiles: imgFiles,
                urls: urls,
                url: urls[0],
                orginEvent: event
              }, thisIp);
            }
          });
          thisIp.applyData(currentText, currentSelection);
        }, textDelay);
      }
    }
  } else {
    setTimeout(function () {
      if (window.getSelection) {
        var sel = window.getSelection();
        if (sel.getRangeAt && sel.rangeCount) {
          var range = sel.getRangeAt(0);
          var text = this.stringOf(this);
          var offset = this.getPosition(range.startContainer, range.startOffset);
          this.waitToCommit(text, offset);
        }
      } else if (document.selection) {
        console.error('May not support!');
      }
    }.bind(this), textDelay);
  }
};
PreInput.eventHandler.keydown = function (event) {
  this.changePendingEvent = event;
  if (event.ctrlKey) {
    switch (event.key) {
      case 'z':
        this.undo();
        event.preventDefault();
        break;
      case 'y':
        this.redo();
        event.preventDefault();
        break;
      default:
        break;
    }
  }
  if (!event.ctrlKey && !event.altKey) {
    setTimeout(function () {
      if (window.getSelection) {
        var sel = window.getSelection();
        if (sel.getRangeAt && sel.rangeCount) {
          var range = sel.getRangeAt(0);
          var text = this.stringOf(this);
          var offset = this.getPosition(range.startContainer, range.startOffset);
          this.waitToCommit(text, offset);
        }
      } else if (document.selection) {
        console.error('May not support!');
      }
    }.bind(this), textDelay);
  }
};
PreInput.property = {};
PreInput.property.value = {
  set: function set(value) {
    value = value || '';
    this.applyData(value, value.length);
    this.commitChange(value, value.length);
  },
  get: function get() {
    return this.stringOf(this);
  }
};
PreInput.property.disabled = {
  set: function set(value) {
    value = !!value;
    if (value === this.hasClass('as-disabled')) return;
    if (value) {
      this.addClass('as-disabled');
      this.attr({
        contenteditable: undefined,
        oncut: 'return false',
        onpaste: 'return false',
        onkeydown: 'if(event.metaKey) return true; return false;'
      });
    } else {
      this.removeClass('as-disabled');
      this.attr({
        contenteditable: true,
        oncut: undefined,
        onpaste: undefined,
        onkeydown: undefined
      });
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
PreInput.property.readOnly = {
  set: function set(value) {
    value = !!value;
    if (value === this.hasClass('as-read-only')) return;
    if (value) {
      this.addClass('as-read-only');
      this.attr({
        contenteditable: undefined,
        oncut: 'return false',
        onpaste: 'return false',
        onkeydown: 'if(event.metaKey) return true; return false;'
      });
    } else {
      this.removeClass('as-read-only');
      this.attr({
        contenteditable: true,
        oncut: undefined,
        onpaste: undefined,
        onkeydown: undefined
      });
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
_ACore["default"].install(PreInput);
var _default = PreInput;
/*

ShareSerializer.addHandlerBefore({
    id: 'PreInput',
    match: (elt, scope, stack) => {
        if (elt.nodeType !== Node.ELEMENT_NODE) return false;
        return elt.hasClass('as-preinput') || elt.hasClass('as-tokenize-hyper-input');
    },
    exec: (printer, elt, scope, stack, accept) => {
        var O = printer.O;
        var printAttr = computePrintAttr(elt);
        var rect = printAttr.contentBound;
        rect.x -= O.x;
        rect.y -= O.y;

        printer.text(PreInput.prototype.stringOf(elt), rect, printAttr.style);
        return false;
    }
}, '*');

 */
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
__webpack_require__(64214);
var _utils = __webpack_require__(84512);
/***
 * @extends AElement
 * @constructor
 */
function ProcessLBar() {
  this.$stepCtn = (0, _ACore.$)('.as-process-l-bar-step-ctn', this);
  this.$stepName = (0, _ACore.$)('.as-process-l-bar-step-name', this);
  this.$items = [];
  this._items = [];
  this._lHeight = 3;
  this._value = null;
}
ProcessLBar.tag = 'ProcessLBar'.toLowerCase();
ProcessLBar.render = function () {
  return (0, _ACore._)({
    "class": 'as-process-l-bar',
    extendEvent: 'change',
    child: [{
      "class": 'as-process-l-bar-step-ctn'
    }, {
      "class": 'as-process-l-bar-step-name'
    }]
  });
};
ProcessLBar.prototype._updateCol = function () {
  var colN = Math.max(this.$items.length - this._lHeight + 1, 0);
  while (this.$stepCtn.childNodes.length > colN) {
    this.$stepCtn.lastChild.remove();
  }
  while (this.$stepCtn.childNodes.length < colN) {
    this.$stepCtn.addChild((0, _ACore._)('.as-process-l-bar-col'));
  }
  var i;
  for (i = 0; i < colN; ++i) {
    this.$stepCtn.childNodes[i].clearChild().addChild(this.$items[i]);
  }
  for (i = colN; i < this.$items.length; ++i) {
    this.$stepCtn.lastChild.addChild(this.$items[i]);
  }
  this.nameWidth = this._items.reduce(function (ac, cr) {
    return Math.max(ac, (0, _utils.measureText)(cr.name, 'bold 14px Arial, Helvetica, sans-serif').width);
  }, 0);
  if (colN <= 1) {
    this.addClass('as-col-layout');
  } else {
    this.removeClass('as-col-layout');
  }
  if (colN <= 2) {
    this.addStyle('--as-process-l-bar-item-min-width', this.nameWidth + 'px');
  } else {
    this.addStyle('--as-process-l-bar-item-min-width', (this.nameWidth + 10) / (colN - 1) - 10 + 'px');
  }
};
ProcessLBar.prototype._updateValue = function () {
  var value = this._value;
  this.$items.forEach(function (elt) {
    if (elt.itemData.value === value) {
      elt.addClass('as-active');
      this.$stepName.clearChild().addChild((0, _ACore._)({
        tag: 'span',
        child: {
          text: elt.itemData.name
        }
      }));
    } else {
      elt.removeClass('as-active');
    }
  }.bind(this));
};
ProcessLBar.prototype.notifyChange = function (originalEvent) {
  this.emit('change', {
    type: 'change',
    target: this,
    originalEvent: originalEvent || null
  }, this);
};
ProcessLBar.prototype._makeItem = function (item) {
  var self = this;
  var stepElt = (0, _ACore._)({
    "class": 'as-process-l-bar-step',
    attr: {
      title: item.name
    },
    props: {
      itemData: item
    },
    on: {
      click: function click(event) {
        if (self.disabled) return;
        var value = this._value;
        if (item.value === value) return;
        self.value = item.value;
        self.notifyChange(event);
      }
    }
  });
  if (item.color) {
    stepElt.addStyle('--as-process-l-bar-active-color', item.color);
  }
  return stepElt;
};
ProcessLBar.property = {};
ProcessLBar.property.items = {
  set: function set(items) {
    items = items || [];
    this._items = items;
    this.$itemByValue = {};
    this.$items = this._items.map(function (item) {
      return this._makeItem(item);
    }.bind(this));
    this._updateCol();
    this._updateValue();
  },
  get: function get() {
    return this._items;
  }
};
ProcessLBar.property.value = {
  set: function set(value) {
    this._value = value;
    this._updateValue();
  },
  get: function get() {
    return this._value;
  }
};
ProcessLBar.property.lHeight = {
  set: function set(value) {
    this._lHeight = value;
    if (value === 1) {
      this.addClass('as-single-line');
    } else {
      this.removeClass('as-single-line');
    }
    this._updateCol();
  },
  get: function get() {
    return this._lHeight;
  }
};
ProcessLBar.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
var _default = ProcessLBar;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(20487);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function ProgressBar() {
  this._value = 0;
  this._variant = null;
  this.$value = $('.as-progress-bar-value', this);
  this._striped = false;
  this._animated = false;
}
ProgressBar.tag = 'ProgressBar'.toLowerCase();
ProgressBar.render = function () {
  return _({
    "class": 'as-progress-bar',
    child: {
      "class": 'as-progress-bar-value'
    }
  });
};
ProgressBar.property = {};

/**
 * @type {ProgressBar}
 */
ProgressBar.property.variant = {
  set: function set(value) {
    if (this._variant) {
      this.removeClass('as-variant-' + this._variant);
    }
    if (value) {
      this.addClass('as-variant-' + value);
    } else {
      value = null;
    }
    this._variant = value;
  },
  get: function get() {
    return this._variant;
  }
};

/**
 * @type {ProgressBar}
 */
ProgressBar.property.value = {
  set: function set(value) {
    value = Math.max(0, Math.min(1, value || 0));
    this._value = value;
    this.$value.addStyle('width', value * 100 + '%');
  },
  get: function get() {
    return this._value;
  }
};
ProgressBar.property.animated = {
  set: function set(value) {
    value = !!value;
    this._striped = value;
    if (value) {
      this.addClass('as-animated');
    } else {
      this.removeClass('as-animated');
    }
  },
  get: function get() {
    return this._animated;
  }
};
ProgressBar.property.striped = {
  set: function set(value) {
    value = !!value;
    this._striped = value;
    if (value) {
      this.addClass('as-striped');
    } else {
      this.removeClass('as-striped');
    }
  },
  get: function get() {
    return this._striped;
  }
};
_ACore["default"].install(ProgressBar);
var _default = ProgressBar;
exports["default"] = _default;

/***/ }),

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

"use strict";


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;
__webpack_require__(20487);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
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 _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function ProgressCircle() {
  this._text = 'Loading\n$value';
  this._value = 0;
  this._variant = null;
  this._viewValue = 0;
  this.$pie = $('.as-progress-circle-pie', this);
  this.$inner = $('.as-progress-circle-inner', this);
  this.$end = $('.as-progress-circle-end', this);
  this.$text = $('.as-progress-circle-text', this);
  this._animated = true;
}
ProgressCircle.tag = 'ProgressCircle'.toLowerCase();
ProgressCircle.render = function () {
  return _({
    "class": 'as-progress-circle',
    child: ['.as-progress-circle-start', '.as-progress-circle-pie', '.as-progress-circle-end', {
      "class": 'as-progress-circle-inner',
      child: {
        "class": 'as-progress-circle-text',
        child: {
          text: ''
        }
      }
    }]
    // child: {
    //     class: 'as-progress-bar-value'
    // }
  });
};

ProgressCircle.property = {};
ProgressCircle.prototype._updateValue = function () {
  var _this = this;
  if (Math.abs(this._value - this._viewValue) < 0.05 || !this._animated) this._viewValue = this._value;else {
    if (this._value > this._viewValue) this._viewValue += 0.05;else this._viewValue -= 0.05;
  }
  var value = this._viewValue;
  var angle = Math.PI * (-0.5 + value * 2);
  var cosAngle = Math.cos(angle);
  var sinAngle = Math.sin(angle);
  var pl = 'polygon(50% 0%, 100% 0%, ';
  if (value >= 0.25) pl += '100% 100%, ';
  if (value >= 0.5) pl += '0% 100%, ';
  if (value >= 0.75) pl += '0% 0%, ';
  pl += "".concat(50 + 50 * cosAngle, "% ").concat(50 + 50 * sinAngle, "%");
  pl += ', 50% 50%)';
  this.$pie.addStyle('clipPath', pl);
  this.$end.addStyle({
    left: "calc(".concat(50 + 50 * cosAngle, "% - ").concat((cosAngle + 1) * 0.8 / 2, "em)"),
    top: "calc(".concat(50 + 50 * sinAngle, "% - ").concat((sinAngle + 1) * 0.8 / 2, "em)")
  });
  if (this._value !== this._viewValue) {
    requestAnimationFrame(function () {
      return _this._updateValue();
    });
  }
};
ProgressCircle.prototype._updateText = function () {
  var value = this._value;
  var text = this._text;
  text = text.replace('$value', Math.round(value * 100) + '%');
  this.$text.firstChild.data = text;
};

/**
 * @type {ProgressCircle}
 */
ProgressCircle.property.variant = {
  set: function set(value) {
    if (this._variant) {
      this.removeClass('as-variant-' + this._variant);
    }
    if (value) {
      this.addClass('as-variant-' + value);
    } else {
      value = null;
    }
    this._variant = value;
  },
  get: function get() {
    return this._variant;
  }
};
ProgressCircle.property.value = {
  /**
   * @this ProgressCircle
   * @param value
   */
  set: function set(value) {
    value = Math.max(0, Math.min(1, value || 0));
    this._value = value;
    this._updateValue();
    this._updateText();
  },
  get: function get() {
    return this._value;
  }
};
ProgressCircle.property.text = {
  set: function set(value) {
    value = value || '';
    if (typeof value !== "string") value = '';
    this._text = value;
    this._updateText();
  },
  get: function get() {
    return this._text;
  }
};
ProgressCircle.property.animated = {
  set: function set(value) {
    value = !!value;
    this._animated = value;
    if (value) {
      this.addClass('as-animated');
    } else {
      this.removeClass('as-animated');
    }
  },
  get: function get() {
    return this._animated;
  }
};
_ACore["default"].install(ProgressCircle);
var _default = ProgressCircle;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(97775);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _FollowerToggler = _interopRequireDefault(__webpack_require__(49049));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/****
 * @extends FollowerToggler
 * @constructor
 */
function QuickListButton() {
  this.$shareFollower = QuickListButton.getFollower();
  _({
    tag: 'followertoggler',
    elt: this,
    on: {
      preopen: this.eventHandler.preopen,
      close: this.eventHandler.closeFollower
    }
  });
  this.bindFollower(this.$shareFollower);
  this.$iconCtn.remove();
  this.$content.addChild(this.$iconCtn);
  this._items = this._items;
  this._anchor = [];
  this.$list = null;
  this._listUpdated = true;
  this._opened = false;
  this.anchor = [12, 13, 15, 14]; //todo: add property
}

QuickListButton.getFollower = function () {
  if (!QuickListButton.$follower) QuickListButton.$follower = _('follower.as-quick-list-button-follower');
  QuickListButton.$follower.cancelWaiting();
  return QuickListButton.$follower;
};
QuickListButton.tag = 'QuickListButton'.toLowerCase();
QuickListButton.render = function () {
  return _({
    tag: 'flexiconbutton',
    "class": 'as-quick-list-button',
    extendEvent: 'select',
    props: {
      text: "+ Thêm",
      icon: 'span.mdi.mdi-menu-down'
    }
  });
};
QuickListButton.property = {};
QuickListButton.property.items = {
  set: function set(value) {
    value = value || [];
    this._items = value;
    this._listUpdated = false;
  },
  get: function get() {
    return this._items;
  }
};

/**
 * @type {QuickListButton}
 */
QuickListButton.eventHandler = {};
QuickListButton.eventHandler.preopen = function () {
  this.$shareFollower.addTo(document.body);
  this.$shareFollower.anchor = this.anchor;
  if (this.$list == null) {
    this.$list = _('selectlist.absol-bscroller').on('pressitem', this.eventHandler.pressitem);
  }
  if (!this._listUpdated) {
    this._listUpdated = true;
    this.$list.items = this._items;
  }
  this.$shareFollower.addChild(this.$list);
  this.$shareFollower.on({
    preupdateposition: this.eventHandler.preUpdatePosition
  });
};
QuickListButton.eventHandler.preUpdatePosition = function () {
  var bound = this.getBoundingClientRect();
  var screenSize = _Dom["default"].getScreenSize();
  var maxHeight = Math.max(screenSize.height - bound.bottom, bound.top) - 10;
  this.$list.addStyle('max-height', maxHeight + 'px');
};
QuickListButton.eventHandler.closeFollower = function () {
  this.$shareFollower.off({
    preupdateposition: this.eventHandler.preUpdatePosition
  });
};
QuickListButton.eventHandler.pressitem = function (event) {
  this.close();
  this.emit('select', Object.assign({}, event, {
    type: 'select',
    target: this
  }));
};
_ACore["default"].install(QuickListButton);
var _default = QuickListButton;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.QuickMenuInstance = QuickMenuInstance;
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _Dom = _interopRequireWildcard(__webpack_require__(64821));
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
__webpack_require__(26155);
var _utils = __webpack_require__(84512);
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _EventEmitter = __webpack_require__(46833);
var _safeThrow = _interopRequireDefault(__webpack_require__(628));
var _noop = _interopRequireDefault(__webpack_require__(5025));
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 isMobile = _BrowserDetector["default"].isMobile;
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function QuickMenu() {
  //like context menu without right-click
  this._contextMenuSync = Promise.resolve();
}
QuickMenu.tag = 'QuickMenu'.toLowerCase();
QuickMenu.render = function () {
  return _({
    tag: 'vmenu',
    extendEvent: 'requestcontextmenu',
    "class": ['as-quick-menu', 'as-bscroller'],
    style: {
      'overflow-y': 'auto',
      'box-sizing': 'border-box'
    }
  });
};
_ACore["default"].install(QuickMenu);

/***
 *
 * @param {AElement} elt
 * @param opt
 * @constructor
 */
function QuickMenuInstance(elt, opt) {
  this.id = (Math.random() * 10000 >> 0) + '' + new Date().getTime();
  /***
   *
   * @type {"OPEN"|"CLOSE"}
   */
  this.state = 'CLOSE';
  this._willAddClickOut = -1;
  this.elt = elt;
  this.opt = opt;
  for (var key in this) {
    if (key.startsWith('_on')) {
      this[key] = this[key].bind(this);
    }
  }
  this._init();
}
QuickMenuInstance.prototype._init = function () {
  var _this = this;
  this.elt.classList.add('as-quick-menu-trigger');
  if (this.opt.triggerEvent === 'mousedown') $(this.elt).on('contextmenu', function (event) {
    event.preventDefault();
  }).attr('oncontextmenu', "return false;");
  if (this.opt.triggerEvent) {
    this.elt.addEventListener(this.opt.triggerEvent, this._onClick, true);
  } else this.elt.addEventListener('click', this._onClick, true);
  if (!this.elt.revokeResource) {
    this.elt.revokeResource = function () {
      _this.elt.revokeResource = _noop["default"];
      _this.remove();
    };
  }
};
QuickMenuInstance.prototype._deinit = function () {
  if (this.state === "OPEN") this.close();
  this.elt.classList.remove('as-quick-menu-trigger');
  if (this.opt.triggerEvent) {
    this.elt.removeEventListener(this.opt.triggerEvent, this._onClick, true);
  } else {
    this.elt.removeEventListener('click', this._onClick, true);
  }
  this.elt = null;
  this.opt = null;
  for (var key in this) {
    if (key.startsWith('_on')) {
      this[key] = _noop["default"];
    }
  }
};
QuickMenuInstance.prototype.getMenuProps = function () {
  var props;
  if (this.opt.getMenuProps) {
    props = this.opt.getMenuProps();
  } else {
    props = this.opt.menuProps;
  }
  props = props || {};
  return Object.assign({
    extendClasses: [],
    extendStyle: {}
  }, props);
};
QuickMenuInstance.prototype.remove = function () {
  this._deinit();
};
QuickMenuInstance.prototype._onClick = function (event) {
  if (this.opt.triggerEvent === 'mousedown') {
    event.preventDefault();
  }
  var event = (0, _EventEmitter.copyEvent)(event, {
    canceled: false,
    cancel: function cancel() {
      this.canceled = true;
    }
  });
  if (this.opt.onClick) {
    this.opt.onClick.call(this, event);
  }
  if (!event.canceled) this.toggle();
};
QuickMenuInstance.prototype._onClickOut = function (event) {
  if ((0, _EventEmitter.hitElement)(this.elt, event) || (0, _EventEmitter.hitElement)(QuickMenu.$elt, event)) return;
  this.close();
};
QuickMenuInstance.prototype.onSelect = function (item) {
  item = item.__originalItem__ || item;
  if (item.items && item.items.length > 0) return;
  if (this.opt.onSelect) this.opt.onSelect(item);
  this.close();
};
QuickMenuInstance.prototype.open = function () {
  var _this2 = this;
  if (QuickMenu.runningInstance === this) return;
  if (this.state !== "CLOSE") return;
  if (QuickMenu.runningInstance) QuickMenu.runningInstance.close();
  QuickMenu.runningInstance = this;
  this.state = 'OPEN';
  this.elt.classList.add('as-quick-menu-attached');
  this._willAddClickOut = setTimeout(function () {
    _this2._willAddClickOut = -1;
    document.addEventListener('click', _this2._onClickOut, false);
    followerElt.updatePosition();
    menuElt.addStyle('visibility', 'visible');
  }, isMobile ? 33 : 2);
  var anchor = this.getAnchor();
  var followerElt = QuickMenu.$follower;
  var menuElt = QuickMenu.$elt;
  this.originProps = this.getMenuProps();
  this.copyProps = Object.assign({}, this.originProps);
  this.copyProps.items = this.originProps.items || [];
  this.copyProps.items = this.copyProps.items.map(function visit(item) {
    var cpyItem = item;
    if (typeof item === "string") cpyItem = item;else if (item && typeof item.text === "string") {
      cpyItem = Object.assign({
        __originalItem__: item
      }, item);
      if (cpyItem.items && cpyItem.items.map) cpyItem.items = cpyItem.items.map(visit);
    }
    return cpyItem;
  });
  Object.assign(menuElt, this.copyProps);
  followerElt.addClass('absol-active');
  if (anchor === 'modal') {
    followerElt.addClass('as-anchor-modal');
    followerElt.anchor = [];
  } else {
    followerElt.removeClass('as-anchor-modal');
    followerElt.anchor = anchor;
  }
  this._onSizeNeedUpdate();
  QuickMenu.$follower.on('preupdateposition', this._onSizeNeedUpdate);
  followerElt.followTarget = this.elt;
  followerElt.sponsorElement = this.elt;
  menuElt.addStyle('visibility', 'hidden');
  followerElt.addTo(document.body);
  followerElt.addClass('absol-active');
  if (this.opt.onOpen) {
    try {
      this.opt.onOpen.call(this);
    } catch (err) {
      (0, _safeThrow["default"])(err);
    }
  }
};
QuickMenuInstance.prototype.close = function () {
  if (QuickMenu.runningInstance !== this) return;
  if (this.state !== "OPEN") return;
  if (this.opt.onClose) {
    try {
      this.opt.onClose.call(this);
    } catch (err) {
      (0, _safeThrow["default"])(err);
    }
  }
  this.state = 'CLOSE';
  this.elt.classList.remove('as-quick-menu-attached');
  QuickMenu.$elt.removeStyle('--available-height');
  var followerElt = QuickMenu.$follower;
  followerElt.addClass('absol-active');
  followerElt.remove();
  QuickMenu.$follower.off('preupdateposition', this._onSizeNeedUpdate);
  if (this._willAddClickOut >= 0) {
    clearTimeout(this._willAddClickOut);
  } else {
    document.removeEventListener('click', this._onClickOut, false);
  }
  QuickMenu.runningInstance = null;
};
QuickMenuInstance.prototype._onSizeNeedUpdate = function () {
  var _this3 = this;
  (0, _ACore.$$)('VMenuItem'.toLowerCase(), QuickMenu.$elt).forEach(function (e) {
    if (e.autoFixParentSize) e.autoFixParentSize();
  });
  var screenSize = (0, _Dom.getScreenSize)();
  var eltBound = this.elt.getBoundingClientRect();
  var outRect = (0, _Dom.traceOutBoundingClientRect)(this.elt);
  var isOut = false;
  if (eltBound.left > outRect.right || eltBound.right < outRect.left || eltBound.top > outRect.bottom || eltBound.bottom < outRect.top) isOut = true;
  if (isOut || !eltBound.width && !eltBound.height) {
    setTimeout(function () {
      _this3.close();
    }, 0);
  }
  var aTop = eltBound.bottom;
  var aBottom = screenSize.height - eltBound.top;
  QuickMenu.$elt.addStyle('--available-height', Math.max(aTop, aBottom) - 10 + 'px');
};
QuickMenuInstance.prototype.toggle = function () {
  if (this.state === "OPEN") {
    this.close();
  } else if (this.state === 'CLOSE') {
    this.open();
  }
};
QuickMenuInstance.prototype.getAnchor = function () {
  var menuAnchors;
  var anchor = this.opt.getAnchor ? this.opt.getAnchor() : this.opt.anchor;
  if (typeof anchor == 'number') {
    menuAnchors = [anchor];
  } else if (anchor instanceof Array) {
    menuAnchors = anchor;
  } else if (anchor === 'modal') {
    menuAnchors = 'modal';
  } else {
    menuAnchors = QuickMenu.PRIORITY_ANCHORS;
  }
  return menuAnchors;
};
QuickMenu.PRIORITY_ANCHORS = [0, 3, 7, 4, 1, 2, 6, 5];
QuickMenu.$elt = _('quickmenu');
/***
 *
 * @type {Follower}
 */
QuickMenu.$follower = _({
  tag: _Follower["default"].tag,
  "class": 'absol-context-menu-anchor',
  child: QuickMenu.$elt,
  on: {
    preupdateposition: function preupdateposition() {
      var bound = this.getBoundingClientRect();
      var outBound = (0, _Dom.traceOutBoundingClientRect)(this);
      if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) {
        QuickMenu.close(QuickMenu._session);
      }
    }
  }
});
QuickMenu.$follower.cancelWaiting();

/***
 *
 * @type {null|QuickMenuInstance}
 */
QuickMenu.runningInstance = null;
QuickMenu._session = Math.random() * 10000000000 >> 0;
QuickMenu._menuListener = undefined;
QuickMenu.$elt.on('press', function (event) {
  if (QuickMenu.runningInstance) QuickMenu.runningInstance.onSelect((0, _utils.cleanMenuItemProperty)(event.menuItem));
  if (QuickMenu._menuListener) QuickMenu._menuListener((0, _utils.cleanMenuItemProperty)(event.menuItem));
});
QuickMenu.show = function (element, menuProps, anchor, menuListener, darkTheme) {
  var instance = new QuickMenuInstance(element, {
    menuProps: menuProps,
    anchor: anchor,
    onSelect: menuListener,
    darkTheme: darkTheme
  });
  instance.open();
};
QuickMenu.close = function (session) {
  if (QuickMenu.runningInstance && QuickMenu.runningInstance.id === session) QuickMenu.runningInstance.close();
};
QuickMenu.showWhenClick = function (element, menuProps, anchor, menuListener, darkTheme) {
  return new QuickMenuInstance(element, {
    menuProps: menuProps,
    anchor: anchor,
    onSelect: menuListener,
    darkTheme: darkTheme
  });
};

/**
 * @typedef {Object} QuickMenuAdaptor
 * @property {Function} getFlowedElement default is trigger
 * @property {Function} getMenuProps define menuProps if un-change
 * @property {Function} getAnchor default is 'auto', define anchor if un-change
 * @property {Function} onClose callback
 * @property {Function} onOpen callback
 * @property {Function} onSelect calback
 * @property {Function} isDarkTheme default is false, define darkThem if un-change
 *
 *
 * @typedef {Object} QuickMenuDataHolder
 * @property {Function} remove
 *
 * @param {Element} trigger
 * @param {QuickMenuAdaptor} adaptor
 * @returns {QuickMenuDataHolder}
 */
QuickMenu.toggleWhenClick = function (trigger, adaptor) {
  return new QuickMenuInstance(trigger, adaptor);
};
var _default = QuickMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(83293);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _QuickMenu = _interopRequireDefault(__webpack_require__(8277));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function QuickPath() {
  this._holders = [];
}

/**
 * @type {QuickPath}
 */
QuickPath.eventHandler = {};

/***
 * @this QuickPath
 * @param event
 */
QuickPath.eventHandler.click = function (event) {
  var button = this._fileButton(event.target);
  if (button) this.pressButton(button);
};
QuickPath.tag = 'QuickPath'.toLowerCase();

/**
 * @returns {QuickPath}
 */
QuickPath.render = function () {
  return _({
    "class": 'absol-quick-path',
    extendEvent: ['change', 'press']
  });
};
QuickPath.prototype.updatePath = function () {
  this.clearChild();
  var self = this;
  this._holders = this._path.map(function (data, index) {
    var holder = self._createButton(data, index);
    holder.buttom.addTo(self);
    return holder;
  });
};
QuickPath.prototype._createButton = function (pathItem, index) {
  var buttom = _({
    tag: 'expnode',
    "class": 'absol-quick-path-btn',
    attr: {
      'data-index': '' + index
    }
  });
  buttom.status = 'close';
  buttom.name = pathItem.name;
  if (pathItem.icon) {
    buttom.icon = pathItem.icon;
  }
  if (pathItem.iconSrc) {
    buttom.icon = {
      tag: 'img',
      props: {
        src: pathItem.iconSrc
      }
    };
  }
  var thisQuickpath = this;
  if (pathItem.items) {
    _QuickMenu["default"].toggleWhenClick(buttom, {
      getAnchor: function getAnchor() {
        return [1, 2, 6, 5];
      },
      getMenuProps: function getMenuProps() {
        return {
          extendStyle: {
            fontSize: buttom.getComputedStyleValue('font-size')
          },
          items: pathItem.items.map(function (it, menuIndex) {
            var res = {
              text: it.name,
              menuIndex: menuIndex,
              icon: it.iconSrc ? {
                tag: 'img',
                props: {
                  src: it.iconSrc
                }
              } : it.icon || undefined,
              extendStyle: it.extendStyle || {},
              extendClass: it.extendClass || []
            };
            return res;
          })
        };
      },
      onOpen: function onOpen() {
        buttom.status = 'open';
        thisQuickpath.emit('press', {
          target: thisQuickpath,
          pathItem: pathItem,
          index: index
        }, thisQuickpath);
      },
      onClose: function onClose() {
        buttom.status = 'close';
      },
      onSelect: function onSelect(item) {
        var dataItem = pathItem.items[item.menuIndex];
        thisQuickpath.emit('change', {
          target: thisQuickpath,
          pathItem: pathItem,
          item: dataItem,
          index: index
        }, thisQuickpath);
        thisQuickpath.status = 'close';
      }
    });
  } else {
    buttom.on('click', function () {
      this.emit('press', {
        target: thisQuickpath,
        pathItem: pathItem,
        index: index
      }, thisQuickpath);
    });
  }
  return {
    buttom: buttom
  };
};
QuickPath.prototype.push = function (item) {
  this.path.push(item);
  var holder = this._createButton(item, this.path.length - 1);
  this.addChild(holder, buttom);
  this._holders.push(holder);
};
QuickPath.prototype.clear = function () {
  this.path = [];
  this._holders = [];
};
QuickPath.prototype.pop = function () {
  //todo
  var res = this.path.pop();
  var button = $('button[data-index="' + this.path.length + '"]');
  if (button) button.remove();
  return res;
};
QuickPath.property = {};

/**
 * @typedef PathElement
 * @property {String} name
 * @property {String} icon
 * @property {Array<String>} items
 *
 */

QuickPath.property.path = {
  /**
   * @param {Array<PathElement>} value
   */
  set: function set(value) {
    this._path = value || [];
    this.updatePath();
  },
  get: function get() {
    return this._path || [];
  }
};
QuickPath.property.textPath = {
  get: function get() {
    return this.path.join('/');
  }
};
_ACore["default"].install('quickpath', QuickPath);
var _default = QuickPath;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(88316);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _RadioButton = _interopRequireDefault(__webpack_require__(30348));
var _Svg = _interopRequireDefault(__webpack_require__(98315));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _printer = __webpack_require__(97397);
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var $$ = _ACore["default"].$$;
var _svg = _Svg["default"].ShareInstance._;

/***
 * @extends AElement
 * @constructor
 */
function Radio() {
  var thisR = this;
  this.defineEvent('change');
  this.$input = $('input', this).on('change', this.notifyChange.bind(this));
  this.$labels = $$('span', this);
  _OOP["default"].drillProperty(this, this.$input, ['value', 'checked']);
}
Radio.tag = 'radio';
Radio.radioProto = _('<svg class="absol-radio-icon" width="20" height="20" version="1.1" viewBox="0 0 5.2917 5.2917"' + '   xmlns="http://www.w3.org/2000/svg">' + '    <g transform="translate(0 -291.71)">' + '        <circle class="bound" cx="2.6458" cy="294.35" r="2.4626" style="stroke-opacity:.99497;stroke-width:.26458;" />' + '        <circle class="dot" cx="2.6458" cy="294.35"  r= "0.92604" style="fill-rule:evenodd;" />' + '    </g>' + '</svg>');
Radio.render = function () {
  return _({
    tag: 'label',
    "class": 'absol-radio',
    child: [{
      tag: 'input',
      attr: {
        type: 'radio'
      }
    }, {
      tag: 'span',
      "class": 'absol-radio-left-label'
    }, Radio.radioProto.cloneNode(true), {
      tag: 'span',
      "class": 'absol-radio-right-label'
    }]
  });
};
Radio.prototype.notifyChange = function () {
  this.emit('change', {
    type: 'change',
    checked: this.checked,
    target: this
  }, this);
};
Radio.prototype.getAllFriend = function () {
  return Radio.getAllByName(this.name);
};
Radio.attribute = _RadioButton["default"].attribute;
Radio.property = {
  name: {
    set: function set(name) {
      this.$input.setAttribute('name', name);
    },
    get: function get() {
      return this.$input.getAttribute('name');
    }
  },
  text: {
    set: function set(value) {
      value = (value || '').trim();
      this.$labels[0].clearChild();
      this.$labels[1].clearChild();
      if (value) {
        this.$labels[0].addChild(_({
          text: value
        }));
        this.$labels[1].addChild(_({
          text: value
        }));
      }
    },
    get: function get() {
      return this.$labels[0].firstChild.data;
    }
  },
  disabled: {
    set: function set(value) {
      this.$input.disabled = !!value;
      if (value) {
        this.addClass('disabled');
      } else {
        this.removeClass('disabled');
      }
    },
    get: function get() {
      return this.$input.disabled;
    }
  }
};
Radio.getAllByName = function (name) {
  return (Array.apply(null, document.getElementsByTagName('input')) || []).filter(function (elt) {
    return elt.getAttribute('type') == 'radio' && elt.getAttribute('name') == name;
  });
};
Radio.getValueByName = function (name) {
  var inputs = Radio.getAllByName(name);
  var res = null;
  var input;
  for (var i = 0; i < inputs.length; ++i) {
    input = inputs[i];
    if (input.checked) {
      res = input.value;
    }
  }
  return res;
};
_ACore["default"].install(Radio);
var _default = Radio;
exports["default"] = _default;
var radioImageCache = {};
_printer.ShareSerializer.addHandlerBefore({
  match: function match(elt, scope, stack) {
    if ((elt.hasClass('absol-radio-icon') || elt.hasClass('as-checkbox-input-check-icon')) && (elt.parentElement.hasClass('absol-radio') || elt.parentElement.hasClass('absol-radio-button') || elt.parentElement.hasClass('as-checkbox-input'))) {
      return true;
    }
    return false;
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    var type = elt.hasClass('absol-radio-icon') ? 'radio' : 'check';
    var fontSize = elt.getFontSize();
    var checked = !!elt.parentElement.__origin__.checked;
    var disabled = !!elt.parentElement.__origin__.disabled;
    var bound = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    if (bound.width === 0) return;
    var rect = bound.clone();
    rect.x -= printer.O.x;
    rect.y -= printer.O.y;
    var key = type + fontSize + checked + disabled;
    var res;
    if (radioImageCache[key]) {
      res = radioImageCache[key];
    } else {
      res = _Svg["default"].svgToCanvas(elt.__origin__)["catch"](function (err) {
        console.error(err);
      });
      radioImageCache[key] = res;
    }
    res.elt = elt;
    printer.image(res, rect);
  },
  id: 'Radio'
}, 'SVG');

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(39429);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function RadioButton() {
  var thisRB = this;
  this.defineEvent('change');
  this.$input = $('input', this).on('change', this.notifyChange.bind(this));
  _OOP["default"].drillProperty(this, this.$input, ['value', 'checked']);
}
RadioButton.tag = 'radiobutton';
RadioButton.radioProto = _('<svg class="absol-radio-icon" width="20" height="20" version="1.1" viewBox="0 0 5.2917 5.2917"' + '   xmlns="http://www.w3.org/2000/svg">' + '    <g transform="translate(0 -291.71)">' + '        <circle class="bound" cx="2.6458" cy="294.35" r="2.4626" style="stroke-opacity:.99497;stroke-width:.26458;" />' + '        <circle class="dot" cx="2.6458" cy="294.35"  r= "0.92604" style="fill-rule:evenodd;" />' + '    </g>' + '</svg>');
RadioButton.render = function () {
  return _({
    tag: 'label',
    "class": 'absol-radio-button',
    child: [{
      tag: 'input',
      attr: {
        type: 'radio'
      }
    }, RadioButton.radioProto.cloneNode(true)]
  });
};
RadioButton.prototype.notifyChange = function () {
  this.emit('change', {
    type: 'change',
    checked: this.checked,
    target: this
  }, this);
};
RadioButton.prototype.getAllFriend = function () {
  return Radio.getAllByName(this.name);
};
RadioButton.attribute = {
  checked: {
    set: function set(value) {
      if (value == 'false' || value == null) {
        this.checked = false;
      } else {
        this.checked = true;
      }
    },
    get: function get() {
      return this.checked ? 'true' : 'false';
    },
    remove: function remove() {
      this.checked = false;
    }
  },
  disabled: {
    set: function set(value) {
      if (value == 'false' || value == null) {
        this.disabled = false;
      } else {
        this.disabled = true;
      }
    },
    get: function get() {
      return this.disabled ? 'true' : 'false';
    },
    remove: function remove() {
      this.disabled = false;
    }
  },
  name: {
    set: function set(value) {
      this.name = value;
    },
    get: function get() {
      return this.name;
    },
    remove: function remove() {
      this.name = null;
    }
  }
};
RadioButton.property = {
  name: {
    set: function set(name) {
      if (name == null) this.$input.removeAttribute('name');else this.$input.setAttribute('name', name);
    },
    get: function get() {
      return this.$input.getAttribute('name');
    }
  },
  disabled: {
    set: function set(value) {
      this.$input.disabled = !!value;
      if (value) {
        this.addClass('disabled');
      } else {
        this.removeClass('disabled');
      }
    },
    get: function get() {
      return this.$input.disabled;
    }
  }
};
RadioButton.getAllByName = function (name) {
  return (document.getElementsByTagName('input') || []).filter(function (elt) {
    return elt.getAttribute('type') == 'radio' && elt.getAttribute('name') == name;
  });
};
RadioButton.getValueByName = function (name) {
  var inputs = RadioButton.getAllByName(name);
  var res = null;
  var input;
  for (var i = 0; i < inputs.length; ++i) {
    input = inputs[i];
    if (input.checked) {
      res = input.value;
    }
  }
  return res;
};
RadioButton.autoReplace = function () {
  var placeHolders = Array.prototype.slice.call(document.getElementsByTagName(this.tag));
  var ph;
  var attOfPH;
  var attrs;
  var style;
  var classList;
  var attNode;
  var attrName, attrValue;
  var props;
  for (var i = 0; i < placeHolders.length; ++i) {
    ph = placeHolders[i];
    attOfPH = ph.attributes;
    classList = [];
    style = {};
    attrs = {};
    props = {};
    for (var j = 0; j < attOfPH.length; ++j) {
      attNode = attOfPH[j];
      attrName = attNode.nodeName;
      attrValue = attNode.nodeValue;
      if (attrName == 'style') {
        attrValue.trim().split(';').reduce(function (style, prop) {
          var p = prop.split(':');
          if (p.length == 2) {
            style[p[0].trim()] = p[1].trim();
          }
          return style;
        }, style);
      } else if (attrName == 'class') {
        classList = attrValue.trim().split(/\s+/);
      } else if (attrName == 'onchange') {
        props.onchange = new Function('event', 'sender', attrValue);
      } else {
        attrs[attrName] = attrValue;
      }
    }
    var newElt = _({
      tag: this.tag,
      attr: attrs,
      "class": classList,
      style: style,
      props: props
    });
    $(ph).selfReplace(newElt);
  }
};
RadioButton.initAfterLoad = function () {
  _Dom["default"].documentReady.then(function () {
    RadioButton.autoReplace();
  });
};
_ACore["default"].install('RadioButton'.toLowerCase(), RadioButton);
var _default = RadioButton;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(62800);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
//new tech, not working version

var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends Element
 * @constructor
 */
function RadioInput() {
  this.$input = $('input', this).on('change', this.notifyChange.bind(this));
  this.checked = false;
  this.disabled = false;
  this.on('click', this.eventHandler.click);
  this.onchange = null;
}
RadioInput.tag = "RadioInput".toLowerCase();
RadioInput.render = function (data) {
  return _({
    tag: 'label',
    extendEvent: 'change',
    "class": 'as-radio-input',
    child: [{
      elt: data && data.$input,
      tag: 'input',
      "class": 'as-radio-input-value',
      attr: {
        type: 'radio'
      }
    }, {
      "class": ['as-radio-input-check-mark']
    }]
  });
};

/***
 * as normal, change event will be fired when radio change by system
 */
RadioInput.prototype.notifyChange = function () {
  var event = {
    checked: this.checked
  };
  this.emit('change', event, this);
};
RadioInput.prototype._updateCheckedClass = function () {
  if (this.checked) {
    this.addClass('as-checked');
  } else {
    this.removeClass('as-checked');
  }
};
RadioInput.property = {};
RadioInput.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
    this.$input.disabled = !!value;
  },
  get: function get() {
    this.$input.disabled;
  }
};

/***
 *
 * @type {RadioInput}
 */
RadioInput.property.checked = {
  set: function set(value) {
    this.$input.checked = !!value;
    this._updateCheckedClass();
  },
  get: function get() {
    return this.$input.checked;
  }
};
RadioInput.attribute = {
  checked: {
    set: function set(value) {
      if (value === 'false' || value === null) {
        this.checked = false;
      } else {
        this.checked = true;
      }
    },
    get: function get() {
      return this.checked ? 'true' : 'false';
    },
    remove: function remove() {
      this.checked = false;
    }
  },
  disabled: {
    set: function set(value) {
      if (value === 'false' || value === null) {
        this.disabled = false;
      } else {
        this.disabled = true;
      }
    },
    get: function get() {
      return this.disabled ? 'true' : 'false';
    },
    remove: function remove() {
      this.disabled = false;
    }
  }
};

/***
 *
 * @type {RadioInput}
 */
RadioInput.eventHandler = {};
RadioInput.eventHandler.click = function () {
  this._updateCheckedClass();
};
_ACore["default"].install(RadioInput);
RadioInput.autoReplace = function () {
  var placeHolders = Array.prototype.slice.call(document.getElementsByTagName(this.tag));
  var ph;
  var attOfPH;
  var attrs;
  var style;
  var classList;
  var attNode;
  var attrName, attrValue;
  var props;
  for (var i = 0; i < placeHolders.length; ++i) {
    ph = placeHolders[i];
    attOfPH = ph.attributes;
    classList = [];
    style = {};
    attrs = {};
    props = {};
    for (var j = 0; j < attOfPH.length; ++j) {
      attNode = attOfPH[j];
      attrName = attNode.nodeName;
      attrValue = attNode.nodeValue;
      if (attrName == 'style') {
        attrValue.trim().split(';').reduce(function (style, prop) {
          var p = prop.split(':');
          if (p.length == 2) {
            style[p[0].trim()] = p[1].trim();
          }
          return style;
        }, style);
      } else if (attrName == 'class') {
        classList = attrValue.trim().split(/\s+/);
      } else if (attrName == 'onchange') {
        props.onchange = new Function('event', 'sender', attrValue);
      } else {
        attrs[attrName] = attrValue;
      }
    }
    var newElt = _({
      tag: this.tag,
      attr: attrs,
      "class": classList,
      style: style,
      props: props
    });
    $(ph).selfReplace(newElt);
  }
};
RadioInput.initAfterLoad = function () {
  _Dom["default"].documentReady.then(function () {
    RadioInput.autoReplace();
  });
};
var _default = RadioInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _XHR = _interopRequireDefault(__webpack_require__(53710));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function RemoteSvg() {}
RemoteSvg.tag = 'RemoteSvg'.toLowerCase();
RemoteSvg.render = function () {
  return _('svg').defineEvent('load');
};
RemoteSvg.property = {
  src: {
    set: function set(value) {
      this._src = value;
      var self = this;
      RemoteSvg.loadIcon(value).then(function (data) {
        self.emit('load', {
          target: self,
          src: value,
          data: data
        }, self);
        self.attr(data.attr);
        self.init(data.props);
      });
    },
    get: function get() {
      return this._name;
    }
  }
};
RemoteSvg.attribute = {
  src: {
    set: function set(value) {},
    get: function get() {},
    remove: function remove() {}
  }
};
RemoteSvg.__cache__ = {};
RemoteSvg.__div_parser__ = document.createElement('div');
RemoteSvg.loadIcon = function (path) {
  if (RemoteSvg.__cache__[path]) {
    return RemoteSvg.__cache__[path];
  } else {
    RemoteSvg.__cache__[path] = _XHR["default"].getRequest(path, 'text').then(function (result) {
      RemoteSvg.__div_parser__.innerHTML = result;
      var svgElt = $('svg', RemoteSvg.__div_parser__);
      var res = {
        attr: {},
        props: {}
      };
      if (svgElt) {
        Array.prototype.forEach.call(svgElt.attributes, function (attribute) {
          res.attr[attribute.name] = attribute.value;
        });
        res.props.innerHTML = svgElt.innerHTML;
      }
      return res;
    }, function () {
      return {};
    });
    return RemoteSvg.__cache__[path];
  }
};
_ACore["default"].install(RemoteSvg);
var _default = RemoteSvg;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(34388);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _EventEmitter = __webpack_require__(46833);
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends Hanger
 * @constructor
 */
function ResizeBox() {
  this.on({
    draginit: this.eventHandler.rbDragInit,
    dragdeinit: this.eventHandler.rbDragDeinit
  });
  this.hangon = 3;
  this._mousedownEventData = undefined;
  this._mousemoveEventData = undefined;
  this._lastClickTime = 0;
}
ResizeBox.tag = 'ResizeBox'.toLowerCase();
ResizeBox.render = function () {
  return _({
    tag: _Hanger["default"].tag,
    "class": 'as-resize-box',
    extendEvent: ['beginmove', 'endmove', 'moving', 'click', 'dblclick'],
    //override click event
    child: {
      "class": 'as-resize-box-body',
      child: ['.as-resize-box-dot.left-top', '.as-resize-box-dot.top', '.as-resize-box-dot.right-top', '.as-resize-box-dot.right', '.as-resize-box-dot.right-bottom', '.as-resize-box-dot.bottom', '.as-resize-box-dot.left-bottom', '.as-resize-box-dot.left']
    }
  });
};
ResizeBox.eventHandler = {};
ResizeBox.eventHandler.rbDragInit = function (event) {
  if ((0, _EventEmitter.isMouseRight)(event.originEvent)) {
    event.cancel();
    return;
  }
  var target = event.target;
  if (!target.attr) return;
  if (!target.hasClass('as-resize-box-dot') && !target.hasClass('as-resize-box-body')) return;
  var optionNames = event.target.attr('class').match(/body|left|top|right|bottom/g);
  if (optionNames.length === 0) return;
  this._mouseOptionNames = optionNames;
  this._mouseOptionDict = this._mouseOptionNames.reduce(function (ac, cr) {
    ac[cr] = true;
    return ac;
  }, {});
  this.on({
    drag: this.eventHandler.rbDrag,
    dragend: this.eventHandler.rbDragEnd,
    dragstart: this.eventHandler.rbDragStart
  });
  this._dragged = false;
};
ResizeBox.eventHandler.rbDragDeinit = function (event) {
  this.off({
    drag: this.eventHandler.rbDrag,
    dragend: this.eventHandler.rbDragEnd,
    dragstart: this.eventHandler.rbDragStart
  });
  var now = new Date().getTime();
  if (!this._dragged) {
    if (now - this._lastClickTime < 400) {
      this.emit('dblclick', Object.assign({}, event, {
        type: 'dblclick'
      }), this);
      this._lastClickTime = 0;
    } else {
      this.emit('click', Object.assign({}, event, {
        type: 'click'
      }), this);
      this._lastClickTime = now;
    }
  }
};
ResizeBox.eventHandler.rbDrag = function (event) {
  if (this._mousedownEventData.option.body && !this.canMove) return;
  this._dragged = true;
  event.preventDefault();
  this._mousemoveEventData = {
    clientX: event.clientX,
    clientY: event.clientY,
    clientX0: this._mousedownEventData.clientX,
    clientY0: this._mousedownEventData.clientY,
    clientDX: event.clientX - this._mousedownEventData.clientX,
    clientDY: event.clientY - this._mousedownEventData.clientY,
    target: this,
    originEvent: event,
    option: this._mousedownEventData.option,
    type: 'moving',
    begin: true
  };
  this.emit('moving', this._mousemoveEventData, this);
};
ResizeBox.eventHandler.rbDragStart = function (event) {
  event.preventDefault();
  this._optionNames = event.target.attr('class').match(/body|left|top|right|bottom/g);
  this._dragged = true;
  $(document.body).addClass('as-resize-box-overiding').addClass(this._optionNames.join('-'));
  var option = this._optionNames.reduce(function (ac, key) {
    ac[key] = true;
    return ac;
  }, {});
  this._mousedownEventData = {
    clientX: event.clientX,
    clientY: event.clientY,
    target: this,
    originEvent: event,
    prevented: false,
    preventDefault: function preventDefault() {
      this.prevented = true;
    },
    option: option,
    begin: false,
    type: 'beginmove'
  };
  this.emit('beginmove', this._mousedownEventData, this);
};
ResizeBox.eventHandler.rbDragEnd = function (event) {
  document.body.classList.remove('as-resize-box-overiding');
  document.body.classList.remove(this._optionNames.join('-'));
  this._mousefinishEventData = {
    clientX: event.clientX,
    clientY: event.clientY,
    clientX0: this._mousedownEventData.clientX,
    clientY0: this._mousedownEventData.clientY,
    clientDX: event.clientX - this._mousedownEventData.clientX,
    clientDY: event.clientY - this._mousedownEventData.clientY,
    target: this,
    originEvent: event,
    option: this._mousedownEventData.option,
    type: 'endmove'
  };
  this.emit('endmove', this._mousefinishEventData, this);
};
ResizeBox.property = {};
ResizeBox.property.canMove = {
  set: function set(value) {
    if (value) {
      this.addClass('as-can-move');
    } else {
      this.removeClass('as-can-move');
    }
  },
  get: function get() {
    return this.hasClass('as-can-move');
  }
};
ResizeBox.property.canResize = {
  set: function set(value) {
    if (value) {
      this.addClass('as-can-resize');
    } else {
      this.removeClass('as-can-resize');
    }
  },
  get: function get() {
    return this.hasClass('as-can-resize');
  }
};
ResizeBox.property.canClick = {
  set: function set(value) {
    if (value) {
      this.addClass('as-can-click');
    } else {
      this.removeClass('as-can-click');
    }
  },
  get: function get() {
    return this.hasClass('as-can-click');
  }
};
_ACore["default"].install(ResizeBox);
var _default = ResizeBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(45507);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _RibbonSplitButton = _interopRequireDefault(__webpack_require__(285));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function RibbonButton() {
  this.$icon = null;
  this._icon = null;
  this.$text = $('.as-ribbon-button-text', this);
  this.$textNode = this.$text.firstChild;
  this._menuHolder = null;
}
RibbonButton.tag = 'RibbonButton'.toLowerCase();
RibbonButton.render = function () {
  return _({
    tag: 'button',
    extendEvent: ['select'],
    attr: {
      'tabindex': '0'
    },
    "class": ['as-ribbon-button', 'as-no-dropdown'],
    child: [{
      tag: 'span',
      "class": 'as-ribbon-button-text',
      child: {
        text: ''
      }
    }, 'span.mdi.mdi-chevron-down.as-ribbon-dropdown-icon']
  });
};
RibbonButton.property = Object.assign({}, _RibbonSplitButton["default"].property);
RibbonButton.property.icon = {
  set: function set(icon) {
    icon = icon || null;
    this._icon = icon;
    if (this.$icon) this.removeChild(this.$icon);
    if (icon) {
      this.$icon = _(icon);
      this.addChildBefore(this.$icon, this.$text);
      if (this.$icon.addClass) this.$icon.addClass('as-ribbon-button-icon');
    } else {
      this.$icon = null;
    }
  },
  get: function get() {
    return this._icon;
  }
};
RibbonButton.eventHandler = {};
_ACore["default"].install(RibbonButton);
var _default = RibbonButton;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(11391);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _QuickMenu = _interopRequireDefault(__webpack_require__(8277));
var _utils = __webpack_require__(84512);
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function RibbonSplitButton() {
  this.$icon = null;
  this._icon = null;
  this.$text = $('.as-ribbon-split-button-text', this);
  this.$primaryBtn = $('.as-ribbon-split-button-primary', this).on('click', this.eventHandler.clickPrimaryBtn);
  this.$extendBtn = $('.as-ribbon-split-button-extend', this);
  this.$extendText = $('.as-ribbon-split-button-text', this.$extendBtn); //for big style
  this._menuHolder = null;
}
RibbonSplitButton.tag = 'RibbonSplitButton'.toLowerCase();
RibbonSplitButton.render = function () {
  return _({
    extendEvent: ['press', 'select'],
    attr: {
      'tabindex': '0'
    },
    "class": ['as-ribbon-split-button', 'as-no-dropdown'],
    child: {
      "class": 'as-ribbon-split-button-content',
      child: [{
        tag: 'button',
        attr: {
          'tabindex': '-1'
        },
        "class": 'as-ribbon-split-button-primary',
        child: {
          tag: 'span',
          "class": 'as-ribbon-split-button-text'
        }
      }, {
        tag: 'button',
        attr: {
          'tabindex': '-1'
        },
        "class": 'as-ribbon-split-button-extend',
        child: ['span.as-ribbon-split-button-text', 'span.mdi.mdi-chevron-down.as-ribbon-dropdown-icon']
      }]
    }
  });
};
RibbonSplitButton.property = {};
RibbonSplitButton.property.items = {
  set: function set(items) {
    var thisB = this;
    this._items = items || [];
    if (this._items && this._items.length > 0) {
      if (!this._menuHolder) {
        this.removeClass('as-no-dropdown');
        this._menuHolder = _QuickMenu["default"].toggleWhenClick(this.$extendBtn || this, {
          getMenuProps: function getMenuProps() {
            return {
              extendStyle: {
                'min-width': thisB.getBoundingClientRect().width + 'px'
              },
              items: thisB._items
            };
          },
          getFlowedElement: function getFlowedElement() {
            return thisB;
          },
          anchor: [1, 2, 6, 5],
          onSelect: function onSelect(item) {
            thisB.emit('select', {
              item: (0, _utils.cleanMenuItemProperty)(item),
              type: 'select',
              target: thisB
            });
          }
        });
      }
    } else {
      if (this._menuHolder) {
        this.addClass('as-no-dropdown');
        this._menuHolder.remove();
        this._menuHolder = null;
      }
    }
  },
  get: function get() {
    return this._items;
  }
};
RibbonSplitButton.property.text = {
  set: function set(value) {
    value = value || '';
    this.$text.attr('data-text', value);
    if (this.$extendText) this.$extendText.attr('data-text', value);
  },
  get: function get() {
    return this.$text.attr('data-text') | '';
  }
};
RibbonSplitButton.property.icon = {
  set: function set(icon) {
    icon = icon || null;
    this._icon = icon;
    if (this.$icon) this.$primaryBtn.removeChild(this.$icon);
    if (icon) {
      this.$icon = _(icon);
      this.$primaryBtn.addChildBefore(this.$icon, this.$text);
      if (this.$icon.addClass) this.$icon.addClass('as-ribbon-split-button-icon');
    } else {
      this.$icon = null;
    }
  },
  get: function get() {
    return this._icon;
  }
};
RibbonSplitButton.eventHandler = {};
RibbonSplitButton.eventHandler.clickPrimaryBtn = function () {
  this.emit('press', {
    type: 'press',
    target: this,
    item: (0, _utils.cleanMenuItemProperty)(this)
  });
};
_ACore["default"].install(RibbonSplitButton);
var _default = RibbonSplitButton;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(69083);
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
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; }
/***
 * @extends AElement
 * @constructor
 */
function RotatedText() {
  this.$attachHook = (0, _ACore.$)('attachhook', this);
  this.$attachHook.requestUpdateSize = this.eventHandler.positionChange;
  this.$attachHook.on('attached', this.eventHandler.attached);
  this.$anchor = (0, _ACore.$)('.as-rotated-text-anchor', this);
  this.$content = (0, _ACore.$)('.as-rotated-text-content', this);
  this.$contentText = this.$content.firstChild;
  this.$trackElts = [];
  this._angle = 0;
  this.angle = 0;
  this.text = '';
  this._trackInterval = -1;
}
RotatedText.tag = 'RotatedText';
RotatedText.render = function () {
  return (0, _ACore._)({
    tag: 'span',
    "class": 'as-rotated-text',
    child: ['attachhook', {
      "class": 'as-rotated-text-anchor',
      child: {
        tag: 'span',
        "class": 'as-rotated-text-content',
        child: {
          text: ''
        }
      }
    }]
  });
};
RotatedText.prototype._trackPosition = function () {
  this._cancelTrackPosition();
  var parent = this.parentElement;
  while (parent) {
    parent.addEventListener('scroll', this.eventHandler.positionChange);
    this.$trackElts.push(parent);
    parent = parent.parentElement;
  }
  document.addEventListener('scroll', this.eventHandler.positionChange);
  this.$trackElts.push(document);
  this._trackInterval = setInterval(this.eventHandler.intervalCheck, 3000);
};
RotatedText.prototype._cancelTrackPosition = function () {
  if (this._trackInterval >= 0) {
    clearInterval(this._trackInterval);
    this._trackInterval = -1;
  }
  while (this.$trackElts.length > 0) {
    this.$trackElts.pop().removeEventListener('scroll', this.eventHandler.positionChange);
  }
};
RotatedText.property = {};
RotatedText.property.text = {
  get: function get() {
    return this.$contentText.data;
  },
  set: function set(value) {
    value = value || '';
    value = value + '';
    this.$contentText.data = value;
  }
};
RotatedText.property.angle = {
  set: function set(value) {
    value = value || 0;
    var matched;
    if (typeof value === 'number') {
      this._angle = value;
      this.$content.addStyle('transform', 'rotate(' + value + 'deg)');
    } else if (value.match) {
      matched = value.match(/([0-9.+\-e]+)deg/);
      if (matched) {
        value = parseFloat(matched[1]);
        if (isFinite(value)) {
          this._angle = value;
          this.$content.addStyle('transform', 'rotate(' + this._angle + 'deg)');
        }
        return;
      }
      matched = value.match(/([0-9.+\-e]+)rad/);
      if (matched) {
        value = parseFloat(matched[1]);
        if (isFinite(value)) {
          this._angle = value * 180 / Math.PI;
          this.$content.addStyle('transform', 'rotate(' + this._angle + 'deg)');
        }
      }
    }
  },
  get: function get() {
    return this._angle;
  }
};
RotatedText.eventHandler = {};
RotatedText.eventHandler.attached = function () {
  _ResizeSystem["default"].add(this);
  this.eventHandler.positionChange();
  this.$content.addStyle('transform-origin', Math.round(0.3 * this.$content.getFontSize()) + 'px 50%');
  this._trackPosition();
};
RotatedText.eventHandler.detached = function () {
  this._cancelTrackPosition();
};
RotatedText.eventHandler.intervalCheck = function () {
  if (!this.isDescendantOf(document.body)) {
    this.eventHandler.detached();
  }
};
RotatedText.eventHandler.positionChange = function () {
  var bound = this.getBoundingClientRect();
  this.$anchor.addStyle({
    top: Math.round(bound.top) + 'px',
    left: Math.round(bound.left) + 'px'
  });
};
_ACore["default"].install(RotatedText);
var _default = RotatedText;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.HScrollbar = HScrollbar;
exports.HScroller = HScroller;
exports.Scrollbar = Scrollbar;
exports.VScrollbar = VScrollbar;
exports.VScroller = VScroller;
__webpack_require__(29874);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _Element = _interopRequireDefault(__webpack_require__(55781));
var _int = __webpack_require__(65909);
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
_ACore["default"].$scrollStyle = function () {
  var element = _('style#vscroller-style');
  element.innerHTML = ['.absol-vscroller-viewport{ margin-right: ' + -17 + 'px;  min-width: calc(100% + ' + 17 + 'px);}', '.absol-hscroller-viewport{ margin-bottom: ' + -17 + 'px;  min-height: calc(100% + ' + 17 + 'px);}'].join('\n');
  document.head.appendChild(element);
  _Dom["default"].getScrollSize().then(function (size) {
    element.innerHTML = ['.absol-vscroller-viewport{ margin-right: ' + -size.width + 'px; min-width: calc(100% + ' + size.width + 'px);}', '.absol-hscroller-viewport{ margin-bottom: ' + -size.height + 'px; min-height: calc(100% + ' + size.height + 'px);}'].join('\n');
  });
  return element;
}();

/***
 * @extends AElement
 * @constructor
 */
function VScroller() {
  var thisVS = this;
  this.$attachHook = $('attachhook', this);
  this.sync = new Promise(function (rs) {
    thisVS.$attachHook.once('error', function () {
      rs();
    });
  });
  this.$attachHook.on('error', function () {
    thisVS.requestUpdateSize();
  });
  this.$vscrollbar = $('vscrollbar', this).on('scroll', this.eventHandler.scrollScrollbar);
  this.$viewport = $('.absol-vscroller-viewport', this).on('scroll', this.eventHandler.scrollViewport);
  _OOP["default"]["extends"](thisVS.$viewport, {
    removeChild: function removeChild() {
      this["super"].apply(this, arguments);
      thisVS.requestUpdateSize();
      return thisVS;
    }
  });
}
VScroller.tag = 'vscroller';
VScroller.render = function () {
  return _({
    "class": 'absol-vscroller',
    child: ['.absol-vscroller-viewport', {
      "class": ['absol-scrollbar-container', 'vertical'],
      child: 'vscrollbar'
    }, 'attachhook']
  });
};
VScroller.prototype.requestUpdateSize = function () {
  // return;
  if (this._isRequestingUpdateSize) return this.sync;
  this._isRequestingUpdateSize = true;
  this.sync = this.sync.then(function () {
    this.$vscrollbar.outerHeight = this.$viewport.clientHeight;
    this.$vscrollbar.innerHeight = this.$viewport.scrollHeight - 2;
    this.$vscrollbar.innerOffset = this.$viewport.scrollTop;
    if (this.$vscrollbar.innerHeight <= this.$vscrollbar.outerHeight) {
      this.$vscrollbar.hidden = true;
      this.addClass('disabled');
    } else {
      this.removeClass('disabled');
      this.$vscrollbar.hidden = false;
    }
    this._isRequestingUpdateSize = false;
  }.bind(this));
  return this.sync;
};
VScroller.prototype.init = function (props) {
  this["super"](props);
  this.requestUpdateSize();
};
VScroller.prototype.addChild = function () {
  var res = this.$viewport.addChild.apply(this.$viewport, arguments);
  this.requestUpdateSize();
  return res;
};
VScroller.prototype.clearChild = function () {
  var res = this.$viewport.clearChild.apply(this.$viewport, arguments);
  this.requestUpdateSize();
  return res;
};
VScroller.prototype.addChildBefore = function () {
  var res = this.$viewport.addChildBefore.apply(this.$viewport, arguments);
  this.requestUpdateSize();
  return res;
};
VScroller.prototype.addChildAfter = function () {
  var res = this.$viewport.addChildAfter.apply(this.$viewport, arguments);
  this.requestUpdateSize();
  return res;
};
VScroller.prototype.findChildAfter = function () {
  return this.$viewport.findChildAfter.apply(this.$viewport, arguments);
};
VScroller.prototype.findChildBefore = function () {
  return this.$viewport.findChildBefore.apply(this.$viewport, arguments);
};
VScroller.prototype.removeChild = function () {
  var res = this.$viewport.removeChild.apply(this.$viewport, arguments);
  this.requestUpdateSize();
  return res;
};
VScroller.prototype.scrollInto = function (element, padding, scrollTime, beforFrame, afterFrame) {
  padding = padding || 0;
  scrollTime = scrollTime || 0;
  var frameCount = Math.ceil(scrollTime / 15 + 1);
  var self = this;
  function onFrame() {
    beforFrame && beforFrame();
    var elementBound = element.getBoundingClientRect();
    var viewportBound = self.$viewport.getBoundingClientRect();
    var currentScrollTop = self.$viewport.scrollTop;
    var newScrollTop = currentScrollTop;
    if (elementBound.bottom + padding > viewportBound.bottom) {
      newScrollTop = currentScrollTop + (elementBound.bottom + padding - viewportBound.bottom) / (Math.log(frameCount) + 1);
    }
    if (elementBound.top - padding < viewportBound.top) {
      newScrollTop = currentScrollTop - (viewportBound.top - (elementBound.top - padding)) / (Math.log(frameCount) + 1);
    }
    if (newScrollTop != currentScrollTop) {
      self.$viewport.scrollTop = newScrollTop;
    }
    afterFrame && afterFrame();
    frameCount--;
    if (frameCount > 0) setTimeout(onFrame, 15);
  }
  if (_Element["default"].prototype.isDescendantOf.call(element, this.$viewport)) {
    onFrame();
  }
};
VScroller.prototype.scrollBy = function (dy, duration) {
  duration = duration || 0;
  var frameCount = Math.ceil(duration / 20);
  var timeOut = duration / frameCount;
  var i = 0;
  var self = this;
  var start = self.$viewport.scrollTop;
  var end = start + dy;
  function onFrame() {
    self.$viewport.scrollTop = Math.max((0, _int.map)(i, 0, frameCount, start, end), 0);
    ++i;
    if (i <= frameCount) {
      setTimeout(onFrame, timeOut);
    } else {
      setTimeout(finish, timeOut);
    }
  }
  function finish() {
    self.$viewport.scrollTop = Math.max(end, 0);
  }
  onFrame();
};
VScroller.eventHandler = {};
VScroller.eventHandler.scrollViewport = function (event) {
  this.$vscrollbar.outerHeight = this.$viewport.clientHeight;
  this.$vscrollbar.innerHeight = this.$viewport.scrollHeight;
  this.$vscrollbar.innerOffset = this.$viewport.scrollTop;
};
VScroller.eventHandler.scrollScrollbar = function (event) {
  this.$viewport.scrollTop = this.$vscrollbar.innerOffset;
};

/***
 * @extends AElement
 * @constructor
 */
function HScroller() {
  var thisHS = this;
  this.$attachHook = $('attachhook', this).on('error', function () {
    this.requestUpdateSize = this.requestUpdateSize || thisHS.requestUpdateSize.bind(thisHS);
    _Dom["default"].addToResizeSystem(this);
  });
  this.sync = new Promise(function (rs, rj) {
    thisHS.$attachHook.once('error', rs);
  });
  this.$hscrollbar = $('hscrollbar', this).on('scroll', this.eventHandler.scrollScrollbar);
  this.$viewport = $('.absol-hscroller-viewport', this).on('scroll', this.eventHandler.scrollViewport);
  _OOP["default"]["extends"](this.$viewport, {
    removeChild: function removeChild() {
      this["super"].apply(this, arguments);
      thisHS.requestUpdateSize();
      return thisHS;
    }
  });
}
HScroller.tag = 'hscroller';
HScroller.render = function () {
  return _({
    "class": 'absol-hscroller',
    child: ['.absol-hscroller-viewport', {
      "class": ['absol-scrollbar-container', 'horizontal'],
      child: 'hscrollbar'
    }, 'attachhook']
  });
};
HScroller.eventHandler = {};
HScroller.eventHandler.scrollViewport = function (event) {
  this.$hscrollbar.outerWidth = this.$viewport.clientWidth;
  this.$hscrollbar.innerWidth = this.$viewport.scrollWidth;
  this.$hscrollbar.innerOffset = this.$viewport.scrollLeft;
};
HScroller.eventHandler.scrollScrollbar = function (event) {
  this.$viewport.scrollLeft = this.$hscrollbar.innerOffset;
};
Object.assign(HScroller.prototype, VScroller.prototype);
HScroller.prototype.requestUpdateSize = function () {
  // return;
  if (this._isRequestingUpdateSize) return this.sync;
  this._isRequestingUpdateSize = true;
  this.sync = this.sync.then(function () {
    this.$hscrollbar.outerWidth = this.$viewport.clientWidth;
    this.$hscrollbar.innerWidth = this.$viewport.scrollWidth;
    this.$hscrollbar.innerOffset = this.$viewport.scrollLeft;
    if (this.$hscrollbar.innerWidth <= this.$hscrollbar.outerWidth) {
      this.$hscrollbar.hidden = true;
      this.addClass('disabled');
    } else {
      this.removeClass('disabled');
      this.$hscrollbar.hidden = false;
    }
    this._isRequestingUpdateSize = false;
  }.bind(this));
  return this.sync;
};
HScroller.prototype.scrollInto = function (element) {
  if (_Element["default"].prototype.isDescendantOf.call(element, this.$viewport)) {
    var elementBound = element.getBoundingClientRect();
    var viewportBound = this.$viewport.getBoundingClientRect();
    var currentScrollLeft = this.$viewport.scrollLeft;
    var newScrollLeft = currentScrollLeft;
    if (elementBound.right > viewportBound.right) {
      newScrollLeft = currentScrollLeft + (elementBound.right - viewportBound.right);
    }
    if (elementBound.left < viewportBound.left) {
      newScrollLeft = currentScrollLeft - (viewportBound.left - elementBound.left);
    }
    if (newScrollLeft != currentScrollLeft) {
      this.$viewport.scrollLeft = newScrollLeft;
    }
  }
};

/***
 * @extends AElement
 * @constructor
 */
function Scrollbar() {
  var thisSB = this;
  this.$button = $('.absol-scrollbar-button', this);
  this.on('inactive', function (event, sender) {
    this.emit('deactive', event, sender);
  });
}
Scrollbar.tag = 'scrollbar';
Scrollbar.render = function () {
  return _({
    tag: _Hanger["default"].tag,
    "class": ['absol-scrollbar'],
    extendEvent: ['scroll', 'active', 'inactive', 'deactive'],
    child: '.absol-scrollbar-button'
  });
};
Scrollbar.property = {};
Scrollbar.property.hidden = {
  set: function set(value) {
    value = !!value;
    if (value !== this._hidden) {
      this._hidden = value;
      if (value) this.addClass('absol-hidden');else this.removeClass('absol-hidden');
    }
  },
  get: function get() {
    return this.hasClass('absol-hidden');
  }
};

/***
 * @extends Scrollbar
 * @constructor
 */
function VScrollbar() {
  this.on('draginit', this.eventHandler.dragInit, true).on('drag', this.eventHandler.drag, true).on('dragend', this.eventHandler.dragEnd, true);
  /***
   * @type {number}
   * @name outerHeight
   * @memberOf VScrollbar#
   */

  /***
   * @type {number}
   * @name innerHeight
   * @memberOf VScrollbar#
   */
  /***
   * @type {number}
   * @name innerHeight
   * @memberOf VScrollbar#
   */
}

VScrollbar.tag = 'vscrollbar';
VScrollbar.render = function () {
  return _({
    tag: 'scrollbar',
    "class": 'absol-vscrollbar'
  }, true);
};
VScrollbar.prototype.updateValue = function () {
  this.$button.addStyle('height', Math.min(this.outerHeight / this.innerHeight, 1) * 100 + '%');
  this.$button.addStyle('top', this.innerOffset / this.innerHeight * 100 + '%');
};
VScrollbar.prototype.updateStatus = function () {
  if (this.innerHeight > this.outerHeight) {
    this.addClass('as-overflow');
  } else {
    this.removeClass('as-overflow');
  }
};
VScrollbar.eventHandler = {};
VScrollbar.eventHandler.dragInit = function (event) {
  event.preventDefault();
  var boundRes = this.getBoundingClientRect();
  var boundButton = this.$button.getBoundingClientRect();
  if (event.target === this.$button) {
    this.innerOffset0 = this.innerOffset;
  } else {
    var newInnerOffset = (0, _int.map)(event.startingPoint.y - boundButton.height / 2 - boundRes.top, 0, boundRes.height, 0, this.innerHeight);
    if (newInnerOffset + this.outerHeight > this.innerHeight) newInnerOffset = this.innerHeight - this.outerHeight;
    if (newInnerOffset < 0) newInnerOffset = 0;
    this.innerOffset = newInnerOffset;
    //todo
    event.innerOffset = newInnerOffset;
    this.innerOffset0 = newInnerOffset;
    this.emit('scroll', event);
  }
  this.addClass('absol-active');
  this.emit('active', {
    type: 'active',
    originEvent: event,
    target: this,
    originalEvent: event.originalEvent || event
  });
};
VScrollbar.eventHandler.drag = function (event) {
  event.preventDefault();
  var dy = event.currentPoint.sub(event.startingPoint).y;
  var newInnerOffset = this.innerOffset0 + dy * (this.innerHeight / this.outerHeight) * (this.outerHeight / this.getBoundingClientRect().height);
  if (newInnerOffset + this.outerHeight > this.innerHeight) newInnerOffset = this.innerHeight - this.outerHeight;
  if (newInnerOffset < 0) newInnerOffset = 0;
  this.innerOffset = newInnerOffset;
  event.innerOffset = newInnerOffset;
  this.emit('scroll', event);
};
VScrollbar.eventHandler.dragEnd = function (event) {
  this.removeClass('absol-active');
  this.emit('inactive', {
    type: 'inactive',
    originEvent: event,
    target: this,
    originalEvent: event.originalEvent || event
  });
};
VScrollbar.property = {
  innerOffset: {
    set: function set(value) {
      value = value || 0;
      if (this._innerOffset != value) {
        this._innerOffset = value;
        this.updateValue();
      }
    },
    get: function get() {
      return this._innerOffset || 0;
    }
  },
  innerHeight: {
    set: function set(value) {
      value = value || 1;
      value = Math.max(value, 1);
      if (this._innerHeight !== value) {
        this._innerHeight = value;
        this.updateValue();
      }
      this.updateStatus();
    },
    get: function get() {
      return this._innerHeight || 1;
    }
  },
  outerHeight: {
    set: function set(value) {
      value = value || 0;
      value = Math.max(value, 0);
      if (this._outerHeight !== value) {
        this._outerHeight = value;
        this.updateValue();
      }
      this.updateStatus();
    },
    get: function get() {
      return this._outerHeight || 0;
    }
  }
};

/***
 * @extends Scrollbar
 * @constructor
 */
function HScrollbar() {
  this.on('draginit', this.eventHandler.dragInit, true).on('drag', this.eventHandler.drag, true).on('dragend', this.eventHandler.dragEnd, true);

  /***
   * @type {number}
   * @name innerOffset
   * @memberOf HScrollbar#
   */
  /***
   * @type {number}
   * @name innerWidth
   * @memberOf HScrollbar#
   */
  /***
   * @type {number}
   * @name outerWidth
   * @memberOf HScrollbar#
   */
}

HScrollbar.tag = 'hscrollbar';
HScrollbar.render = function () {
  return _({
    tag: 'scrollbar',
    "class": 'absol-hscrollbar'
  }, true);
};
HScrollbar.prototype.updateValue = function () {
  this.$button.addStyle('width', Math.min(this.outerWidth / this.innerWidth, 1) * 100 + '%');
  this.$button.addStyle('left', this.innerOffset / this.innerWidth * 100 + '%');
};
HScrollbar.prototype.updateStatus = function () {
  if (this.innerWidth > this.outerWidth) {
    this.addClass('as-overflow');
  } else {
    this.removeClass('as-overflow');
  }
};

/**
 *
 * @type {{[key: string]:function}}
 */
HScrollbar.eventHandler = {};

/**
 * @this HScrollbar
 * @param event
 */
HScrollbar.eventHandler.dragInit = function (event) {
  event.preventDefault();
  var boundRes = this.getBoundingClientRect();
  var boundButton = this.$button.getBoundingClientRect();
  if (event.target === this.$button) {
    this.innerOffset0 = this.innerOffset;
  } else {
    var newInnerOffset = (0, _int.map)(event.startingPoint.x - boundButton.width / 2 - boundRes.left, 0, boundRes.width, 0, this.innerWidth);
    if (newInnerOffset + this.outerWidth > this.innerWidth) newInnerOffset = this.innerWidth - this.outerWidth;
    if (newInnerOffset < 0) newInnerOffset = 0;
    this.innerOffset = newInnerOffset;
    //todo
    event.innerOffset = newInnerOffset;
    this.innerOffset0 = newInnerOffset;
    this.emit('scroll', event);
  }
  var body = $(document.body);
  this.addClass('absol-active');
  this.emit('active', {
    type: 'inactive',
    originEvent: event,
    target: this
  });
};

/**
 * @this HScrollbar
 * @param event
 */
HScrollbar.eventHandler.drag = function (event) {
  event.preventDefault();
  var dy = event.currentPoint.x - event.startingPoint.x;
  var newInnerOffset = this.innerOffset0 + dy * (this.innerWidth / this.outerWidth) * (this.outerWidth / this.getBoundingClientRect().width);
  if (newInnerOffset + this.outerWidth > this.innerWidth) newInnerOffset = this.innerWidth - this.outerWidth;
  if (newInnerOffset < 0) newInnerOffset = 0;
  this.innerOffset = newInnerOffset;
  //todo
  event.innerOffset = newInnerOffset;
  this.emit('scroll', event);
};

/**
 * @this HScrollbar
 * @param event
 */
HScrollbar.eventHandler.dragEnd = function (event) {
  this.removeClass('absol-active');
  this.emit('inactive', {
    type: 'inactive',
    originEvent: event,
    target: this
  });
};
HScrollbar.property = {
  innerOffset: {
    set: function set(value) {
      value = value || 0;
      if (this._innerOffset !== value) {
        this._innerOffset = value;
        this.updateValue();
      }
    },
    get: function get() {
      return this._innerOffset || 0;
    }
  },
  innerWidth: {
    set: function set(value) {
      value = value || 1;
      value = Math.max(value, 1);
      if (this._innerWidth !== value) {
        this._innerWidth = value;
        this.updateValue();
      }
      this.updateStatus();
    },
    get: function get() {
      return this._innerWidth || 1;
    }
  },
  outerWidth: {
    set: function set(value) {
      value = value || 0;
      value = Math.max(value, 0);
      if (this._outerWidth !== value) {
        this._outerWidth = value;
        this.updateValue();
      }
      this.updateStatus();
    },
    get: function get() {
      return this._outerWidth || 0;
    }
  }
};
_ACore["default"].install([VScrollbar, HScrollbar, Scrollbar, VScroller, HScroller]);

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(70880);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _Icons = __webpack_require__(39285);
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
_ACore["default"].creator['find-ico'] = function () {
  var res = _('<svg class="find" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' + ' <g transform="matrix(-1 0 0 1 99.478 -193.73)">' + '  <path d="m62.128 199.18c-18.859 0-34.148 15.289-34.148 34.148 0 5.4138 1.26 10.533 3.5026 15.081 0.6886 1.3965 1.4698 2.7392 2.3357 4.02-1.9962 2.1685-31.467 31.596-31.404 33.295 0.21757 5.8346 4.9404 8.7289 9.464 7.855 1.3264-0.25627 30.938-30.639 31.774-31.529 1.3906 0.89633 2.8508 1.6948 4.3702 2.3848 4.2995 1.9526 9.0756 3.04 14.105 3.04 18.859 0 34.147-15.288 34.147-34.147 3e-6 -18.859-15.288-34.148-34.147-34.148zm0.49444 8.2454a26.067 26.067 0 0 1 26.068 26.067 26.067 26.067 0 0 1-26.068 26.068 26.067 26.067 0 0 1-26.067-26.068 26.067 26.067 0 0 1 26.067-26.067z"/>' + ' </g>' + '</svg>');
  return res;
};
_ACore["default"].creator['times-circle-ico'] = function () {
  var res = _('<svg class="times" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">\
            <g transform="translate(0,-197)">\
                <path d="m49.979 236.2-14.231-14.231-10.696 10.696 14.257 14.257-14.351 14.351 10.737 10.737 14.292-14.292 14.292 14.292 10.761-10.761-14.257-14.257 14.316-14.316-10.725-10.725zm50.021 10.804a50 50 0 0 1-50 50 50 50 0 0 1-50-50 50 50 0 0 1 50-50 50 50 0 0 1 50 50z" />\
            </g>\
        </svg>');
  return res;
};

/**
 * @extends {AElement}
 * @constructor
 */
function SearchTextInput() {
  var thisSTI = this;
  this.defineEvent(['change', 'modify', 'stoptyping']);
  this.eventHandler = _OOP["default"].bindFunctions(this, SearchTextInput.eventHandler);
  this.$button = $('button', this);
  this.$input = $('input', this);
  ['keyup', 'keydown', 'focus', 'blur'].forEach(function (evName) {
    thisSTI.defineEvent(evName);
    thisSTI.$input.on(evName, function (event) {
      thisSTI.emit(evName, event, thisSTI);
    });
  });
  this.$input.on('change', this.eventHandler.inputChange);
  this.$input.on('keyup', this.eventHandler.inputKeyUp);
  this.$button.on('click', function (event) {
    thisSTI.$input.value = '';
    thisSTI.eventHandler.inputKeyUp(event);
    setTimeout(function () {
      thisSTI.focus();
    }, 50);
  });
  /**
   * @type {string}
   * @name value
   * @memberOf SearchTextInput#
   */
}

SearchTextInput.tag = 'SearchTextInput'.toLowerCase();
SearchTextInput.render = function () {
  return _({
    "class": 'absol-search-text-input',
    child: [{
      "class": 'absol-search-text-input-container',
      child: {
        tag: 'input',
        attr: {
          type: 'search',
          placeholder: _LanguageSystem["default"].getText('txt_search') || 'Search...'
        }
      }
    }, {
      "class": 'absol-search-text-button-container',
      child: {
        tag: 'button',
        child: ['find-ico', 'times-circle-ico', {
          tag: _Icons.SpinnerIco.tag,
          style: {
            margin: 0
          }
        }]
      }
    }]
  });
};
SearchTextInput.property = {
  value: {
    set: function set(value) {
      value = value || '';
      this.$input.value = value;
      this._lastTextModified = value;
      if (this.value.length > 0) {
        this.addClass('searching');
      } else {
        this.removeClass('searching');
      }
    },
    get: function get() {
      return this.$input.value;
    }
  },
  placeholder: {
    set: function set(value) {
      this.$input.attr('placeholder', value);
    },
    get: function get() {
      return this.$placeholder.getAttribute('placeholder');
    }
  }
};
SearchTextInput.property.waiting = {
  set: function set(value) {
    value = value || false;
    this._waiting = value;
    if (value) {
      this.addClass('as-waiting');
    } else {
      this.removeClass('as-waiting');
    }
  },
  get: function get() {
    return this._waiting || false;
  }
};
SearchTextInput.prototype.focus = function () {
  this.$input.focus();
};
SearchTextInput.prototype.blur = function () {
  this.$input.blur();
};
SearchTextInput.eventHandler = {};
SearchTextInput.eventHandler.inputChange = function (event) {
  event.value = this.value;
  if (typeof this.onchange == 'function') {
    this.onchange(event, this);
  }
  this.emit('change', event);
};
SearchTextInput.eventHandler.inputKeyUp = function (event) {
  if (this._lastTextModified != this.value) {
    if (this.value.length > 0) {
      this.addClass('searching');
    } else {
      this.removeClass('searching');
    }
    event.value = this.value;
    if (typeof this.onchange == 'function') {
      this.onchange(event, this);
    }
    this.emit('modify', event);
    if (this._updateTimeOut !== undefined) {
      clearTimeout(this._updateTimeOut);
      this._updateTimeOut = undefined;
    }
    this._updateTimeOut = setTimeout(function () {
      this.emit('stoptyping', event);
    }.bind(this), 500);
    this._lastTextModified = this.value;
  }
};
_ACore["default"].creator.searchcrosstextinput = function () {
  var res = _('searchtextinput', true);
  return res;
};
_ACore["default"].creator.searchtextinput = SearchTextInput;
var _default = SearchTextInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
exports.releaseItem = releaseItem;
exports.requireItem = requireItem;
__webpack_require__(95370);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _SelectMenu = _interopRequireDefault(__webpack_require__(41735));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _PositionTracker = _interopRequireDefault(__webpack_require__(97252));
var _SelectBoxItem = _interopRequireDefault(__webpack_require__(27233));
var _SelectListBox = __webpack_require__(47818);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function pressCloseEventHandler(event) {
  var parentElt = this.$parent;
  if (!parentElt) return;
  parentElt.eventHandler.pressCloseItem(this, event);
}
function pressHandler(event) {
  var parentElt = this.$parent;
  if (!parentElt) return;
  parentElt.eventHandler.pressItem(this, event);
}

/***
 *
 * @returns {SelectBoxItem}
 */
function makeItem() {
  return _({
    tag: 'selectboxitem',
    on: {
      close: pressCloseEventHandler,
      press: pressHandler
    }
  });
}
var itemPool = [];
function requireItem($parent) {
  var item;
  if (itemPool.length > 0) {
    item = itemPool.pop();
  } else {
    item = makeItem();
  }
  item.$parent = $parent;
  return item;
}
function releaseItem(item) {
  item.$parent = null;
  itemPool.push(item);
}

/***
 * @extends PositionTracker
 * @return {SelectBox}
 * @constructor
 */
function SelectBox() {
  this.on('click', this.eventHandler.click);
  this.$selectlistBox = _({
    tag: 'selectlistbox',
    props: {
      anchor: [1, 6, 2, 5],
      displayValue: _SelectListBox.VALUE_HIDDEN
    },
    on: {
      preupdateposition: this.eventHandler.preUpdateListPosition,
      pressitem: this.eventHandler.selectListBoxPressItem
    }
  });
  _OOP["default"].drillProperty(this, this.$selectlistBox, 'enableSearch');
  this.$items = [];
  this._values = [];
  this.items = [];
  this.values = [];
  this.$selectlistBox.followTarget = this;
  this.$selectlistBox.sponsorElement = this;
  this.disableClickToFocus = false;
  this.orderly = true;
  this.itemFocusable = false;
  this._activeValue = undefined;
  return this;
}
SelectBox.tag = 'selectbox';
SelectBox.render = function () {
  return _({
    tag: 'bscroller',
    "class": ['absol-selectbox', 'absol-bscroller'],
    extendEvent: ['change', 'add', 'remove', 'activevaluechange'],
    attr: {
      tabindex: '1'
    }
  }, true);
};
SelectBox.prototype._requireItem = function (n) {
  var itemElt;
  while (this.$items.length < n) {
    itemElt = requireItem(this);
    this.addChild(itemElt);
    this.$items.push(itemElt);
  }
  while (this.$items.length > n) {
    itemElt = this.$items.pop();
    this.removeChild(itemElt);
    releaseItem(itemElt);
  }
};
SelectBox.prototype._assignItems = function (items) {
  for (var i = 0; i < this.$items.length && i < items.length; ++i) {
    this.$items[i].data = items[i];
  }
};

/***
 *
 * @param {string[] | number[]} values
 * @private
 */
SelectBox.prototype._getItemsByValues = function (values) {
  var selectListBoxElt = this.$selectlistBox;
  var itemHolders = values.reduce(function (ac, cr) {
    ac.push.apply(ac, selectListBoxElt.findItemsByValue(cr));
    return ac;
  }, []);
  if (this.orderly) {
    itemHolders.sort(function (a, b) {
      return a.idx - b.idx;
    });
  }
  return itemHolders.map(function (holder) {
    return holder.item;
  });
};
SelectBox.prototype._updateItems = function () {
  this.viewItemsByValues(this._values);
};
SelectBox.prototype.viewItemsByValues = function (values) {
  var items = this._getItemsByValues(values);
  var cBound = this.getBoundingClientRect();
  this._requireItem(items.length);
  this._assignItems(items);
  if (this.itemFocusable) {
    this._updateFocusItem();
  }
  var nBound = this.getBoundingClientRect();
  if (nBound.width != cBound.width || nBound.height != cBound.height) {
    _ResizeSystem["default"].updateUp(this);
  }
};
SelectBox.property = {};
SelectBox.property.disabled = _SelectMenu["default"].property.disabled;
SelectBox.property.hidden = _SelectMenu["default"].property.hidden;
SelectBox.property.isFocus = _SelectMenu["default"].property.isFocus;
SelectBox.prototype.init = function (props) {
  props = props || [];
  Object.keys(props).forEach(function (key) {
    if (props[key] === undefined) delete props[key];
  });
  this["super"](props);
};
SelectBox.prototype._updateFocusItem = function () {
  for (var i = 0; i < this.$items.length; ++i) {
    this.$items[i].active = this.$items[i].value == this._activeValue;
  }
};
SelectBox.prototype.init = _SelectMenu["default"].prototype.init;
SelectBox.property.items = {
  set: function set(items) {
    items = items || [];
    this.$selectlistBox.items = items;
    this.addStyle('--list-min-width', this.$selectlistBox._estimateWidth + 'px');
    this._updateItems();
  },
  get: function get() {
    return this.$selectlistBox.items;
  }
};
SelectBox.property.values = {
  set: function set(values) {
    values = values || [];
    values = values instanceof Array ? values : [values];
    this._values = values;
    this.$selectlistBox.values = values;
    this._updateItems();
  },
  get: function get() {
    return this._values || [];
  }
};
SelectBox.property.orderly = {
  set: function set(value) {
    var needUpdate = this._orderly === this._orderly;
    if (typeof value === 'function') {
      this._orderly;
    } else this._orderly = !!value;
    if (needUpdate) {
      this.values = this.values;
    }
  },
  get: function get() {
    return !!this._orderly;
  }
};
SelectBox.property.disableClickToFocus = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disable-click-to-focus');
    } else {
      this.removeClass('as-disable-click-to-focus');
    }
  },
  get: function get() {
    return this.hasClass('as-disable-click-to-focus');
  }
};
SelectBox.property.itemFocusable = {
  set: function set(value) {
    if (value) {
      this.addClass('as-item-focusable');
    } else {
      this.removeClass('as-item-focusable');
    }
    this._updateFocusItem();
  },
  get: function get() {
    return this.hasClass('as-item-focusable');
  }
};
SelectBox.property.activeValue = {
  set: function set(value) {
    this._activeValue = value;
    if (this.itemFocusable) {
      this._updateFocusItem();
      //todo
    }
  },

  get: function get() {
    return this._activeValue;
  }
};
SelectBox.eventHandler = Object.assign({}, _SelectMenu["default"].eventHandler);
SelectBox.eventHandler.click = function (event) {
  if (event.target === this && !this.disableClickToFocus) {
    this.isFocus = !this.isFocus;
  }
};
SelectBox.eventHandler.bodyClick = function (event) {
  if (!_EventEmitter["default"].hitElement(this.$selectlistBox, event) && event.target !== this) {
    this.isFocus = false;
  }
};
SelectBox.eventHandler.selectListBoxPressItem = function (event) {
  var data = event.data;
  var currentValues = this.$selectlistBox.values;
  currentValues.push(data.value);
  this.$selectlistBox.values = currentValues;
  this.$selectlistBox.updatePosition();
  this._activeValue = data.value;
  this._updateItems();
  this.isFocus = false;
  this.emit('add', Object.assign({}, event, {
    type: 'add',
    target: this,
    value: data.value,
    data: data,
    itemData: data
  }), this);
  this.emit('change', Object.assign({}, event, {
    type: 'change',
    action: 'add',
    target: this,
    value: data.value,
    data: data,
    values: this.values
  }), this);
};
SelectBox.eventHandler.pressCloseItem = function (item, event) {
  var value = item.value;
  var data = item.data;
  var currentValues = this.$selectlistBox.values;
  var index = currentValues.indexOf(value);
  if (index >= 0) {
    currentValues.splice(index, 1);
  }
  this.$selectlistBox.values = currentValues;
  this.$selectlistBox.updatePosition();
  this._values = currentValues;
  this._updateItems();
  this.emit('remove', Object.assign({}, event, {
    type: 'change',
    target: this,
    data: data,
    value: value,
    itemData: data
  }), this);
  this.emit('change', Object.assign({}, event, {
    type: 'change',
    action: 'remove',
    target: this,
    data: data,
    value: value,
    itemData: data
  }), this);
};
SelectBox.eventHandler.pressItem = function (item, event) {
  var value = item.value;
  if (this.itemFocusable) {
    var prevActiveValue = this.activeValue;
    if (value !== prevActiveValue) {
      this.activeValue = value;
      this.emit('activevaluechange', {
        target: this,
        originEvent: event,
        prevActiveValue: prevActiveValue,
        activeValue: value
      }, this);
    }
  }
};
SelectBox.eventHandler.pressCloseItem = function (item, event) {
  var value = item.value;
  var data = item.data;
  var index;
  index = this._values.indexOf(value);
  if (index >= 0) {
    this._values.splice(index, 1);
    this._updateItems();
    this.$selectlistBox.values = this._values;
    this.emit('remove', Object.assign({}, event, {
      type: 'change',
      target: this,
      data: data,
      value: value,
      itemData: data
    }), this);
    this.emit('change', Object.assign({}, event, {
      type: 'change',
      action: 'remove',
      target: this,
      data: data,
      value: value,
      itemData: data
    }), this);
  }
};
_ACore["default"].install(SelectBox);
var _default = SelectBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function SelectBoxItem() {
  this._themeClassName = null;
  this.$text = $('.absol-selectbox-item-text', this);
  this.$close = $('.absol-selectbox-item-close', this);
  this.$close.on('click', this.eventHandler.clickClose);
  this.on('click', this.eventHandler.click);
}
;
SelectBoxItem.tag = 'SelectBoxItem'.toLowerCase();
SelectBoxItem.render = function () {
  return _({
    "class": ['absol-selectbox-item'],
    extendEvent: ['close', 'press'],
    child: ['.absol-selectbox-item-text', {
      "class": 'absol-selectbox-item-close',
      child: '<span class="mdi mdi-close"></span>'
    }]
  });
};
SelectBoxItem.eventHandler = {};
SelectBoxItem.eventHandler.clickClose = function (event) {
  this.emit('close', event);
};
SelectBoxItem.eventHandler.click = function (event) {
  if (!_EventEmitter["default"].hitElement(this.$close, event)) {
    this.emit('press', event, this);
  }
};
SelectBoxItem.property = {};
SelectBoxItem.property.data = {
  set: function set(value) {
    this._data = value;
    this.$text.clearChild();
    this.$text.addChild(_('<span>' + this.text + '</span>'));
    if (value && value.desc) {
      this.attr('title', value.desc);
    } else {
      this.attr('title', undefined);
    }
    if (this._themeClassName) this.removeClass(this._themeClassName);
    this._themeClassName = null;
    if (this.theme) {
      this._themeClassName = 'as-theme-' + this.theme;
      this.addClass(this._themeClassName);
    }
  },
  get: function get() {
    return this._data;
  }
};
SelectBoxItem.property.text = {
  get: function get() {
    if (typeof this._data == 'string') return this._data;else return this._data.text;
  }
};
SelectBoxItem.property.value = {
  get: function get() {
    if (typeof this._data == 'string') return this._data;else return this._data.value;
  }
};
SelectBoxItem.property.theme = {
  get: function get() {
    return this._data.theme || null;
  }
};
SelectBoxItem.property.active = {
  set: function set(value) {
    if (value) {
      this.addClass('as-active');
    } else {
      this.removeClass('as-active');
    }
  },
  get: function get() {
    return this.hasClass('as-active');
  }
};
_ACore["default"].install(SelectBoxItem);
var _default = SelectBoxItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
exports.makeItem = makeItem;
exports.measureListHeight = measureListHeight;
exports.measureListSize = measureListSize;
exports.measureMaxDescriptionWidth = measureMaxDescriptionWidth;
exports.measureMaxTextWidth = measureMaxTextWidth;
exports.releaseItem = releaseItem;
exports.requireItem = requireItem;
__webpack_require__(21540);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _utils = __webpack_require__(84512);
__webpack_require__(57040);
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var itemPool = [];
function onMousedownItem(event) {
  if (_EventEmitter["default"].isMouseRight(event)) return;
  var thisSL = this.$parent;
  if (thisSL) {
    thisSL.value = this.value;
    thisSL.emit('pressitem', {
      type: 'pressitem',
      target: thisSL,
      itemElt: this,
      value: this.value,
      data: this.data
    });
  }
}
function makeItem() {
  return _({
    tag: 'selectlistitem',
    on: {
      mousedown: onMousedownItem
    }
  });
}
function requireItem($parent) {
  var item;
  if (itemPool.length > 0) {
    item = itemPool.pop();
  } else {
    item = makeItem();
  }
  item.$parent = $parent;
  return item;
}
function releaseItem(item) {
  item.$parent = null;
  item.removeClass('selected');
  itemPool.push(item);
}
;
function measureMaxDescriptionWidth(items) {
  var maxDescWidth = 0;
  var maxText = 0;
  var maxEst = 0;
  var est;
  for (var i = 0; i < items.length; ++i) {
    if (items[i].desc) {
      est = (0, _utils.estimateWidth14)(items[i].desc);
      if (est > maxEst) {
        maxEst = est;
        maxText = items[i].desc;
      }
    }
  }
  if (maxText) maxDescWidth = (0, _utils.measureText)(maxText, 'italic 14px  sans-serif').width;
  return maxDescWidth;
}
;
function measureMaxTextWidth(items) {
  var maxTextWidth = 0;
  var maxText = 0;
  var maxEst = 0;
  var maxLv = 0;
  var est;
  var text;
  var item;
  for (var i = 0; i < items.length; ++i) {
    item = items[i];
    if (item.text) {
      text = item.text;
      est = (0, _utils.estimateWidth14)(text) + 14 * 0.9 * (item.level || 0);
      if (est > maxEst) {
        maxEst = est;
        maxText = text;
        maxLv = item.level || 0;
      }
    }
  }
  if (maxText) maxTextWidth = 14 * 0.9 * maxLv + (0, _utils.measureText)(maxText, '14px Arial, Helvetica, sans-serif').width + 14; //padding left, right 7px
  return maxTextWidth;
}
function measureListHeight(items) {
  var border = 0;
  var n = items.length - 1;
  return items.length * 20 + border;
}
function measureListSize(items) {
  var descWidth = measureMaxDescriptionWidth(items);
  var textWidth = measureMaxTextWidth(items);
  var width = textWidth;
  if (descWidth > 0) {
    width += descWidth + 14;
  }
  var height = measureListHeight(items);
  return {
    width: width,
    height: height,
    descWidth: descWidth,
    textWidth: textWidth
  };
}

/*global absol*/
/***
 * @extends AElement
 * @constructor
 */
function SelectList() {
  var thisSL = this;
  this.defineEvent(['pressitem', 'cancelasync', 'valuevisibilityasync', 'finishasync', 'sizechangeasync']);
  this.$attachhook = _('attachhook').addTo(this);
  this.sync = new Promise(function (rs) {
    thisSL.$attachhook.once('error', rs);
  });
  this.$items = [];
  this.$itemByValue = {}; //quick find element
  this.$selectedItem = undefined;
  this.measuredSize = {
    width: 0,
    height: 0,
    descWidth: 0,
    textWidth: 0
  };
  this._itemSession = 0;
  this._finished = true;
}
;
SelectList.tag = "SelectList".toLowerCase();
SelectList.render = function () {
  return _('.absol-selectlist');
};
SelectList.prototype._updateSelectedItem = function () {
  var newSelectedItemElt = this.$itemByValue[this._selectValue];
  if (newSelectedItemElt != this.$selectedItem) {
    if (this.$selectedItem) {
      this.$selectedItem.removeClass('selected');
    }
    if (newSelectedItemElt) {
      newSelectedItemElt.addClass('selected');
      this.$selectedItem = newSelectedItemElt;
    }
  }
};
SelectList.prototype._requireItems = function (itemCout) {
  var item;
  while (this.$items.length < itemCout) {
    item = requireItem(this);
    this.$items.push(item);
    this.addChild(item);
  }
  while (this.$items.length > itemCout) {
    item = this.$items.pop();
    item.remove();
    releaseItem(item);
  }
};
SelectList.prototype._assignItems = function (from, to) {
  var foundSelected = false;
  var itemElt;
  var item;
  for (var i = from; i < to; ++i) {
    itemElt = this.$items[i];
    item = this._items[i];
    itemElt.data = item;
    itemElt.__index__ = i;
    if (this.$itemByValue[item.value]) {
      console.warn('Value  ' + this.$items[i].value + ' is duplicated!');
    } else {
      this.$itemByValue[item.value] = itemElt;
      if (this._selectValue == item.value) {
        itemElt.addClass('selected');
        this.$selectedItem = itemElt;
        foundSelected = true;
      } else {
        itemElt.removeClass('selected');
      }
    }
  }
  return foundSelected;
};
SelectList.prototype.setItemsAsync = function (items) {
  //start process
  this._finished = false;
  var session = Math.floor(Math.random() * 1000000);
  this._itemSession = session;
  this._items = items || [];
  this.$itemByValue = {};
  this.measuredSize = measureListSize(items);
  this.style.setProperty('--select-list-desc-width', this.measuredSize.descWidth / 14 + 'em'); //addStyle notWork because of convert to cameCase

  var thisSL = this;
  var i = 0;
  var limit = 20;
  function tick() {
    if (thisSL._itemSession != session) {
      thisSL.emit('cancelasync', {
        session: session,
        type: 'cancelasync'
      }, this);
      return;
    }
    if (i >= items.length) {
      thisSL._updateSelectedItem();
      thisSL._finished = false;
      thisSL.emit('finishasync', {
        session: session,
        type: 'finishasync'
      }, this);
      return;
    }
    var n = Math.min(items.length - i, limit);
    var itemCout = i + n;
    thisSL._requireItems(itemCout);
    i = itemCout;
    var foundSelected = thisSL._assignItems(itemCout - n, itemCout);
    if (foundSelected) {
      thisSL.emit('valuevisibilityasync', {
        session: session,
        type: 'valuevisibilityasync',
        itemElt: thisSL.$items[i]
      }, thisSL);
    }
    thisSL.emit('sizechangeasync', {
      session: session,
      type: 'sizechangeasync'
    }, this);
    setTimeout(tick, 2);
  }
  setTimeout(tick, 2);
  return Object.assign({
    session: session
  }, this.measuredSize);
};
SelectList.prototype.setItems = function (items) {
  this._finished = false;
  var session = Math.floor(Math.random() * 1000000);
  this._itemSession = session;
  this._items = items || [];
  this.$itemByValue = {};
  this.measuredSize = measureListSize(items);
  this.style.setProperty('--select-list-desc-width', this.measuredSize.descWidth / 14 + 'em'); //addStyle notWork because of convert to cameCase
  var itemCount = items.length;
  this._requireItems(itemCount);
  this._assignItems(0, itemCount);
  this._finished = true;
  return {
    session: this._itemSession,
    width: this._descWidth + this._textWidth + 14,
    height: this._height
  };
};
SelectList.property = {};

/**
 * @type {SelectList}
 */
SelectList.property.items = {
  set: function set(value) {
    value = value || [];
    this.setItems(value);
  },
  get: function get() {
    return this._items || [];
  }
};
SelectList.property.value = {
  set: function set(value) {
    this._selectValue = value;
    this._updateSelectedItem();
  },
  get: function get() {
    return this._selectValue;
  }
};
SelectList.property.item = {
  get: function get() {
    if (this.$selectedItem) return this.$selectedItem.data;
    return undefined;
  }
};
SelectList.property.selectedIndex = {
  get: function get() {
    throw new Error("selectedIndex getter is deprecated");
  }
};
SelectList.prototype.init = function (props) {
  props = props || {};
  var value = props.value;
  delete props.value;
  this["super"](props);
  if (value !== undefined) this.value = value;
};
SelectList.eventHandler = {};
_ACore["default"].install(SelectList);
var _default = SelectList;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = exports.calcWidthLimit = exports.VALUE_NORMAL = exports.VALUE_HIDDEN = void 0;
__webpack_require__(25929);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _SelectList = __webpack_require__(884);
var _Dom = __webpack_require__(64821);
var _listIndexing = __webpack_require__(72384);
var _utils = __webpack_require__(84512);
var _ListSearchMaster = _interopRequireDefault(__webpack_require__(85604));
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _DelaySignal = _interopRequireDefault(__webpack_require__(81809));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var $$ = _ACore["default"].$$;
var VALUE_HIDDEN = -1;
exports.VALUE_HIDDEN = VALUE_HIDDEN;
var VALUE_NORMAL = 1;
exports.VALUE_NORMAL = VALUE_NORMAL;
var calcWidthLimit = function calcWidthLimit() {
  var width = (0, _Dom.getScreenSize)().width;
  if (_BrowserDetector["default"].isMobile) {
    width -= 20;
  } else {
    width = width * 0.9 - 250;
  }
  return Math.min(width, 1280);
};
exports.calcWidthLimit = calcWidthLimit;
var makeSearchItem = function makeSearchItem(it, idx2key) {
  var res = {
    value: idx2key.length
  };
  var valueKey;
  res.text = it.text + '';
  if (it.desc) res.text += it.desc;
  valueKey = (0, _utils.keyStringOf)(it.value);
  it.valueKey = valueKey;
  idx2key.push(valueKey);
  if (it.items && it.items.length > 0 && it.items.map) {
    res.items = it.items.map(function (cIt) {
      return makeSearchItem(cIt, idx2key);
    });
  }
  return res;
};

/***
 * @extends Follower
 * @constructor
 */
function SelectListBox() {
  this._initDomHook();
  this._initControl();
  this._initScroller();
  this._initProperty();

  /***
   * @name strictValue
   * @type {boolean}
   * @memberOf SelectListBox#
   */

  /***
   * @name enableSearch
   * @type {boolean}
   * @memberOf SelectListBox#
   */
}

SelectListBox.tag = 'SelectListBox'.toLowerCase();
SelectListBox.render = function () {
  return _({
    tag: 'follower',
    attr: {
      tabindex: 0
    },
    "class": 'as-select-list-box',
    extendEvent: ['pressitem'],
    child: [{
      "class": 'as-select-list-box-search-ctn',
      child: 'searchtextinput'
    }, {
      "class": ['as-bscroller', 'as-select-list-box-scroller'],
      child: [{
        "class": ['as-select-list-box-content'],
        child: Array(SelectListBox.prototype.preLoadN).fill('.as-select-list-box-page')
      }]
    }, 'attachhook.as-dom-signal'],
    props: {
      anchor: [1, 6, 2, 5]
    }
  });
};
SelectListBox.prototype.toLoadNextY = 200;
SelectListBox.prototype.preLoadN = 3;
SelectListBox.prototype.itemHeightMode = [20, 30];
SelectListBox.prototype.itemHeight = 20;
SelectListBox.prototype.revokeResource = function () {
  if (this.searchMaster) {
    this.searchMaster.destroy();
    this.searchMaster = null;
  }
  (0, _utils.revokeResource)(this._items);

  // var n = items.length;
  this._items = undefined;
  (0, _utils.revokeResource)(this.idx2key);
  this.idx2key = undefined;
  (0, _utils.revokeResource)(this.key2idx);
  this.key2idx = undefined;
  (0, _utils.revokeResource)(this.searchingItems);
  this.searchingItems = undefined;
  (0, _utils.revokeResource)(this._itemNodeHolderByValue);
  this._itemNodeHolderByValue = undefined;
  // this._filteredItems = [];// not need , only use when search
  (0, _utils.revokeResource)(this._preDisplayItems);
  this._preDisplayItems = undefined;
  (0, _utils.revokeResource)(this._displayItems);
  this._displayItems = undefined;
  (0, _utils.revokeResource)(this._searchCache);
  this._searchCache = undefined;
};
SelectListBox.prototype._initDomHook = function () {
  if (this.$attachhook) this.$attachhook.cancelWaiting();
  this.domSignal = new _DelaySignal["default"]();
  this.domSignal.on('viewListAt', this.viewListAt.bind(this));
  this.domSignal.on('viewListAtFirstSelected', this.viewListAtFirstSelected.bind(this));
  this.domSignal.on('viewListAtCurrentScrollTop', this.viewListAtCurrentScrollTop.bind(this));
  /**
   *
   * @type {ListSearchMaster|null}
   */
  this.searchMaster = null;
  this.widthLimit = calcWidthLimit();
  this.addStyle('--as-width-limit', this.widthLimit + 'px');
};
SelectListBox.prototype._initControl = function () {
  this._currentOffset = 0;
  this._startItemIdx = 0;
  this.$searchInput = $('searchtextinput', this).on('stoptyping', this.eventHandler.searchModify);
};
SelectListBox.prototype._initScroller = function () {
  this.$content = $('.as-select-list-box-content', this);
  this._estimateHeight = 0;
  this._pageOffsets = Array(this.preLoadN + 1).fill(0);
  this.$listPages = $$('.as-select-list-box-page', this);
  this.$listScroller = $('.as-select-list-box-scroller', this).on('scroll', this.eventHandler.scroll);
};
SelectListBox.prototype._initProperty = function () {
  /***
   *   items  =(search, filler)=> filteredItems =(list to list, tree to list)=>  preDisplayItems =(remove hidden item)=> displayItem
   *
   */

  this._items = [];
  this._itemNodeList = []; // use for tree
  this._values = [];
  this._valueDict = {};
  this._itemNodeHolderByValue = {};
  // this._filteredItems = [];// not need , only use when search
  this._preDisplayItems = [];
  this._displayItems = [];
  this._searchCache = {};
  this._displayValue = VALUE_NORMAL;
  this.displayValue = VALUE_NORMAL;
  this.items = [];
};
SelectListBox.prototype._requireItem = function (pageElt, n) {
  var itemElt;
  while (pageElt.childNodes.length > n) {
    itemElt = pageElt.lastChild;
    itemElt.selfRemove();
    (0, _SelectList.releaseItem)(itemElt);
  }
  while (pageElt.childNodes.length < n) {
    itemElt = (0, _SelectList.requireItem)(this);
    pageElt.addChild(itemElt);
  }
};
SelectListBox.prototype._assignItems = function (pageElt, offset) {
  var n = Math.min(this._displayItems.length - offset, pageElt.childNodes.length);
  var itemElt, value;
  var data;
  for (var i = 0; i < n; ++i) {
    itemElt = pageElt.childNodes[i];
    data = this._displayItems[offset + i];
    if (data && data !== true && data.text) {
      if (!data.textLength) data.textLength = (0, _utils.measureText)(data.text + '', '14px arial').width;
      if (data.textLength > this.widthLimit - 5) {
        itemElt.attr('title', data.text);
      } else itemElt.attr('title', null);
    } else {
      itemElt.attr('title', null);
    }
    itemElt.data = data;
    value = itemElt.value + '';
  }
};
SelectListBox.prototype._itemsToNodeList = function (items) {
  return items;
};

/***
 *
 * @param {Array<{value:String|Number}>} items
 * @return {Array<{value:String|Number}>}
 */
SelectListBox.prototype._filterDisplayItems = function (items) {
  if (this._displayValue === VALUE_NORMAL) return items;
  var dict = this._valueDict;
  return items.filter(function (item) {
    return !dict[item.value + ''];
  });
};
SelectListBox.prototype._updateSelectedItem = function () {
  var valueDict = this._valueDict;
  this.$listPages.forEach(function (pageElt) {
    Array.prototype.forEach.call(pageElt.childNodes, function (itemElt) {
      var value = itemElt.value + '';
      if (valueDict[value]) {
        itemElt.selected = true;
      } else {
        itemElt.selected = false;
      }
    });
  });
};

/***
 *
 * @param {number} offset
 */
SelectListBox.prototype.viewListAt = function (offset) {
  var _this = this;
  if (!this.isDescendantOf(document.body)) {
    this.$attachhook.once('attached', function () {
      _this.domSignal.emit('viewListAt', offset);
    });
    return;
  }
  var fontSize = this.$listScroller.getFontSize() || 14;
  offset = Math.max(0, Math.min(offset, this._displayItems.length - 1));
  var screenSize = (0, _Dom.getScreenSize)();
  var maxItem = Math.ceil(Math.max(window.screen.height, screenSize.height) / this.itemHeight);
  this._pageOffsets[0] = Math.max(offset - maxItem, 0);
  for (var i = 1; i <= this.preLoadN; ++i) {
    this._pageOffsets[i] = Math.min(this._pageOffsets[i - 1] + maxItem, this._displayItems.length);
  }
  var sIdx, nItem, pageBound;
  var pageElt;
  for (var pageIndex = 0; pageIndex < this.preLoadN; ++pageIndex) {
    sIdx = this._pageOffsets[pageIndex];
    nItem = this._pageOffsets[pageIndex + 1] - sIdx;
    pageElt = this.$listPages[pageIndex];
    pageElt.addStyle('top', this._pageOffsets[pageIndex] * this.itemHeight / 14 + 'em');
    this._requireItem(pageElt, nItem);
    this._assignItems(pageElt, sIdx);
    pageBound = pageElt.getBoundingClientRect();
  }
  this._updateSelectedItem();
};
SelectListBox.prototype.viewListAtFirstSelected = function () {
  if (!this.isDescendantOf(document.body)) {
    this.domSignal.emit('viewListAtFirstSelected');
    return;
  }
  if (this._displayValue == VALUE_HIDDEN) {
    return false;
  } else if (this._values.length > 0) {
    var value = this._values[0];
    var itemHolders = this._displayItemHolderByValue[value + ''];
    if (itemHolders) {
      this.domSignal.once('scrollIntoSelected', function () {
        var holder = itemHolders[0];
        this.viewListAt(holder.idx);
        var itemElt = $('.as-selected', this.$listScroller);
        if (itemElt) {
          var scrollBound = this.$listScroller.getBoundingClientRect();
          var itemBound = itemElt.getBoundingClientRect();
          this.$listScroller.scrollTop += itemBound.top - scrollBound.top;
        }
      }.bind(this));
      this.domSignal.emit('scrollIntoSelected');
      return true;
    } else return false;
  } else return false;
};
SelectListBox.prototype.viewListAtCurrentScrollTop = function () {
  if (!this.isDescendantOf(document.body)) {
    this.emit('viewListAtCurrentScrollTop');
    return;
  }
  this.viewListAt(Math.floor(this.$listScroller.scrollTop / this.itemHeight));
};
SelectListBox.prototype.searchItemByText = function (text) {
  var _this2 = this;
  text = text.trim().replace(/\s\s+/, ' ');
  if (text.length === 0) return Promise.resolve(this._items);
  this.prepareSearch();
  this._searchCache[text] = this._searchCache[text] || this.searchMaster.query({
    text: text
  }).then(function (searchResult) {
    if (!searchResult) return;
    var scoreOf = function scoreOf(it) {
      var idx = _this2.key2idx[it.valueKey];
      var sc = searchResult[idx];
      if (!sc) return -Infinity;
      return Math.max(sc[0], sc[1]) * 1000000 - idx;
    };
    var makeList = function makeList(originItems) {
      var items = originItems.filter(function (it) {
        var idx = _this2.key2idx[it.valueKey];
        if (searchResult[idx]) return true;
        return false;
      }).map(function (it) {
        var cpItem = Object.assign({}, it);
        if (it.items) cpItem.items = makeList(it.items);
        return cpItem;
      });
      items.sort(function (a, b) {
        return scoreOf(b) - scoreOf(a);
      });
      return items;
    };
    return makeList(_this2._items);
  });
  return this._searchCache[text];
};
SelectListBox.prototype.resetSearchState = function () {
  this.$searchInput.value = '';
  this._preDisplayItems = this._itemsToNodeList(this._items);
  this._updateDisplayItem();
  this.domSignal.emit('viewListAt', 0);
  this.$listScroller.scrollTop = 0;
};
SelectListBox.prototype.notifyPressOut = function () {
  this.emit('pressout', {
    target: this,
    type: 'pressout'
  }, this);
};
SelectListBox.prototype.notifyPressClose = function () {
  this.emit('pressclose', {
    target: this,
    type: 'pressclose'
  }, this);
};
SelectListBox.prototype._findFirstPageIdx = function () {
  for (var i = 0; i < this.preLoadN; ++i) {
    if (this._pageOffsets[i + 1] - this._pageOffsets[i] > 0) {
      return i;
    }
  }
  return -1;
};
SelectListBox.prototype._findLastPageIdx = function () {
  for (var i = this.preLoadN - 1; i >= 0; --i) {
    if (this._pageOffsets[i + 1] - this._pageOffsets[i] > 0) {
      return i;
    }
  }
  return -1;
};
SelectListBox.prototype._updateDisplayItemIndex = function () {
  this._displayItemHolderByValue = (0, _listIndexing.indexingByValue)(this._displayItems, {});
};
SelectListBox.prototype._updateItemNodeIndex = function () {
  this._itemNodeHolderByValue = (0, _listIndexing.depthIndexingByValue)(this._items);
};
SelectListBox.prototype._updateDisplayItem = function () {
  this._displayItems = this._filterDisplayItems(this._preDisplayItems);
  this._updateDisplayItemIndex();
  this.$content.addStyle({
    'height': this._displayItems.length * this.itemHeight / 14 + 'em'
  });
};
SelectListBox.prototype.focus = function () {
  if (this.enableSearch) this.$searchInput.focus();
};
SelectListBox.prototype.footerMinWidth = 0;
SelectListBox.prototype._updateItems = function () {
  this._hasIcon = this._items.some(function hasIcon(it) {
    var res = !!it.icon;
    if (!res && it.items) {
      res = it.items.some(hasIcon);
    }
    return res;
  });
  if (this._hasIcon) {
    this.itemHeight = this.itemHeightMode[1];
  } else {
    this.itemHeight = this.itemHeightMode[0];
  }
  this._preDisplayItems = this._itemsToNodeList(this._items);
  this._searchCache = {};
  var estimateSize = (0, _SelectList.measureListSize)(this._itemNodeList);
  estimateSize.width = Math.min(this.widthLimit || Infinity, estimateSize.width);
  this._estimateSize = estimateSize;
  this._estimateWidth = estimateSize.width;
  this._estimateDescWidth = estimateSize.descWidth;
  if (this._hasIcon) {
    this._estimateWidth += 32;
    this.addClass('as-has-icon');
  } else {
    this.removeClass('as-has-icon');
  }
  this.addStyle('--select-list-estimate-width', Math.max(this.footerMinWidth, this._estimateWidth) / 14 + 'em');
  this.addStyle('--select-list-desc-width', this._estimateDescWidth / 14 + 'em');
  this._updateDisplayItem();
  this.transferSearchDataIfNeed();
};
SelectListBox.prototype.transferSearchDataIfNeed = function () {
  var _this3 = this;
  if (!this.searchMaster) return;
  this.idx2key = [];
  this.searchingItems = this._items.map(function (it) {
    return makeSearchItem(it, _this3.idx2key);
  });
  this.key2idx = this.idx2key.reduce(function (ac, cr, i) {
    ac[cr] = i;
    return ac;
  }, {});
  this.searchMaster.transfer(this.searchingItems);
};
SelectListBox.prototype.prepareSearch = function () {
  if (!this.searchMaster) {
    this.searchMaster = new _ListSearchMaster["default"]();
    this.transferSearchDataIfNeed();
  }
};

/***
 *
 * @param value
 * @returns {{idx: number, item:{text:string, value:number|string}}[]}
 */
SelectListBox.prototype.findDisplayItemsByValue = function (value) {
  return (this._displayItemHolderByValue[value] || []).slice();
};
SelectListBox.prototype._implicit = function (values) {
  if (!(values instanceof Array)) {
    if (values === null || values === undefined) values = [];else values = [values];
  }
  return values.reduce(function (ac, cr) {
    if (!ac.dict[cr]) {
      ac.dict[cr] = true;
      ac.result.push(cr);
    }
    return ac;
  }, {
    result: [],
    dict: {}
  }).result;
};
SelectListBox.prototype._explicit = function (values) {
  if (this.strictValue) {
    return values.filter(function (value) {
      return !!this._itemNodeHolderByValue[value];
    }.bind(this));
  } else {
    return values.slice();
  }
};

/***
 *
 * @param value
 * @returns {{idx: number, item:{text:string, value:number|string}}[]}
 */
SelectListBox.prototype.findItemsByValue = function (value) {
  return (this._itemNodeHolderByValue[value] || []).slice();
};
SelectListBox.property = {};

/***
 *
 * @type {SelectListBox|{}}
 */
SelectListBox.property.items = {
  set: function set(items) {
    items = items || [];
    if (!(items instanceof Array)) items = [];
    items = (0, _utils.copySelectionItemArray)(items, {
      removeNoView: true,
      removeNewLine: true
    });
    this._items = items;
    this._itemNodeList = this._itemsToNodeList(this._items);
    this._updateItemNodeIndex();
    this._updateItems();
    this.viewListAt(0);
  },
  get: function get() {
    return this._items;
  }
};
SelectListBox.property.values = {
  set: function set(values) {
    values = this._implicit(values);
    this._values = values;
    this._valueDict = values.reduce(function (ac, cr) {
      ac[cr + ''] = true;
      return ac;
    }, {});
    this._updateDisplayItem();
    this.viewListAtCurrentScrollTop();
    if (this._pageOffsets[this.preLoadN] > this._pageOffsets[0]) this._updateSelectedItem();
  },
  get: function get() {
    return this._explicit(this._values);
  }
};
SelectListBox.property.strictValue = {
  set: function set(value) {
    if (value) {
      this.addClass('as-strict-value');
    } else {
      this.removeClass('as-strict-value');
    }
  },
  get: function get() {
    return this.hasClass('as-strict-value');
  }
};
SelectListBox.property.displayValue = {
  set: function set(value) {
    this._displayValue = value;
    this._displayItems = this._filterDisplayItems(this._preDisplayItems);
    this._updateItemNodeIndex();
    if (value === VALUE_HIDDEN) {
      this.addClass('as-value-hidden');
    } else {
      this.removeClass('as-value-hidden');
    }
  },
  get: function get() {
    return this._displayValue;
  }
};
SelectListBox.property.enableSearch = {
  set: function set(value) {
    if (value) this.addClass('as-enable-search');else this.removeClass('as-enable-search');
  },
  get: function get() {
    return this.hasClass('as-enable-search');
  }
};

/***
 *
 * @type {SelectListBox|{}}
 */
SelectListBox.eventHandler = {};

/*
*
* @param {MouseEvent} event
*/
SelectListBox.eventHandler.click = function (event) {
  if (event.target === this) this.notifyPressOut();
};

/***
 * @this SelectListBox
 */
SelectListBox.eventHandler.searchModify = function () {
  var _this4 = this;
  var text = this.$searchInput.value;
  var searchSession = Math.random() + '';
  this._searchSession = searchSession;
  this.searchItemByText(text).then(function (searchedItems) {
    if (searchSession !== _this4._searchSession) return;
    _this4._preDisplayItems = _this4._itemsToNodeList(searchedItems);
    _this4._displayItems = _this4._filterDisplayItems(_this4._preDisplayItems);
    _this4.$content.addStyle({
      'height': _this4._displayItems.length * _this4.itemHeight / 14 + 'em'
    });
    _this4._updateItemNodeIndex();
    _this4.viewListAt(0);
    _this4.$listScroller.scrollTop = 0;
    _this4.updatePosition();
  });
};
SelectListBox.eventHandler.scroll = function () {
  var itemHeight = this.itemHeight * $(document.body).getFontSize() / 14;
  var scrollerBound = this.$listScroller.getBoundingClientRect();
  var topIdx = this._findFirstPageIdx();
  if (!this.$listPages[topIdx]) return;
  var screenSize = (0, _Dom.getScreenSize)();
  var maxItem = Math.ceil(Math.max(window.screen.height, screenSize.height) / itemHeight);
  var topBound = this.$listPages[topIdx].getBoundingClientRect();
  var botIdx = this._findLastPageIdx();
  if (!this.$listPages[botIdx]) return;
  var botBound;
  botBound = this.$listPages[botIdx].getBoundingClientRect();
  if (topBound.top > scrollerBound.top || topBound.bottom < scrollerBound.bottom) {
    this.viewListAt(Math.floor(this.$listScroller.scrollTop / itemHeight));
    return;
  }
  if (this._pageOffsets[topIdx] > 0) {
    if (topBound.top + this.toLoadNextY > scrollerBound.top) {
      this._pageOffsets.unshift(this._pageOffsets.pop());
      this.$listPages.unshift(this.$listPages.pop());
      this._pageOffsets[topIdx] = Math.max(0, this._pageOffsets[topIdx + 1] - maxItem);
      this._requireItem(this.$listPages[topIdx], this._pageOffsets[topIdx + 1] - this._pageOffsets[topIdx]);
      this._assignItems(this.$listPages[topIdx], this._pageOffsets[topIdx]);
      this._updateSelectedItem();
      this.$listPages[topIdx].addStyle('top', this._pageOffsets[topIdx] * itemHeight + 'px');
    }
  }
  if (this._pageOffsets[botIdx + 1] < this._displayItems.length) {
    if (botBound.bottom - this.toLoadNextY < scrollerBound.bottom) {
      this._pageOffsets.push(this._pageOffsets.shift());
      this.$listPages.push(this.$listPages.shift());
      this._pageOffsets[botIdx + 1] = Math.min(this._displayItems.length, this._pageOffsets[botIdx] + maxItem);
      this.$listPages[botIdx].addStyle('top', this._pageOffsets[botIdx] * itemHeight + 'px');
      this._requireItem(this.$listPages[botIdx], this._pageOffsets[botIdx + 1] - this._pageOffsets[botIdx]);
      this._assignItems(this.$listPages[botIdx], this._pageOffsets[botIdx]);
      this._updateSelectedItem();
    }
  }
};
_ACore["default"].install(SelectListBox);
var _default = SelectListBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
exports.getDescriptionOfListItem = getDescriptionOfListItem;
exports.getTextOfListItem = getTextOfListItem;
exports.getValueOfListItem = getValueOfListItem;
__webpack_require__(21540);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _CheckboxButton = _interopRequireDefault(__webpack_require__(93475));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
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); }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 *
 * @extends AElement
 * @constructor
 */
function SelectListItem() {
  this.$text = $('span.absol-selectlist-item-text', this);
  this.$textValue = this.$text.childNodes[0];
  this.$descCtn = $('.absol-selectlist-item-desc-container', this);
  this.$desc = $('span.absol-selectlist-item-desc', this.$descCtn);
  this.$descValue = this.$desc.childNodes[0];
  this.$icon = null;
  this._extendClasses = [];
  this._extendStyle = {};
  this._data = "";
  this._level = 0;
  this._icon = null;
  _OOP["default"].drillProperty(this, this, 'noSelect', 'disabled');
  /***
   * @type {AbsolConstructDescriptor|null}
   * @name icon
   * @memberOf SelectListItem#
   */
}

SelectListItem.tag = 'SelectListItem'.toLowerCase();
SelectListItem.render = function () {
  return _({
    "class": 'absol-selectlist-item',
    child: [{
      tag: 'span',
      "class": 'absol-selectlist-item-text',
      child: {
        text: ''
      }
    }, {
      "class": 'absol-selectlist-item-desc-container',
      child: {
        tag: 'span',
        "class": 'absol-selectlist-item-desc',
        child: {
          text: ''
        }
      }
    }]
  });
};
SelectListItem.property = {};
SelectListItem.property.extendClasses = {
  set: function set(value) {
    var i;
    for (i = 0; i < this._extendClasses.length; ++i) {
      this.removeClass(this._extendClasses[i]);
    }
    this._extendClasses = [];
    if (typeof value == 'string') value = value.trim().split(/\s+/);
    value = value || [];
    for (i = 0; i < value.length; ++i) {
      this._extendClasses.push(value[i]);
      this.addClass(value[i]);
    }
  },
  get: function get() {
    return this._extendClasses;
  }
};
SelectListItem.property.extendStyle = {
  set: function set(value) {
    this.removeStyle(this._extendStyle);
    this._extendStyle = Object.assign({}, value || {});
    this.addStyle(this._extendStyle);
  },
  get: function get() {
    return this._extendClasses;
  }
};
SelectListItem.property.icon = {
  /***
   * @this SelectListItem
   * @param icon
   */
  set: function set(icon) {
    if (this.$icon) {
      this.$icon.remove();
      this.$icon = null;
    }
    this._icon = icon || null;
    if (this._icon) {
      this.$icon = _(this._icon);
      this.$icon.addClass('as-select-list-icon');
      this.addChildBefore(this.$icon, this.$text);
    }
  },
  get: function get() {
    return this._icon;
  }
};
SelectListItem.property.data = {
  set: function set(value) {
    this._data = value;
    if (typeof value == 'string') {
      this.$textValue.data = value;
      this.$descValue.data = '';
      this.level = 0;
      this.extendClasses = '';
      this.extendStyle = {};
      this.lastInGroup = false;
      this.isLeaf = false;
      this.selected = false;
      this.disabled = false;
      this.icon = null;
    } else {
      this.$textValue.data = value.text || '';
      this.$descValue.data = value.desc || '';
      this.level = value.level || 0;
      this.extendClasses = value.extendClasses;
      this.extendStyle = value.extendStyle;
      this.lastInGroup = !!value.lastInGroup;
      this.isLeaf = !!value.isLeaf;
      this.selected = !!value.selected;
      this.disabled = value.disabled || value.noSelect;
      this.icon = value.icon;
    }
  },
  get: function get() {
    return this._data;
  }
};
SelectListItem.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
SelectListItem.property.value = {
  get: function get() {
    return getValueOfListItem(this._data);
  }
};
SelectListItem.property.text = {
  get: function get() {
    return getTextOfListItem(this._data);
  }
};
SelectListItem.property.desc = {
  get: function get() {
    return getDescriptionOfListItem(this._data);
  }
};
SelectListItem.property.level = {
  set: function set(value) {
    value = value || 0;
    this._level = value;
    this.addStyle('--level', value);
  },
  get: function get() {
    return this._level;
  }
};
SelectListItem.property.lastInGroup = {
  set: function set(value) {
    if (value) {
      this.addClass('as-last-in-group');
    } else {
      this.removeClass('as-last-in-group');
    }
  },
  get: function get() {
    return this.hasClass('as-last-in-group');
  }
};
SelectListItem.property.isLeaf = {
  set: function set(value) {
    if (value) {
      this.addClass('as-is-leaf');
    } else {
      this.removeClass('as-is-leaf');
    }
  },
  get: function get() {
    return this.hasClass('as-is-leaf');
  }
};
SelectListItem.property.selected = {
  set: function set(value) {
    if (value) {
      this.addClass('as-selected');
    } else {
      this.removeClass('as-selected');
    }
  },
  get: function get() {
    return this.hasClass('as-selected');
  }
};
_ACore["default"].install(SelectListItem);
var _default = SelectListItem;
exports["default"] = _default;
function getTextOfListItem(item) {
  if (item) {
    if (item.match) {} else if (item.text && item.text.match) {
      return item.text;
    } else return '';
  } else return '';
}
function getValueOfListItem(item) {
  if (item) {
    if (item.match) {
      return item;
    } else if (_typeof(item) === "object") return item.value;else return item;
  } else return item;
}
function getDescriptionOfListItem(item) {
  return item && _typeof(item) == "object" ? item.desc : undefined;
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(80571);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _search = __webpack_require__(67858);
var _SelectList = _interopRequireDefault(__webpack_require__(884));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/*global absol*/
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
_ACore["default"].creator['dropdown-ico'] = function () {
  return _(['<svg class="dropdown" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">', '<g transform="translate(0,-197)">', '<path d="m6.3152 218.09a4.5283 4.5283 0 0 0-3.5673 7.3141l43.361 55.641a4.5283 4.5283 0 0 0 7.1421 7e-3l43.496-55.641a4.5283 4.5283 0 0 0-3.5673-7.3216z" />', '</g>', '</svg>'].join(''));
};
function SelectMenu() {
  var thisSM = this;
  this._items = [];
  this._value = null;
  this._lastValue = null;
  this.$holderItem = $('.absol-selectmenu-holder-item', this);
  this.$anchorCtn = SelectMenu.getAnchorCtn();
  this.$anchor = _('.absol-selectmenu-anchor.absol-disabled').addTo(this.$anchorCtn);
  this.$anchorContentCtn = _('.absol-selectmenu-anchor-content-container').addTo(this.$anchor);
  this.$dropdownBox = _('.absol-selectmenu-dropdown-box').addTo(this.$anchorContentCtn);
  this.$searchTextInput = _('searchtextinput').addStyle('display', 'none').addTo(this.$dropdownBox);
  this.$vscroller = _('bscroller').addTo(this.$dropdownBox);
  this.$selectlist = _('selectlist', this).addTo(this.$vscroller).on('sizechangeasync', this.eventHandler.listSizeChangeAsync).on('valuevisibilityasync', this.eventHandler.listValueVisibility);
  this.$scrollTrackElts = [];
  this.$removableTrackElts = [];
  this._itemsByValue = {};
  this.$searchTextInput.on('stoptyping', this.eventHandler.searchModify);
  this._searchCache = {};
  this.$selectlist.on('pressitem', this.eventHandler.selectlistPressItem, true);
  this.$selectlist.on('pressitem', function () {
    thisSM.isFocus = false;
  }, true);
  this._lastValue = "NOTHING_VALUE";
  this._resourceReady = true;
  this.on('mousedown', this.eventHandler.click, true);
  this.on('blur', this.eventHandler.blur);
  this.selectListBound = {
    height: 0,
    width: 0
  };
  this.$attachhook = $('attachhook', this).on('error', this.eventHandler.attached);
  this.sync = new Promise(function (rs) {
    $('attachhook', this).once('error', function () {
      rs();
    });
  });
  this._selectListScrollSession = null;
  this._itemIdxByValue = null;
  return this;
}
SelectMenu.tag = 'selectmenu-old';
SelectMenu.render = function () {
  return _({
    "class": ['absol-selectmenu'],
    extendEvent: ['change', 'minwidthchange'],
    attr: {
      tabindex: '1'
    },
    child: ['.absol-selectmenu-holder-item', {
      tag: 'button',
      "class": 'absol-selectmenu-btn',
      child: ['dropdown-ico']
    }, 'attachhook']
  });
};
SelectMenu.optimizeResource = true;

// //will remove after SelectMenu completed
SelectMenu.getRenderSpace = function () {
  if (!SelectMenu.getRenderSpace.warned) {
    console.warn('SelectMenu.getRenderSpace() will be removed in next version');
  }
  SelectMenu.getRenderSpace.warned = true;
  if (!SelectMenu.$renderSpace) {
    SelectMenu.$renderSpace = _('.absol-selectmenu-render-space').addTo(document.body);
  }
  return SelectMenu.$renderSpace;
};
SelectMenu.getAnchorCtn = function () {
  if (!SelectMenu.$anchorCtn) {
    SelectMenu.$anchorCtn = _('.absol-selectmenu-anchor-container').addTo(document.body);
  }
  return SelectMenu.$anchorCtn;
};
SelectMenu.prototype.updateItem = function () {
  this.$holderItem.clearChild();
  if (this._itemsByValue[this.value]) {
    var elt = _({
      tag: 'selectlistitem',
      props: {
        data: this._itemsByValue[this.value]
      }
    }).addTo(this.$holderItem);
    elt.$descCtn.addStyle('width', this.$selectlist._descWidth + 'px');
  }
};
SelectMenu.prototype._dictByValue = function (items) {
  var dict = {};
  var item;
  for (var i = 0; i < items.length; ++i) {
    item = items[i];
    dict[item.value + ''] = item;
  }
  return dict;
};
SelectMenu.prototype.init = function (props) {
  props = props || {};
  Object.keys(props).forEach(function (key) {
    if (props[key] === undefined) delete props[key];
  });
  if (!('value' in props)) {
    if (props.items && props.items.length > 0) props.value = typeof props.items[0] == 'string' ? props.items[0] : props.items[0].value;
  }
  var value = props.value;
  delete props.value;
  this["super"](props);
  this.value = value;
};
SelectMenu.property = {};
SelectMenu.property.items = {
  set: function set(value) {
    this._searchCache = {};
    this._itemIdxByValue = null;
    /**
     * verity data
     */
    if (value) {
      value.forEach(function (it) {
        if (it && it.text) {
          it.text = it.text + '';
        }
      });
    }
    this._items = value;
    this._itemsByValue = this._dictByValue(value);
    if (!this._itemsByValue[this.value] && value.length > 0) {
      this.value = value[0].value;
    } else this.updateItem();
    this.$dropdownBox.removeStyle('min-width');
    this.selectListBound = this.$selectlist.setItemsAsync(value || []);
    this.style.setProperty('--select-list-desc-width', this.$selectlist.measuredSize.descWidth + 'px');
    this._resourceReady = true;
    this.addStyle('min-width', this.selectListBound.width + 2 + 23 + 'px');
    this.emit('minwidthchange', {
      target: this,
      value: this.selectListBound.width + 2 + 23,
      type: 'minwidthchange'
    }, this);
  },
  get: function get() {
    return this._items || [];
  }
};
SelectMenu.property.value = {
  set: function set(value) {
    this.$selectlist.value = value;
    this._lastValue = value;
    this.updateItem();
  },
  get: function get() {
    return this.$selectlist.value;
  }
};
SelectMenu.property.enableSearch = {
  set: function set(value) {
    this._enableSearch = !!value;
    if (value) {
      this.$searchTextInput.removeStyle('display');
    } else {
      this.$searchTextInput.addStyle('display', 'none');
    }
  },
  get: function get() {
    return !!this._enableSearch;
  }
};
SelectMenu.prototype.updateDropdownPostion = function (updateAnchor) {
  if (!this.isFocus) {
    this.$anchorContentCtn.removeStyle('left').removeStyle('top');
    this.$dropdownBox.removeStyle('min-width');
    return;
  }
  var bound = this.getBoundingClientRect();
  if (!updateAnchor) {
    var outBound = _Dom["default"].traceOutBoundingClientRect(this);
    if (!this.isFocus || bound.top > outBound.bottom || bound.bottom < outBound.top) {
      this.isFocus = false;
      return;
    }
    var anchorOutBound = _Dom["default"].traceOutBoundingClientRect(this.$anchor);
    var searchBound = this.$searchTextInput.getBoundingClientRect();
    var availableTop = bound.top - anchorOutBound.top - (this.enableSearch ? searchBound.height + 8 : 0) - 20;
    var availableBottom = anchorOutBound.bottom - bound.bottom - (this.enableSearch ? searchBound.height + 8 : 0) - 20;
    if (this.forceDown || availableBottom >= this.selectListBound.height || availableBottom > availableTop) {
      this.isDropdowUp = false;
      if (this.$dropdownBox.firstChild != this.$searchTextInput) {
        this.$searchTextInput.selfRemove();
        this.$dropdownBox.addChildBefore(this.$searchTextInput, this.$vscroller);
      }
      this.$vscroller.addStyle('max-height', availableBottom + 'px');
    } else {
      this.isDropdowUp = true;
      if (this.$dropdownBox.lastChild !== this.$searchTextInput) {
        this.$searchTextInput.selfRemove();
        this.$dropdownBox.addChild(this.$searchTextInput);
      }
      this.$vscroller.addStyle('max-height', availableTop + 'px');
    }
    this.$dropdownBox.addStyle('min-width', bound.width + 'px');
  }
  var anchorBound = this.$anchor.getBoundingClientRect();
  if (this.isDropdowUp) {
    this.$anchorContentCtn.addStyle({
      left: bound.left - anchorBound.left + 'px',
      top: bound.top - anchorBound.top - this.$dropdownBox.clientHeight - 1 + 'px'
    });
  } else {
    this.$anchorContentCtn.addStyle({
      left: bound.left - anchorBound.left + 'px',
      top: bound.bottom - anchorBound.top + 'px'
    });
  }
};
SelectMenu.prototype.scrollToSelectedItem = function () {
  var self = this;
  setTimeout(function () {
    if (self.$selectlist.$selectedItem) {
      var fistChildBound = self.$selectlist.childNodes[1].getBoundingClientRect();
      var lastChildBound = self.$selectlist.lastChild.getBoundingClientRect();
      var listBound = {
        top: fistChildBound.top,
        height: lastChildBound.bottom - fistChildBound.top,
        bottom: lastChildBound.bottom
      };
      var itemBound = self.$selectlist.$selectedItem.getBoundingClientRect();
      if (self.isDropdowUp) {
        var scrollBound = self.$vscroller.getBoundingClientRect();
        self.$vscroller.scrollTop = Math.max(itemBound.bottom - scrollBound.height - listBound.top, 0);
      } else {
        self.$vscroller.scrollTop = itemBound.top - listBound.top;
      }
    }
  }.bind(this), 3);
};
SelectMenu.prototype.startTrackScroll = function () {
  var trackElt = this.parentElement;
  while (trackElt) {
    if (trackElt.addEventListener) {
      trackElt.addEventListener('scroll', this.eventHandler.scrollParent, false);
    } else {
      trackElt.attachEvent('onscroll', this.eventHandler.scrollParent, false);
    }
    this.$scrollTrackElts.push(trackElt);
    trackElt = trackElt.parentElement;
  }
  if (document.addEventListener) {
    document.addEventListener('scroll', this.eventHandler.scrollParent, false);
    document.addEventListener('wheel', this.eventHandler.wheelDocument, true);
  } else {
    document.attachEvent('onscroll', this.eventHandler.scrollParent, false);
  }
  this.$scrollTrackElts.push(document);
};
SelectMenu.prototype.stopTrackScroll = function () {
  var trackElt;
  for (var i = 0; i < this.$scrollTrackElts.length; ++i) {
    trackElt = this.$scrollTrackElts[i];
    if (trackElt.removeEventListener) {
      trackElt.removeEventListener('scroll', this.eventHandler.scrollParent, false);
    } else {
      trackElt.dettachEvent('onscroll', this.eventHandler.scrollParent, false);
    }
  }
  this.$scrollTrackElts = [];
};
SelectMenu.prototype.startListenRemovable = function () {
  var removableElt = this.parentElement;
  while (removableElt) {
    if (removableElt.isSupportedEvent && removableElt.isSupportedEvent('remove')) {
      removableElt.on('remove', this.eventHandler.removeParent);
    }
    removableElt = removableElt.parentElement;
  }
};
SelectMenu.prototype.stopListenRemovable = function () {
  var removableElt;
  while (this.$removableTrackElts.length > 0) {
    removableElt = this.$removableTrackElts.pop();
    removableElt.off('remove', this.eventHandler.removeParent);
  }
};
SelectMenu.prototype._releaseResource = function () {
  this.$selectlist.items = [];
};
SelectMenu.prototype._requestResource = function () {
  this.$selectlist.items = this._items || [];
};
SelectMenu.property.isFocus = {
  set: function set(value) {
    if (value && (this.disabled || this.readOnly)) return;
    var self = this;
    value = !!value;
    if (value == this.isFocus) return;
    this._isFocus = value;
    if (value) {
      this.startTrackScroll();
      this.selectListScrollToken = null; //force scroll
      var isAttached = false;
      setTimeout(function () {
        if (isAttached) return;
        $('body').on('mousedown', self.eventHandler.bodyClick);
        isAttached = true;
      }, 1000);
      $('body').once('click', function () {
        setTimeout(function () {
          if (isAttached) return;
          $('body').on('mousedown', self.eventHandler.bodyClick);
          isAttached = true;
        }, 10);
      });
      if (this.enableSearch) {
        setTimeout(function () {
          self.$searchTextInput.focus();
        }, 50);
      }
      this.updateDropdownPostion();
      this.scrollToSelectedItem();
      this.$anchor.removeClass('absol-disabled');
    } else {
      this.$anchor.addClass('absol-disabled');
      this.stopTrackScroll();
      $('body').off('mousedown', this.eventHandler.bodyClick);
      setTimeout(function () {
        if (self.$searchTextInput.value != 0) {
          self.$searchTextInput.value = '';
          self.$selectlist.items = self.items;
          self._resourceReady = true;
          self.$selectlist.removeClass('as-searching');
        }
      }, 100);
      this.updateItem();
    }
  },
  get: function get() {
    return !!this._isFocus;
  }
};
SelectMenu.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('disabled');
    } else {
      this.removeClass('disabled');
    }
  },
  get: function get() {
    return this.hasClass('disabled');
  }
};
SelectMenu.property.hidden = {
  set: function set(value) {
    if (value) {
      this.addClass('hidden');
    } else {
      this.removeClass('hidden');
    }
  },
  get: function get() {
    return this.addClass('hidden');
  }
};
SelectMenu.property.selectedIndex = {
  get: function get() {
    if (!this._itemIdxByValue) {
      this._itemIdxByValue = {};
      for (var i = 0; i < this._items.length; ++i) {
        this._itemIdxByValue[this._items[i].value] = i;
      }
    }
    var idx = this._itemIdxByValue[this._value];
    return idx >= 0 ? idx : -1;
  }
};

/**
 * @type {SelectMenu}
 */
SelectMenu.eventHandler = {};
SelectMenu.eventHandler.attached = function () {
  if (this._updateInterval) return;
  if (!this.$anchor.parentNode) this.$anchor.addTo(this.$anchorCtn);
  this.$attachhook.updateSize = this.$attachhook.updateSize || this.updateDropdownPostion.bind(this);
  _Dom["default"].addToResizeSystem(this.$attachhook);
  this.stopListenRemovable();
  this.startListenRemovable();
  if (!this._resourceReady) {
    this._requestResource();
    this._resourceReady = true;
  }
  this._updateInterval = setInterval(function () {
    if (!this.isDescendantOf(document.body)) {
      clearInterval(this._updateInterval);
      this._updateInterval = undefined;
      this.$anchor.selfRemove();
      this.stopTrackScroll();
      this.stopListenRemovable();
      this.eventHandler.removeParent();
    }
  }.bind(this), 10000);
};
SelectMenu.eventHandler.scrollParent = function (event) {
  var self = this;
  if (this._scrollFrameout > 0) {
    this._scrollFrameout = 10;
    return;
  }
  this._scrollFrameout = this._scrollFrameout || 10;
  function update() {
    self.updateDropdownPostion(false);
    self.scrollToSelectedItem();
    self._scrollFrameout--;
    if (self._scrollFrameout > 0) requestAnimationFrame(update);
  }
  update();
};
SelectMenu.eventHandler.removeParent = function (event) {
  this._releaseResource();
  this._resourceReady = false;
};
SelectMenu.eventHandler.click = function (event) {
  if (_EventEmitter["default"].isMouseRight(event)) return;
  this.isFocus = !this.isFocus;
};
SelectMenu.eventHandler.bodyClick = function (event) {
  if (!_EventEmitter["default"].hitElement(this, event) && !_EventEmitter["default"].hitElement(this.$anchor, event)) {
    setTimeout(function () {
      this.isFocus = false;
    }.bind(this), 5);
  }
};
SelectMenu.eventHandler.selectlistPressItem = function (event) {
  this.updateItem();
  if (this._lastValue != this.value) {
    event.lastValue = this._lastValue;
    event.value = this.value;
    setTimeout(function () {
      this.emit('change', event, this);
    }.bind(this), 1);
    this._lastValue = this.value;
  }
};
SelectMenu.eventHandler.searchModify = function (event) {
  var filterText = this.$searchTextInput.value.replace(/((\&nbsp)|(\s))+/g, ' ').trim();
  if (filterText.length == 0) {
    this._resourceReady = true;
    this.$selectlist.items = this.items;
    this.scrollToSelectedItem();
    this.$selectlist.removeClass('as-searching');
  } else {
    this.$selectlist.addClass('as-searching');
    var view = [];
    if (!this._searchCache[filterText]) {
      if (this._items.length > 0 && !this._items[0].__nvnText__) {
        (0, _search.prepareSearchForList)(this._items);
      }
      view = (0, _search.searchListByText)(filterText, this._items);
      this._searchCache[filterText] = view;
    } else {
      view = this._searchCache[filterText];
    }
    this.$selectlist.items = view;
    this._resourceReady = true;
    this.$vscroller.scrollTop = 0;
  }
  this.selectListBound = this.$selectlist.getBoundingClientRect();
  this.updateDropdownPostion(true);
};
SelectMenu.eventHandler.listSizeChangeAsync = function () {
  this.updateDropdownPostion();
};
SelectMenu.eventHandler.listValueVisibility = function (event) {
  if (!this.isFocus) return;
  if (this._selectListScrollSession == event.session) return;
  this._selectListScrollSession = event.session;
  this.scrollToSelectedItem();
};
_ACore["default"].install(SelectMenu);
var _default = SelectMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


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;
__webpack_require__(80571);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _Dom = _interopRequireWildcard(__webpack_require__(64821));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _utils = __webpack_require__(84512);
var _AElement = _interopRequireDefault(__webpack_require__(63445));
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; }
_ACore["default"].creator['dropdown-ico'] = function () {
  return (0, _ACore._)(['<svg class="dropdown" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">', '<g transform="translate(0,-197)">', '<path d="m6.3152 218.09a4.5283 4.5283 0 0 0-3.5673 7.3141l43.361 55.641a4.5283 4.5283 0 0 0 7.1421 7e-3l43.496-55.641a4.5283 4.5283 0 0 0-3.5673-7.3216z" />', '</g>', '</svg>'].join(''));
};

/***
 * @extends AElement
 * @constructor
 */
function SelectMenu() {
  this._value = null;
  this._lastValue = null;
  this.$holderItem = (0, _ACore.$)('.absol-selectmenu-holder-item', this);
  this.$viewItem = (0, _ACore.$)('.absol-selectmenu-holder-item selectlistitem', this);
  /***
   *
   * @type {SelectListBox}
   */
  this.$selectlistBox = (0, _ACore._)({
    tag: 'selectlistbox',
    props: {
      anchor: [1, 6, 2, 5],
      strictValue: true
    },
    on: {
      preupdateposition: this.eventHandler.preUpdateListPosition
    }
  });
  if (this.$selectlistBox.cancelWaiting) this.$selectlistBox.cancelWaiting();
  this.widthLimit = this.$selectlistBox.widthLimit;
  this.addStyle('--as-width-limit', this.$selectlistBox.widthLimit + 'px');
  var firstCheckView = false;
  var this1 = this;
  var checkView = function checkView() {
    if (this1.isDescendantOf && this1.isDescendantOf(document.body)) {
      setTimeout(checkView, 5000);
      firstCheckView = true;
    } else if (firstCheckView) {
      setTimeout(checkView, 1000);
    } else {
      if (this1.$selectlistBox.searchMaster) this1.$selectlistBox.searchMaster.destroy();
    }
  };
  setTimeout(checkView, 3000);
  this.$selectlistBox.on('pressitem', this.eventHandler.selectListBoxPressItem);
  this.$selectlistBox.followTarget = this;
  this.$selectlistBox.sponsorElement = this;
  _OOP["default"].drillProperty(this, this.$selectlistBox, 'enableSearch');
  _OOP["default"].drillProperty(this, this, 'selectedvalue', 'value');
  this.strictValue = true;
  this._lastValue = "NOTHING_VALUE";
  this._isFocus = false;
  this.isFocus = false;
  this.on('mousedown', this.eventHandler.click, true);
  /***
   * @name items
   * @type {[]}
   * @memberOf SelectMenu#
   */
}

SelectMenu.tag = 'selectmenu';
SelectMenu.render = function () {
  return (0, _ACore._)({
    "class": ['absol-selectmenu', 'as-select-menu'],
    extendEvent: ['change'],
    attr: {
      tabindex: '1'
    },
    child: [{
      "class": 'absol-selectmenu-holder-item',
      child: 'selectlistitem'
    }, {
      tag: 'button',
      "class": 'absol-selectmenu-btn',
      child: ['dropdown-ico']
    }]
  });
};
SelectMenu.prototype.addStyle = function (arg0, arg1) {
  if (arg0 === 'textAlign' || arg0 === 'text-align') {
    if (arg1 === 'center') {
      this.addClass('as-text-align-center');
      this.$selectlistBox.addClass('as-text-align-center');
    } else {
      this.removeClass('as-text-align-center');
      this.$selectlistBox.removeClass('as-text-align-center');
    }
  } else {
    return _AElement["default"].prototype.addStyle.apply(this, arguments);
  }
};
SelectMenu.prototype.init = function (props) {
  props = props || {};
  Object.keys(props).forEach(function (key) {
    if (props[key] === undefined) delete props[key];
  });
  if ('selectedvalue' in props) {
    props.value = props.selectedvalue;
  }
  if (!('value' in props)) {
    if (props.items && props.items.length > 0) props.value = typeof props.items[0] == 'string' ? props.items[0] : props.items[0].value;
  }
  var value = props.value;
  delete props.value;
  this["super"](props);
  this.value = value;
};
SelectMenu.prototype.revokeResource = function () {
  // return;
  // this.$selectlistBox.revokeResource();
};
SelectMenu.prototype.selfRemove = function () {
  var _this = this;
  setTimeout(function () {
    if (!_this.parentElement) _this.revokeResource();
  }, 100);
  this.remove();
};
SelectMenu.prototype.updateItem = function () {
  var value = this._explicit(this._value);
  var selectedItems = this.$selectlistBox.findDisplayItemsByValue(value);
  var data;
  if (selectedItems.length >= 1) {
    data = selectedItems[0].item;
    this.$viewItem.data = data;
    if (data.text && (0, _utils.measureText)(data.text + '', '14px arial').width - 30 > this.widthLimit) {
      this.$viewItem.attr('title', data.text);
    } else this.$viewItem.attr('title', null);
  } else {
    this.$viewItem.data = {
      text: '',
      value: null
    };
    this.$viewItem.attr('title', null);
  }
};
SelectMenu.prototype.findItemsByValue = function (value) {
  return this.$selectlistBox.findItemsByValue(value);
};
SelectMenu.prototype._explicit = function (value) {
  var items = this.$selectlistBox.findItemsByValue(value);
  if (items.length > 0 || !this.strictValue || this.items.length === 0) {
    return value;
  } else {
    return this.items[0].value;
  }
};
SelectMenu.property = {};
SelectMenu.property.items = {
  set: function set(items) {
    items = items || [];
    this.$selectlistBox.items = items;
    this.addStyle('--select-list-estimate-width', this.$selectlistBox._estimateWidth / 14 + 'em');
    this.addStyle('--select-list-desc-width', this.$selectlistBox._estimateDescWidth / 14 + 'em');
    this.updateItem();
  },
  get: function get() {
    return this.$selectlistBox.items;
  }
};
SelectMenu.property.value = {
  set: function set(value) {
    this.$selectlistBox.values = [value];
    this._lastValue = value;
    this._value = value;
    this.updateItem();
  },
  get: function get() {
    return this._explicit(this._value);
  }
};

/***
 *
 * @type {SelectMenu|{}}
 */
SelectMenu.property.isFocus = {
  set: function set(value) {
    if (value && (this.disabled || this.readOnly)) return;
    var thisSM = this;
    if (!this.items || this.items.length === 0) value = false; //prevent focus
    if (this._isFocus === value) return;
    this._isFocus = !!value;
    if (this._isFocus) {
      this.$selectlistBox.addTo(document.body);
      // this.$selectlistBox.domSignal.$attachhook.emit('attached');
      var bound = this.getBoundingClientRect();
      this.$selectlistBox.addStyle('min-width', bound.width + 'px');
      this.$selectlistBox.refollow();
      this.$selectlistBox.updatePosition();
      setTimeout(function () {
        thisSM.$selectlistBox.focus();
        document.addEventListener('click', thisSM.eventHandler.bodyClick);
      }, 100);
      this.$selectlistBox.viewListAtFirstSelected();
    } else {
      document.removeEventListener('click', thisSM.eventHandler.bodyClick);
      this.$selectlistBox.selfRemove();
      this.$selectlistBox.unfollow();
      this.$selectlistBox.resetSearchState();
    }
  },
  get: function get() {
    return this._isFocus;
  }
};
SelectMenu.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
SelectMenu.property.hidden = {
  set: function set(value) {
    if (value) {
      this.addClass('as-hidden');
    } else {
      this.removeClass('as-hidden');
    }
  },
  get: function get() {
    return this.addClass('as-hidden');
  }
};
SelectMenu.property.selectedIndex = {
  get: function get() {
    var selectedItems = this.$selectlistBox.findItemsByValue(this._value);
    if (selectedItems.length > 0) {
      return selectedItems[0].idx;
    }
    return -1;
  }
};
SelectMenu.property.strictValue = {
  set: function set(value) {
    if (value) {
      this.attr('data-strict-value', null);
    } else {
      this.attr('data-strict-value', 'false');
    }
    this.updateItem();
  },
  get: function get() {
    return !this.attr('data-strict-value') || this.attr('data-strict-value') !== 'false' && this.attr('data-strict-value') !== '0';
  }
};
SelectMenu.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};

/**
 * @type {SelectMenu|{}}
 */
SelectMenu.eventHandler = {};
SelectMenu.eventHandler.click = function (event) {
  if (this.readOnly) return;
  if (_EventEmitter["default"].isMouseRight(event)) return;
  if (_EventEmitter["default"].hitElement(this.$selectlistBox, event)) return;
  this.isFocus = !this.isFocus;
};
SelectMenu.eventHandler.bodyClick = function (event) {
  if (!_EventEmitter["default"].hitElement(this, event) && !_EventEmitter["default"].hitElement(this.$selectlistBox, event)) {
    setTimeout(function () {
      this.isFocus = false;
    }.bind(this), 5);
  }
};
SelectMenu.eventHandler.selectListBoxPressItem = function (event) {
  this._value = event.data.value;
  this.$selectlistBox.values = [this._value];
  this.updateItem();
  if (this._lastValue !== this.value) {
    event.lastValue = this._lastValue;
    event.value = this.value;
    setTimeout(function () {
      this.emit('change', event, this);
    }.bind(this), 1);
    this._lastValue = this.value;
  }
  setTimeout(function () {
    this.isFocus = false;
  }.bind(this), 50);
};
SelectMenu.eventHandler.preUpdateListPosition = function () {
  var bound = this.getBoundingClientRect();
  var screenSize = (0, _Dom.getScreenSize)();
  var availableTop = bound.top - 5;
  var availableBot = screenSize.height - 5 - bound.bottom;
  this.$selectlistBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px');
  var outBound = (0, _Dom.traceOutBoundingClientRect)(this);
  if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) {
    this.isFocus = false;
  }
};
_ACore["default"].install(SelectMenu);
var _default = SelectMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _RibbonButton = _interopRequireDefault(__webpack_require__(93856));
var _utils = __webpack_require__(84512);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var addSelectedClass = function addSelectedClass(item) {
  if (!item) return;
  if (Array.isArray(item.extendClasses)) {
    item.extendClasses.push('as-ribbon-selected');
  } else {
    item.extendClasses = [item.extendClasses, 'as-ribbon-selected'].filter(function (x) {
      return !!x;
    });
  }
};
var removeSelectedClass = function removeSelectedClass(item) {
  if (!item) return;
  if (Array.isArray(item.extendClasses)) {
    item.extendClasses = item.extendClasses.filter(function (it) {
      return it !== 'as-ribbon-selected';
    });
  }
};

/**
 * @extends {RibbonButton}
 * @constructor
 */
function SelectRibbonMenu() {
  var _this = this;
  _RibbonButton["default"].apply(this, arguments);
  this.addClass('as-select-ribbon-menu');
  this._itemDict = {};
  this._value = null;
  this.defineEvent('change');
  this.on('select', function (ev) {
    var value = ev.item.value;
    if (_this.value !== value) {
      _this.value = value;
      _this.emit('change', {
        target: _this,
        type: 'change'
      }, _this);
    }
  });
}
SelectRibbonMenu.tag = 'SelectRibbonMenu'.toLowerCase();
SelectRibbonMenu.render = _RibbonButton["default"].render;
SelectRibbonMenu.property = Object.assign({}, _RibbonButton["default"].property);
SelectRibbonMenu.property.items = {
  set: function set(items) {
    var _this2 = this;
    removeSelectedClass(this.selectedItem);
    items = items || [];
    _RibbonButton["default"].property.items.set.call(this, items);
    this._itemDict = {};
    var visit = function visit(it) {
      var key = (0, _utils.keyStringOf)(it.value);
      _this2._itemDict[key] = it;
    };
    items.forEach(function (it) {
      return visit(it);
    });
    var selectedItem = this.selectedItem;
    addSelectedClass(selectedItem);
    selectedItem = Object.assign({
      text: '',
      icon: null
    }, selectedItem);
    this.text = selectedItem.text;
    this.icon = selectedItem.icon;
  },
  get: _RibbonButton["default"].property.items.get
};
SelectRibbonMenu.property.value = {
  set: function set(value) {
    var selectedItem = this.selectedItem;
    console.log('clear', selectedItem);
    removeSelectedClass(selectedItem);
    this._value = value;
    selectedItem = this.selectedItem;
    addSelectedClass(selectedItem);
    selectedItem = Object.assign({
      text: '',
      icon: null
    }, selectedItem);
    this.text = selectedItem.text;
    this.icon = selectedItem.icon;
  },
  get: function get() {
    if (!this._items || !this._items.length || this._itemDict[(0, _utils.keyStringOf)(this._value)]) return this._value;
    return this._items[0].value;
  }
};
SelectRibbonMenu.property.selectedItem = {
  get: function get() {
    if (this._itemDict[(0, _utils.keyStringOf)(this._value)]) return this._itemDict[(0, _utils.keyStringOf)(this._value)];
    if (this._items && this._items.length) return this._items[0];
    return null;
  }
};
var _default = SelectRibbonMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(14920);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _stringMatching = __webpack_require__(59163);
var _stringFormat = __webpack_require__(22294);
var _Svg = _interopRequireDefault(__webpack_require__(98315));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
__webpack_require__(1446);
var _Searcher = _interopRequireDefault(__webpack_require__(47106));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var privateDom = new _Dom["default"]().install(_ACore["default"]);
var $ = privateDom.$;
var _ = privateDom._;
function SelectTable() {
  var thisST = this;
  this.$attachhook = _('attachhook').addTo(this);
  this.sync = new Promise(function (rs) {
    thisST.$attachhook.on('error', rs);
  });
  this.$buttonsContainer = $('.absol-select-table-buttons-container', this);
  this.$searchContainer = $('.absol-select-table-searchtextinput-container', this);
  this.$nonselectedItemsContainer = $('.absol-select-table-nonselected-items-container', this);
  this.$selectedItemsContainer = $('.absol-select-table-selected-items-container', this);
  this.$nonselectedSearchItemsContainer = $('.absol-select-table-nonselected-search-items-container', this);
  this.$selectedSearchItemsContainer = $('.absol-select-table-selected-search-items-container', this);
  this.$removeAllBtn = $('button.remove-all', this).on('click', this.eventHandler.removeAllBtnClick);
  this.$addAllBtn = $('button.add-all', this).on('click', this.eventHandler.addAllBtnClick);
  this.$vscrollerSelected = $('bscroller#selected', this);
  this.$vscrollerNonselected = $('bscroller#nonselected', this);
  this.$body = $('.absol-select-table-body', this);
  this.$header = $('.absol-select-table-header', this);
  /***
   *
   * @type {SearchTextInput}
   */
  this.$searchTextInput = $('searchtextinput', this).on('stoptyping', this.eventHandler.searchTextInputModify);
  this.$addAllBtn.updateSize = function () {
    thisST.updateScroller && thisST.updateScroller();
  };
  _Dom["default"].addToResizeSystem(this.$addAllBtn);
  return this;
}
SelectTable.tag = 'SelectTable'.toLowerCase();
SelectTable.render = function () {
  return _({
    "class": 'absol-select-table',
    extendEvent: ['change', 'addall', 'removeall', 'add', 'remove'],
    child: [{
      "class": 'absol-select-table-header',
      child: [{
        "class": 'absol-select-table-searchtextinput-container',
        child: 'searchtextinput'
      }, {
        "class": 'absol-select-table-buttons-container',
        child: [{
          tag: 'button',
          "class": 'add-all',
          props: {
            innerHTML: 'Add All'
          }
        }, {
          tag: 'button',
          "class": 'remove-all',
          props: {
            innerHTML: 'Remove All'
          }
        }]
      }]
    }, {
      "class": 'absol-select-table-body',
      child: [{
        tag: 'bscroller',
        attr: {
          id: 'nonselected'
        },
        "class": ['absol-select-table-items-scroller'],
        child: {
          child: ['.absol-select-table-nonselected-items-container', '.absol-select-table-nonselected-search-items-container']
        }
      }, {
        tag: 'bscroller',
        attr: {
          id: 'selected'
        },
        "class": ['absol-select-table-items-scroller'],
        child: {
          child: ['.absol-select-table-selected-items-container', '.absol-select-table-selected-search-items-container']
        }
      }]
    }]
  });
};
SelectTable.prototype.updateButtonsContainerSize = function () {
  var rootBound = this.$buttonsContainer.getBoundingClientRect();
  var containBound = this.$buttonsContainer.getBoundingRecursiveRect();
  var fontSize = this.getFontSize();
  this.$buttonsContainer.addStyle('width', (containBound.width + 1) / fontSize + 'em');
  this.$searchContainer.addStyle('right', (containBound.width + 5) / fontSize + 'em');
};
SelectTable.prototype.addAll = function () {
  Array.apply(null, this.$nonselectedItemsContainer.childNodes).forEach(function (e) {
    e.addTo(this.$selectedItemsContainer);
  }.bind(this));
  this.requestSort();
};
SelectTable.prototype.removeAll = function () {
  Array.apply(null, this.$selectedItemsContainer.childNodes).forEach(function (e) {
    e.addTo(this.$nonselectedItemsContainer);
  }.bind(this));
  this.requestSort();
};
SelectTable.prototype.updateScroller = function () {
  var update = function () {
    if (this.style.height) {
      var height = parseFloat(this.getComputedStyleValue('height').replace('px', ''));
      var headerHeight = parseFloat(this.$header.getComputedStyleValue('height').replace('px', ''));
      var bodyMargin = parseFloat(this.$body.getComputedStyleValue('margin-top').replace('px', ''));
      var borderWidth = 1;
      var availableHeight = height - headerHeight - bodyMargin * 2 - borderWidth * 2;
      this.$vscrollerNonselected.addStyle('max-height', availableHeight + 'px');
      this.$vscrollerSelected.addStyle('max-height', availableHeight + 'px');
    }
  }.bind(this);
  setTimeout(update, 1);
};
SelectTable.prototype.getAllItemElement = function () {
  var selectedItemElements = Array.apply(null, this.$selectedItemsContainer.childNodes);
  var nonselectedItemElements = Array.apply(null, this.$nonselectedItemsContainer.childNodes);
  return selectedItemElements.concat(nonselectedItemElements);
};
SelectTable.prototype.init = function (props) {
  this["super"](props);
  this.sync = this.sync.then(this.updateButtonsContainerSize.bind(this));
};
SelectTable.eventHandler = {};
SelectTable.eventHandler.addAllBtnClick = function (event) {
  this.addAll();
  if (this.searching) {
    this.eventHandler.searchTextInputModify(event);
  }
  this.emit('addall', _EventEmitter["default"].copyEvent(event, {}), this);
  this.updateScroller();
};
SelectTable.eventHandler.removeAllBtnClick = function (event) {
  this.removeAll();
  if (this.searching) {
    this.eventHandler.searchTextInputModify(event);
  }
  this.emit('removeall', _EventEmitter["default"].copyEvent(event, {}), this);
  this.updateScroller();
};
SelectTable.prototype._filter = function (items, filterText) {
  var result = [];
  if (filterText.length == 1) {
    result = items.map(function (item) {
      var res = {
        item: item,
        text: typeof item === 'string' ? item : item.text
      };
      return res;
    }).map(function (it) {
      it.score = 0;
      var text = it.text.replace(/((\&nbsp)|(\s))+/g, ' ').trim();
      it.score += text.toLowerCase().indexOf(filterText.toLowerCase()) >= 0 ? 100 : 0;
      text = (0, _stringFormat.nonAccentVietnamese)(text);
      it.score += text.toLowerCase().indexOf(filterText.toLowerCase()) >= 0 ? 100 : 0;
      return it;
    });
    result.sort(function (a, b) {
      if (b.score - a.score == 0) {
        if ((0, _stringFormat.nonAccentVietnamese)(b.text) > (0, _stringFormat.nonAccentVietnamese)(a.text)) return -1;
        return 1;
      }
      return b.score - a.score;
    });
    result = result.filter(function (x) {
      return x.score > 0;
    });
  } else {
    var its = items.map(function (item) {
      var res = {
        item: item,
        text: typeof item === 'string' ? item : item.text
      };
      var text = res.text.replace(/((\&nbsp)|(\s))+/g, ' ').trim();
      res.score = ((0, _stringMatching.phraseMatch)(text, filterText) + (0, _stringMatching.phraseMatch)((0, _stringFormat.nonAccentVietnamese)(text), (0, _stringFormat.nonAccentVietnamese)(filterText))) / 2;
      if ((0, _stringFormat.nonAccentVietnamese)(text).replace(/s/g, '').toLowerCase().indexOf((0, _stringFormat.nonAccentVietnamese)(filterText).toLowerCase().replace(/s/g, '')) > -1) res.score = 100;
      return res;
    });
    if (its.length == 0) return;
    its.sort(function (a, b) {
      if (b.score - a.score == 0) {
        if ((0, _stringFormat.nonAccentVietnamese)(b.text) > (0, _stringFormat.nonAccentVietnamese)(a.text)) return -1;
        return 1;
      }
      return b.score - a.score;
    });
    var result = its.filter(function (x) {
      return x.score > 0.5;
    });
    if (result.length == 0) {
      var bestScore = its[0].score;
      result = its.filter(function (it) {
        return it.score + 0.001 >= bestScore;
      });
    }
    if (result[0].score == 0) result = [];
  }
  result = result.map(function (e) {
    return e.item;
  });
  return result;
};
SelectTable.prototype._stringcmp = function (s0, s1) {
  if (s0 == s1) return 0;
  if (s0 > s1) return 1;
  return -1;
};
SelectTable.prototype._getString = function (item) {
  if (typeof item == "string") return item;
  return item.text;
};
SelectTable.prototype._equalArr = function (a, b) {
  if (a.length != b.length) return false;
  for (var i = 0; i < a.length; ++i) {
    if (a[i] != b[i] && a[i].text != b[i].text && a[i].value != b[i].value) return false;
  }
  return true;
};
SelectTable.prototype._applySort = function (items, sortFlag) {
  var res = items.slice();
  if (sortFlag == 1 || sortFlag === true) {
    res.sort(function (a, b) {
      return this._stringcmp(this._getString(a), this._getString(b));
    }.bind(this));
  } else if (sortFlag == -1) {
    res.sort(function (a, b) {
      return -this._stringcmp(this._getString(a), this._getString(b));
    }.bind(this));
  } else if (typeof sortFlag == 'function') {
    res.sort(function (a, b) {
      return sortFlag(a, b);
    }.bind(this));
  }
  return res;
};
SelectTable.prototype.requestSort = function () {
  if (!this.sorted || this.sorted == 0) return;
  var selectedItems = this.selectedItems;
  var selectedItemsNew = this._applySort(selectedItems, this.sorted);
  if (!this._equalArr(selectedItems, selectedItemsNew)) {
    this.selectedItems = selectedItemsNew;
  }
  var nonselectedItems = this.nonselectedItems;
  var nonselectedItemsNew = this._applySort(nonselectedItems, this.sorted);
  if (!this._equalArr(nonselectedItems, nonselectedItemsNew)) {
    this.nonselectedItems = nonselectedItemsNew;
  }
};
SelectTable.eventHandler.searchTextInputModify = function (event) {
  var filterText = this.$searchTextInput.value.trim();
  if (filterText.length > 0) {
    var selectedItems = this.selectedItems;
    var nonselectedItems = this.nonselectedItems;
    this.selectedSearchItems = selectedItems;
    this.nonselectedSearchItems = this._filter(nonselectedItems, filterText);
    this.selectedSearchItems = this._filter(selectedItems, filterText);
  } else {}
  this.searching = filterText.length > 0;
};
SelectTable.property = {};
SelectTable.property.disableMoveAll = {
  set: function set(value) {
    if (value) this.addClass('disable-move-all');else this.removeClass('disable-move-all');
  },
  get: function get() {
    return this.hasClass('disable-move-all');
  }
};
SelectTable.property.removeAllText = {
  set: function set(text) {
    this._removeAllText = text;
    //todo: update remove all text
    if (!text) this.$removeAllBtn.addStyle('display', 'none');else {
      this.$removeAllBtn.removeStyle('display');
      this.$removeAllBtn.innerHTML = this.removeAllText;
      this.updateButtonsContainerSize();
    }
  },
  get: function get() {
    return this._removeAllText || 'Remove All';
  }
};
SelectTable.property.addAllText = {
  set: function set(text) {
    this._addAllText = text;
    if (!text) this.$addAllBtn.addStyle('display', 'none');else {
      this.$addAllBtn.removeStyle('display');
      this.$addAllBtn.innerHTML = this.removeAllText;
      this.updateButtonsContainerSize();
    }
  },
  get: function get() {
    return this._addAllText || 'Add All';
  }
};
SelectTable.property.searching = {
  set: function set(value) {
    if (value) {
      this.addClass('searching');
    } else {
      this.removeClass('searching');
    }
    this.updateScroller();
  },
  get: function get() {
    return this.hasClass('searching');
  }
};
SelectTable.property.sorted = {
  set: function set(value) {
    this._sort = value;
    this.requestSort();
  },
  get: function get() {
    return this._sort;
  }
};
SelectTable.property.selectedItems = {
  set: function set(items) {
    this.$selectedItemsContainer.clearChild();
    var $nonselectedItemsContainer = this.$nonselectedItemsContainer;
    var $selectedItemsContainer = this.$selectedItemsContainer;
    var self = this;
    if (items instanceof Array) {
      items.map(function (item) {
        return _({
          tag: 'item',
          props: {
            data: item
          },
          on: {
            requestmove: function requestmove(event) {
              if (this.parentElement == $selectedItemsContainer) {
                this.addTo($nonselectedItemsContainer);
                self.emit('remove', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), self);
              } else {
                this.addTo($selectedItemsContainer);
                self.emit('add', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), self);
              }
              self.updateScroller();
              self.requestSort();
            }
          }
        }).addTo(this.$selectedItemsContainer);
      }.bind(this));
    } else {
      // error
    }
    this.updateScroller();
    this.requestSort();
  },
  get: function get() {
    return Array.prototype.map.call(this.$selectedItemsContainer.childNodes, function (e) {
      return e.data;
    });
  }
};
SelectTable.property.nonselectedItems = {
  set: function set(items) {
    this.$nonselectedItemsContainer.clearChild();
    var $nonselectedItemsContainer = this.$nonselectedItemsContainer;
    var $selectedItemsContainer = this.$selectedItemsContainer;
    var self = this;
    if (items instanceof Array) {
      items.map(function (item) {
        return _({
          tag: 'item',
          props: {
            data: item
          },
          on: {
            requestmove: function requestmove(event) {
              if (this.parentElement == $selectedItemsContainer) {
                this.addTo($nonselectedItemsContainer);
                self.emit('remove', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), self);
              } else {
                this.addTo($selectedItemsContainer);
                self.emit('add', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), self);
              }
              self.updateScroller();
              self.requestSort();
            }
          }
        }).addTo(this.$nonselectedItemsContainer);
      }.bind(this));
    } else {
      // error
    }
    this.updateScroller();
    this.requestSort();
  },
  get: function get() {
    return Array.prototype.map.call(this.$nonselectedItemsContainer.childNodes, function (e) {
      return e.data;
    });
  }
};
SelectTable.property.selectedSearchItems = {
  set: function set(items) {
    this.$selectedSearchItemsContainer.clearChild();
    var $nonselectedSearchItemsContainer = this.$nonselectedSearchItemsContainer;
    var $selectedSearchItemsContainer = this.$selectedSearchItemsContainer;
    var table = this;
    if (items instanceof Array) {
      items.map(function (item) {
        return _({
          tag: 'item',
          props: {
            data: item
          },
          on: {
            requestmove: function requestmove(event) {
              if (this.parentElement == $selectedSearchItemsContainer) {
                this.addTo($nonselectedSearchItemsContainer);
                table.getAllItemElement().filter(function (itemElement) {
                  if (itemElement.data == this.data) {
                    itemElement.addTo(table.$nonselectedItemsContainer);
                    return true;
                  }
                  return false;
                }.bind(this));
                table.emit('remove', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), table);
              } else {
                this.addTo($selectedSearchItemsContainer);
                table.getAllItemElement().filter(function (itemElement) {
                  if (itemElement.data == this.data) {
                    itemElement.addTo(table.$selectedItemsContainer);
                    return true;
                  }
                  return false;
                }.bind(this));
                table.emit('add', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), table);
              }
              table.updateScroller();
              table.requestSort();
            }
          }
        }).addTo(this.$selectedSearchItemsContainer);
      }.bind(this));
    } else {
      // error
    }
    this.updateScroller();
  },
  get: function get() {
    return Array.prototype.map.call(this.$selectedSearchItemsContainer.childNodes, function (e) {
      return e.data;
    });
  }
};
SelectTable.property.nonselectedSearchItems = {
  set: function set(items) {
    this.$nonselectedSearchItemsContainer.clearChild();
    var $nonselectedSearchItemsContainer = this.$nonselectedSearchItemsContainer;
    var $selectedSearchItemsContainer = this.$selectedSearchItemsContainer;
    var table = this;
    if (items instanceof Array) {
      items.map(function (item) {
        return _({
          tag: 'item',
          props: {
            data: item
          },
          on: {
            requestmove: function requestmove(event) {
              if (this.parentElement == $selectedSearchItemsContainer) {
                this.addTo($nonselectedSearchItemsContainer);
                table.getAllItemElement().filter(function (itemElement) {
                  if (itemElement.data == this.data) {
                    itemElement.addTo(table.$nonselectedItemsContainer);
                    return true;
                  }
                  return false;
                }.bind(this));
                table.emit('remove', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), table);
              } else {
                this.addTo($selectedSearchItemsContainer);
                table.getAllItemElement().filter(function (itemElement) {
                  if (itemElement.data == this.data) {
                    itemElement.addTo(table.$selectedItemsContainer);
                    return true;
                  }
                  return false;
                }.bind(this));
                table.emit('add', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), table);
              }
              table.updateScroller();
              table.requestSort();
            }
          }
        }).addTo(this.$nonselectedSearchItemsContainer);
      }.bind(this));
    } else {
      // error
    }
    this.updateScroller();
  },
  get: function get() {
    return Array.prototype.map.call(this.$nonselectedSearchItemsContainer.childNodes, function (e) {
      return e.data;
    });
  }
};

/*
namespace of selecttable
*/
function Item() {
  var res = _({
    extendEvent: ['requestmove'],
    "class": 'absol-select-table-item',
    child: ['span.absol-select-table-item-text', {
      "class": 'absol-select-table-item-right-container',
      child: {
        "class": 'absol-select-table-item-right-container-table',
        child: {
          "class": 'absol-select-table-item-right-container-cell',
          child: ['addicon', 'subicon']
        }
      }
    }]
  });
  res.$text = $('span', res);
  res.eventHandler = _OOP["default"].bindFunctions(res, Item.eventHandler);
  res.$rightBtn = $('.absol-select-table-item-right-container', res);
  res.on('dblclick', res.eventHandler.dblclick);
  res.$rightBtn.on('click', res.eventHandler.rightBtClick);
  return res;
}
;
Item.eventHandler = {};
Item.eventHandler.dblclick = function (event) {
  event.preventDefault();
  if (!_EventEmitter["default"].hitElement(this.$rightBtn, event)) this.emit('requestmove', event, this);
};
Item.eventHandler.rightBtClick = function (event) {
  this.emit('requestmove', event, this);
};
Item.property = {};
Item.property.data = {
  set: function set(value) {
    this._data = value;
    if (value) {
      var text;
      if (typeof value == "string") {
        text = value;
      } else {
        text = value.text;
      }
      this.$text.innerHTML = text;
    }
  },
  get: function get() {
    return this._data;
  }
};
Item.property.text = {
  get: function get() {
    return this._data ? typeof this._data == 'string' ? this._data : this._data.text : '';
  }
};

/**
 *
 * <svg width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
 <g transform="translate(0,-197)">
 <path d="m39.873 198.21v38.668h-38.668v20.252h38.668v38.668h20.253v-38.668h38.668v-20.252h-38.668v-38.668z" style="fill-rule:evenodd;fill:#5fbbc2;stroke-linejoin:round;stroke-width:2.4109;stroke:#002eea"/>
 </g>
 </svg>
 */

function AddIcon() {
  return _Svg["default"].ShareInstance.buildSvg('<svg class="add-icon" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' + '<g transform="translate(0,-197)">' + '<path d="m39.873 198.21v38.668h-38.668v20.252h38.668v38.668h20.253v-38.668h38.668v-20.252h-38.668v-38.668z" style="fill-rule:evenodd;stroke-linejoin:round;stroke-width:2.4109;" />' + '</g>' + '</svg>');
}
;
function SubIcon() {
  return _Svg["default"].ShareInstance.buildSvg('<svg class="sub-icon" width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">' + ' <g transform="translate(0,-197)">' + '  <path d="m98.795 236.87v20.253h-97.589v-20.253z" style="fill-rule:evenodd;stroke-linejoin:round;stroke-width:2.411;"/>' + ' </g>' + '</svg>');
}
;
privateDom.install({
  subicon: SubIcon,
  addicon: AddIcon,
  item: Item
});
SelectTable.privateDom = privateDom;
_ACore["default"].install(SelectTable);
var _default = SelectTable;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(14920);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _stringMatching = __webpack_require__(59163);
var _stringFormat = __webpack_require__(22294);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _SelectTable = _interopRequireDefault(__webpack_require__(7073));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var privateDom = new _Dom["default"]().install(_ACore["default"]).install(_SelectTable["default"].privateDom);
var $ = privateDom.$;
var _ = privateDom._;
function SelectTable2() {
  var thisST = this;
  this.$attachhook = _('attachhook').addTo(this);
  this.sync = new Promise(function (rs) {
    thisST.$attachhook.on('error', rs);
  });
  this.$buttonsContainer = $('.absol-select-table-buttons-container', this);
  this.$searchContainer = $('.absol-select-table-searchtextinput-container', this);
  this.$nonselectedItemsContainer = $('.absol-select-table-nonselected-items-container', this);
  this.$selectedItemsContainer = $('.absol-select-table-selected-items-container', this);
  this.$nonselectedSearchItemsContainer = $('.absol-select-table-nonselected-search-items-container', this);
  this.$selectedSearchItemsContainer = $('.absol-select-table-selected-search-items-container', this);
  this.$removeAllBtn = $('button.remove-all', this).on('click', this.eventHandler.removeAllBtnClick);
  this.$addAllBtn = $('button.add-all', this).on('click', this.eventHandler.addAllBtnClick);
  this.$vscrollerSelected = $('vscroller#selected', this);
  this.$vscrollerNonselected = $('vscroller#nonselected', this);
  this.$body = $('.absol-select-table-body', this);
  this.$searchTextInput = $('searchtextinput', this).on('stoptyping', this.eventHandler.searchTextInputModify);
}
;
SelectTable2.tag = 'SelectTable2'.toLowerCase();
SelectTable2.render = function () {
  return _({
    "class": ['absol-select-table', 'exclude'],
    extendEvent: ['change', 'addall', 'removeall', 'add', 'remove'],
    child: [{
      "class": 'absol-select-table-header',
      child: [{
        "class": 'absol-select-table-searchtextinput-container',
        child: 'searchtextinput'
      }, {
        "class": 'absol-select-table-buttons-container',
        child: [{
          tag: 'button',
          "class": 'add-all',
          props: {
            innerHTML: 'Add All'
          }
        }, {
          tag: 'button',
          "class": 'remove-all',
          props: {
            innerHTML: 'Remove All'
          }
        }]
      }]
    }, {
      "class": 'absol-select-table-body',
      child: [{
        tag: 'vscroller',
        attr: {
          id: 'nonselected'
        },
        "class": 'absol-select-table-items-scroller',
        child: {
          child: ['.absol-select-table-nonselected-items-container', '.absol-select-table-nonselected-search-items-container']
        }
      }, {
        tag: 'vscroller',
        attr: {
          id: 'selected'
        },
        "class": 'absol-select-table-items-scroller',
        child: {
          child: ['.absol-select-table-selected-items-container', '.absol-select-table-selected-search-items-container']
        }
      }]
    }]
  });
};
SelectTable2.prototype.updateButtonsContainerSize = function () {
  var rootBound = this.$buttonsContainer.getBoundingClientRect();
  var containBound = this.$buttonsContainer.getBoundingRecursiveRect();
  var fontSize = this.getFontSize();
  this.$buttonsContainer.addStyle('width', (containBound.width + 1) / fontSize + 'em');
  this.$searchContainer.addStyle('right', (containBound.width + 5) / fontSize + 'em');
};
SelectTable2.prototype.addAll = function () {
  Array.apply(null, this.$nonselectedItemsContainer.childNodes).forEach(function (e) {
    e.addTo(this.$selectedItemsContainer);
  }.bind(this));
  this.requestSort();
};
SelectTable2.prototype.removeAll = function () {
  Array.apply(null, this.$selectedItemsContainer.childNodes).forEach(function (e) {
    e.addTo(this.$nonselectedItemsContainer);
  }.bind(this));
  this.requestSort();
};
SelectTable2.prototype.updateScroller = function () {
  var update = function () {
    if (this.style.height) {
      var bodyMargin = parseFloat(this.$body.getComputedStyleValue('margin-top').replace('px', '') || 0.14285714285 * 14 + '');
      var bound = this.getBoundingClientRect();
      var bodyBound = this.$body.getBoundingClientRect();
      var bodyRBound = this.$body.getBoundingRecursiveRect();
      var availableHeight = bound.bottom - bodyMargin - bodyBound.top;
      var isOverflowHeight = availableHeight < bodyRBound.height;
      if (isOverflowHeight) {
        this.$vscrollerNonselected.addStyle('max-height', availableHeight + 'px');
        this.$vscrollerSelected.addStyle('max-height', availableHeight + 'px');
        this.$vscrollerSelected.addClass('limited-height');
        this.$vscrollerNonselected.addClass('limited-height');
      } else {
        this.$vscrollerNonselected.removeStyle('max-height');
        this.$vscrollerSelected.removeStyle('max-height');
        this.$vscrollerSelected.removeClass('limited-height');
        this.$vscrollerSelected.removeClass('limited-height');
        this.$vscrollerNonselected.removeClass('limited-height');
      }
    }
    requestAnimationFrame(this.$vscrollerNonselected.requestUpdateSize.bind(this.$vscrollerNonselected));
    requestAnimationFrame(this.$vscrollerSelected.requestUpdateSize.bind(this.$vscrollerSelected));
  }.bind(this);
  setTimeout(update, 1);
};
SelectTable2.prototype.getAllItemElement = function () {
  var selectedItemElements = Array.apply(null, this.$selectedItemsContainer.childNodes);
  var nonselectedItemElements = Array.apply(null, this.$nonselectedItemsContainer.childNodes);
  return selectedItemElements.concat(nonselectedItemElements);
};
SelectTable2.prototype.init = function (props) {
  this["super"](props);
  this.sync = this.sync.then(this.updateButtonsContainerSize.bind(this));
};
SelectTable2.eventHandler = {};
SelectTable2.eventHandler.addAllBtnClick = function (event) {
  this.addAll();
  if (this.searching) {
    this.eventHandler.searchTextInputModify(event);
  }
  this.emit('addall', _EventEmitter["default"].copyEvent(event, {}), this);
  this.updateScroller();
};
SelectTable2.eventHandler.removeAllBtnClick = function (event) {
  this.removeAll();
  if (this.searching) {
    this.eventHandler.searchTextInputModify(event);
  }
  this.emit('removeall', _EventEmitter["default"].copyEvent(event, {}), this);
  this.updateScroller();
};
SelectTable2.prototype._filter = function (items, filterText) {
  var result = [];
  if (filterText.length == 1) {
    result = items.map(function (item) {
      var res = {
        item: item,
        text: typeof item === 'string' ? item : item.text
      };
      return res;
    }).map(function (it) {
      it.score = 0;
      var text = it.text.replace(/((\&nbsp)|(\s))+/g, ' ').trim();
      it.score += text.toLowerCase().indexOf(filterText.toLowerCase()) >= 0 ? 100 : 0;
      text = (0, _stringFormat.nonAccentVietnamese)(text);
      it.score += text.toLowerCase().indexOf(filterText.toLowerCase()) >= 0 ? 100 : 0;
      return it;
    });
    result.sort(function (a, b) {
      if (b.score - a.score == 0) {
        if ((0, _stringFormat.nonAccentVietnamese)(b.text) > (0, _stringFormat.nonAccentVietnamese)(a.text)) return -1;
        return 1;
      }
      return b.score - a.score;
    });
    result = result.filter(function (x) {
      return x.score > 0;
    });
  } else {
    var its = items.map(function (item) {
      var res = {
        item: item,
        text: typeof item === 'string' ? item : item.text
      };
      var text = res.text.replace(/((\&nbsp)|(\s))+/g, ' ').trim();
      res.score = ((0, _stringMatching.phraseMatch)(text, filterText) + (0, _stringMatching.phraseMatch)((0, _stringFormat.nonAccentVietnamese)(text), (0, _stringFormat.nonAccentVietnamese)(filterText))) / 2;
      if ((0, _stringFormat.nonAccentVietnamese)(text).replace(/s/g, '').toLowerCase().indexOf((0, _stringFormat.nonAccentVietnamese)(filterText).toLowerCase().replace(/s/g, '')) > -1) res.score = 100;
      return res;
    });
    if (its.length == 0) return;
    its.sort(function (a, b) {
      if (b.score - a.score == 0) {
        if ((0, _stringFormat.nonAccentVietnamese)(b.text) > (0, _stringFormat.nonAccentVietnamese)(a.text)) return -1;
        return 1;
      }
      return b.score - a.score;
    });
    var result = its.filter(function (x) {
      return x.score > 0.5;
    });
    if (result.length == 0) {
      var bestScore = its[0].score;
      result = its.filter(function (it) {
        return it.score + 0.001 >= bestScore;
      });
    }
    if (result[0].score == 0) result = [];
  }
  result = result.map(function (e) {
    return e.item;
  });
  return result;
};
SelectTable2.prototype._stringcmp = function (s0, s1) {
  if (s0 == s1) return 0;
  if (s0 > s1) return 1;
  return -1;
};
SelectTable2.prototype._getString = function (item) {
  if (typeof item == "string") return item;
  return item.text;
};
SelectTable2.prototype._equalArr = function (a, b) {
  if (a.length != b.length) return false;
  for (var i = 0; i < a.length; ++i) {
    if (a[i] != b[i]) return false;
  }
  return true;
};
SelectTable2.prototype._applySort = function (items, sortFlag) {
  var res = items.slice();
  if (sortFlag == 1 || sortFlag === true) {
    res.sort(function (a, b) {
      return this._stringcmp(this._getString(a), this._getString(b));
    }.bind(this));
  } else if (sortFlag == -1) {
    res.sort(function (a, b) {
      return -this._stringcmp(this._getString(a), this._getString(b));
    }.bind(this));
  } else if (typeof sortFlag == 'function') {
    res.sort(function (a, b) {
      return sortFlag(a, b);
    }.bind(this));
  }
  return res;
};
SelectTable2.prototype.requestSort = function () {
  if (!this.sorted || this.sorted == 0) return;
  var selectedItems = this.selectedItems;
  var selectedItemsNew = this._applySort(selectedItems, this.sorted);
  if (!this._equalArr(selectedItems, selectedItemsNew)) {
    this.selectedItems = selectedItemsNew;
  }
  var nonselectedItems = this.nonselectedItems;
  var nonselectedItemsNew = this._applySort(nonselectedItems, this.sorted);
  if (!this._equalArr(nonselectedItems, nonselectedItemsNew)) {
    this.nonselectedItems = nonselectedItemsNew;
  }
};
SelectTable2.eventHandler.searchTextInputModify = function (event) {
  var filterText = this.$searchTextInput.value.trim();
  if (filterText.length > 0) {
    var selectedItems = this.selectedItems;
    var nonselectedItems = this.nonselectedItems;
    this.selectedSearchItems = selectedItems;
    this.nonselectedSearchItems = this._filter(nonselectedItems, filterText);
    this.selectedSearchItems = this._filter(selectedItems, filterText);
  } else {}
  this.searching = filterText.length > 0;
};
SelectTable2.property = {};
SelectTable2.property.disableMoveAll = {
  set: function set(value) {
    if (value) this.addClass('disable-move-all');else this.removeClass('disable-move-all');
  },
  get: function get() {
    return this.hasClass('disable-move-all');
  }
};
SelectTable2.property.removeAllText = {
  set: function set(text) {
    this._removeAllText = text;
    //todo: update remove all text
    if (!text) this.$removeAllBtn.addStyle('display', 'none');else {
      this.$removeAllBtn.removeStyle('display');
      this.$removeAllBtn.innerHTML = this.removeAllText;
      this.updateButtonsContainerSize();
    }
  },
  get: function get() {
    return this._removeAllText || 'Remove All';
  }
};
SelectTable2.property.addAllText = {
  set: function set(text) {
    this._addAllText = text;
    if (!text) this.$addAllBtn.addStyle('display', 'none');else {
      this.$addAllBtn.removeStyle('display');
      this.$addAllBtn.innerHTML = this.removeAllText;
      this.updateButtonsContainerSize();
    }
  },
  get: function get() {
    return this._addAllText || 'Add All';
  }
};
SelectTable2.property.searching = {
  set: function set(value) {
    if (value) {
      this.addClass('searching');
    } else {
      this.removeClass('searching');
    }
    this.updateScroller();
  },
  get: function get() {
    return this.hasClass('searching');
  }
};
SelectTable2.property.sorted = {
  set: function set(value) {
    this._sort = value;
    this.requestSort();
  },
  get: function get() {
    return this._sort;
  }
};
SelectTable2.property.selectedItems = {
  set: function set(items) {
    this.$selectedItemsContainer.clearChild();
    var $nonselectedItemsContainer = this.$nonselectedItemsContainer;
    var $selectedItemsContainer = this.$selectedItemsContainer;
    var self = this;
    if (items instanceof Array) {
      items.map(function (item) {
        return _({
          tag: 'item',
          props: {
            data: item
          },
          on: {
            requestmove: function requestmove(event) {
              if (this.parentElement == $selectedItemsContainer) {
                this.addTo($nonselectedItemsContainer);
                self.emit('remove', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), self);
              } else {
                this.addTo($selectedItemsContainer);
                self.emit('add', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), self);
              }
              self.updateScroller();
              self.requestSort();
            }
          }
        }).addTo(this.$selectedItemsContainer);
      }.bind(this));
    } else {
      // error
    }
    this.updateScroller();
    this.requestSort();
  },
  get: function get() {
    return Array.prototype.map.call(this.$selectedItemsContainer.childNodes, function (e) {
      return e.data;
    });
  }
};
SelectTable2.property.nonselectedItems = {
  set: function set(items) {
    this.$nonselectedItemsContainer.clearChild();
    var $nonselectedItemsContainer = this.$nonselectedItemsContainer;
    var $selectedItemsContainer = this.$selectedItemsContainer;
    var self = this;
    if (items instanceof Array) {
      items.map(function (item) {
        return _({
          tag: 'item',
          props: {
            data: item
          },
          on: {
            requestmove: function requestmove(event) {
              if (this.parentElement == $selectedItemsContainer) {
                this.addTo($nonselectedItemsContainer);
                self.emit('remove', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), self);
              } else {
                this.addTo($selectedItemsContainer);
                self.emit('add', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), self);
              }
              self.updateScroller();
              self.requestSort();
            }
          }
        }).addTo(this.$nonselectedItemsContainer);
      }.bind(this));
    } else {
      // error
    }
    this.updateScroller();
    this.requestSort();
  },
  get: function get() {
    return Array.prototype.map.call(this.$nonselectedItemsContainer.childNodes, function (e) {
      return e.data;
    });
  }
};
SelectTable2.property.selectedSearchItems = {
  set: function set(items) {
    this.$selectedSearchItemsContainer.clearChild();
    var $nonselectedSearchItemsContainer = this.$nonselectedSearchItemsContainer;
    var $selectedSearchItemsContainer = this.$selectedSearchItemsContainer;
    var table = this;
    if (items instanceof Array) {
      items.map(function (item) {
        return _({
          tag: 'item',
          props: {
            data: item
          },
          on: {
            requestmove: function requestmove(event) {
              if (this.parentElement == $selectedSearchItemsContainer) {
                this.addTo($nonselectedSearchItemsContainer);
                table.getAllItemElement().filter(function (itemElement) {
                  if (itemElement.data == this.data) {
                    itemElement.addTo(table.$nonselectedItemsContainer);
                    return true;
                  }
                  return false;
                }.bind(this));
                table.emit('remove', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), table);
              } else {
                this.addTo($selectedSearchItemsContainer);
                table.getAllItemElement().filter(function (itemElement) {
                  if (itemElement.data == this.data) {
                    itemElement.addTo(table.$selectedItemsContainer);
                    return true;
                  }
                  return false;
                }.bind(this));
                table.emit('add', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), table);
              }
              table.updateScroller();
              table.requestSort();
            }
          }
        }).addTo(this.$selectedSearchItemsContainer);
      }.bind(this));
    } else {
      // error
    }
    this.updateScroller();
  },
  get: function get() {
    return Array.prototype.map.call(this.$selectedSearchItemsContainer.childNodes, function (e) {
      return e.data;
    });
  }
};
SelectTable2.property.nonselectedSearchItems = {
  set: function set(items) {
    this.$nonselectedSearchItemsContainer.clearChild();
    var $nonselectedSearchItemsContainer = this.$nonselectedSearchItemsContainer;
    var $selectedSearchItemsContainer = this.$selectedSearchItemsContainer;
    var table = this;
    if (items instanceof Array) {
      items.map(function (item) {
        return _({
          tag: 'item',
          props: {
            data: item
          },
          on: {
            requestmove: function requestmove(event) {
              if (this.parentElement == $selectedSearchItemsContainer) {
                this.addTo($nonselectedSearchItemsContainer);
                table.getAllItemElement().filter(function (itemElement) {
                  if (itemElement.data == this.data) {
                    itemElement.addTo(table.$nonselectedItemsContainer);
                    return true;
                  }
                  return false;
                }.bind(this));
                table.emit('remove', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), table);
              } else {
                this.addTo($selectedSearchItemsContainer);
                table.getAllItemElement().filter(function (itemElement) {
                  if (itemElement.data == this.data) {
                    itemElement.addTo(table.$selectedItemsContainer);
                    return true;
                  }
                  return false;
                }.bind(this));
                table.emit('add', _EventEmitter["default"].copyEvent(event, {
                  item: item
                }), table);
              }
              table.updateScroller();
              table.requestSort();
            }
          }
        }).addTo(this.$nonselectedSearchItemsContainer);
      }.bind(this));
    } else {
      // error
    }
    this.updateScroller();
  },
  get: function get() {
    return Array.prototype.map.call(this.$nonselectedSearchItemsContainer.childNodes, function (e) {
      return e.data;
    });
  }
};

/*
namespace of selecttable
*/
function Item() {
  var res = _({
    extendEvent: ['requestmove', 'clickadd', 'clickremove', 'clickexclude'],
    "class": 'absol-select-table-item',
    child: ['span.absol-select-table-item-text', {
      "class": 'absol-select-table-item-right-container',
      child: {
        "class": 'absol-select-table-item-right-container-table',
        child: {
          "class": 'absol-select-table-item-right-container-row',
          child: [{
            attr: {
              title: 'Add'
            },
            "class": ['absol-select-table-item-right-container-cell', 'add'],
            child: 'addicon'
          }, {
            attr: {
              title: 'Remove'
            },
            "class": ['absol-select-table-item-right-container-cell', 'remove'],
            child: 'subicon'
          }, {
            attr: {
              title: 'Exclude'
            },
            "class": ['absol-select-table-item-right-container-cell', 'exclude'],
            child: 'excludeico'
          }]
        }
      }
    }]
  });
  res.$text = $('span', res);
  res.eventHandler = _OOP["default"].bindFunctions(res, Item.eventHandler);
  res.$rightBtn = $('.absol-select-table-item-right-container', res);
  res.on('dblclick', res.eventHandler.dblclick);
  res.$addBtn = $('.absol-select-table-item-right-container-cell.add', res).on('click', res.eventHandler.addBtClick);
  res.$removeBtn = $('.absol-select-table-item-right-container-cell.remove', res).on('click', res.eventHandler.removeBtClick);
  res.$excludeBtn = $('.absol-select-table-item-right-container-cell.exclude', res).on('click', res.eventHandler.excludeBtClick);
  return res;
}
;
Item.eventHandler = {};
Item.eventHandler.dblclick = function (event) {
  event.preventDefault();
  if (!_EventEmitter["default"].hitElement(this.$rightBtn, event)) this.emit('requestmove', event, this);
};
Item.eventHandler.rightBtClick = function (event) {
  this.emit('requestmove', event, this);
};
Item.eventHandler.removeBtClick = function (event) {
  this.emit('clickremove', event, this);
};
Item.eventHandler.addBtClick = function (event) {
  this.emit('clickadd', event, this);
};
Item.eventHandler.excludeBtClick = function (event) {
  this.emit('clickexclude', event, this);
};
Item.property = {};
Item.property.data = {
  set: function set(value) {
    this._data = value;
    if (value) {
      var text;
      if (typeof value == "string") {
        text = value;
      } else {
        text = value.text;
      }
      this.$text.innerHTML = text;
    }
  },
  get: function get() {
    return this._data;
  }
};
Item.property.text = {
  get: function get() {
    return this._data ? typeof this._data == 'string' ? this._data : this._data.text : '';
  }
};
function ExcludeIco() {
  return _('<svg class="exclude-icon" width="24" height="24" viewBox="0 0 24 24">\
            <path  d="M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1M11,15H13V17H11V15M11,7H13V13H11V7" />\
        </svg>');
}
privateDom.install({
  item: Item,
  excludeico: ExcludeIco
});

// not completed yet

_ACore["default"].install('selecttable2', SelectTable2);
var _default = SelectTable2;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _SelectListBox = _interopRequireDefault(__webpack_require__(47818));
var _treeListToList = _interopRequireDefault(__webpack_require__(22248));
var _ACore = _interopRequireDefault(__webpack_require__(34093));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var $$ = _ACore["default"].$$;

/***
 * @extends SelectListBox
 * @constructor
 */
function SelectTreeBox() {
  _SelectListBox["default"].call(this);
}
SelectTreeBox.tag = 'SelectTreeBox'.toLowerCase();
SelectTreeBox.render = function () {
  return _SelectListBox["default"].render().addClass('as-select-tree-box');
};
Object.assign(SelectTreeBox.prototype, _SelectListBox["default"].prototype);
SelectTreeBox.property = Object.assign({}, _SelectListBox["default"].property);
SelectTreeBox.eventHandler = Object.assign({}, _SelectListBox["default"].eventHandler);
SelectTreeBox.prototype._itemsToNodeList = function (items) {
  return (0, _treeListToList["default"])(items);
};
_ACore["default"].install(SelectTreeBox);
var _default = SelectTreeBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _ExpTree = _interopRequireDefault(__webpack_require__(87326));
__webpack_require__(94817);
var _SelectListBox = _interopRequireDefault(__webpack_require__(47818));
var _search = _interopRequireWildcard(__webpack_require__(67858));
var _utils = __webpack_require__(84512);
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 isBranchStatus(status) {
  return status === 'open' || status === 'close';
}
function invertStatus(status) {
  return {
    open: 'close',
    close: 'open'
  }[status] || 'none';
}

/***
 * @extends Follower
 * @constructor
 */
function SelectTreeLeafBox() {
  this._initControl();
  this._searchCache = {};
  this._value = null;
  this._items = [];
  this.strictValue = true;
  this.$items = [];
  this.$itemByValue = {};
  this.$selectedItem = null;
  this.$dislayItems = this.$items;
  this.$dislayItemByValue = this.$itemByValue;
  this.$content = (0, _ACore.$)('.as-select-tree-leaf-box-content', this);
  this._savedStatus = {};
  this.estimateSize = {
    width: 0,
    height: 0
  };
  if (this.cancelWaiting) this.cancelWaiting();

  /**
   * @name items
   * @memberof MSelectTreeLeafBox#
   * @type {Array}
   */

  /**
   * @name value
   * @memberof MSelectTreeLeafBox#
   */

  /**
   * @name strictMode
   * @type {boolean}
   * @memberof MSelectTreeLeafBox#
   */

  /**
   * @name selectedItem
   * @memberof MSelectTreeLeafBox#
   */
}

SelectTreeLeafBox.tag = 'SelectTreeLeafBox'.toLowerCase();
SelectTreeLeafBox.render = function () {
  return (0, _ACore._)({
    tag: _Follower["default"],
    attr: {
      tabindex: 0
    },
    "class": ['as-select-tree-leaf-box', 'as-select-list-box'],
    extendEvent: ['pressitem'],
    child: [{
      "class": 'as-select-list-box-search-ctn',
      child: 'searchtextinput'
    }, {
      "class": ['as-bscroller', 'as-select-list-box-scroller', 'as-select-tree-leaf-box-content'],
      child: []
    }, 'attachhook.as-dom-signal'],
    props: {
      anchor: [1, 6, 2, 5]
    }
  });
};
SelectTreeLeafBox.prototype._initControl = function () {
  this.$searchInput = (0, _ACore.$)('searchtextinput', this).on('stoptyping', this.eventHandler.searchModify);
};
SelectTreeLeafBox.prototype.resetSearchState = function () {
  var value = this.$searchInput.value;
  if (value.length > 0) {
    this.$searchInput.value = '';
    if (value.trim().length) {
      this.$content.clearChild();
      this.$content.addChild(this.$items);
      this.$dislayItems = this.$items;
      this.$dislayItemByValue = this.$itemByValue;
      this._updateSelectedItem();
    }
  }
};
SelectTreeLeafBox.prototype._findFirstLeaf = function () {
  var found = false;
  function visit(item) {
    if (item.isLeaf) {
      found = item;
      return true;
    }
    if (item.items && item.items.length > 0) {
      item.items.some(visit);
    }
    return !!found;
  }
  this._items.some(visit);
  return found;
};
SelectTreeLeafBox.prototype._makeTree = function (item, dict, savedStatus) {
  var self = this;
  var status = 'none';
  var isLeaf = item.isLeaf;
  if (item.items && item.items.length > 0) {
    status = 'close';
  }
  if (isBranchStatus(status) && isBranchStatus(savedStatus[(0, _utils.keyStringOf)(item.value)])) {
    status = savedStatus[(0, _utils.keyStringOf)(item.value)];
  }
  var nodeElt = (0, _ACore._)({
    tag: _ExpTree["default"].tag,
    "class": 'as-select-tree-leaf-item',
    props: {
      name: item.text,
      desc: item.desc,
      icon: item.icon,
      status: status,
      itemData: item
    },
    on: {
      'statuschange': this.updatePosition.bind(this)
    }
  });
  if (item.noSelect) {
    nodeElt.addClass('as-no-select');
  }
  nodeElt.getNode().on({
    press: function press(event) {
      if (isBranchStatus(nodeElt.status)) {
        nodeElt.status = invertStatus(nodeElt.status);
        savedStatus[(0, _utils.keyStringOf)(item.value)] = nodeElt.status;
        self.updatePosition();
      } else if (isLeaf && !item.noSelect) {
        self.emit('pressitem', {
          item: item,
          target: self,
          itemElt: nodeElt,
          originalEvent: event
        }, self);
      }
    }
  });
  if (dict) {
    if (dict[(0, _utils.keyStringOf)(item.value)] && !this.warned) {
      this.warned = true;
      console.warn(this, 'has duplicated value, element will not work correctly!', item);
    }
    dict[(0, _utils.keyStringOf)(item.value)] = nodeElt;
  }
  if (item.isLeaf) {
    nodeElt.addClass('as-is-leaf');
  }
  if (item.items && item.items.length > 0) {
    item.items.forEach(function (item1) {
      nodeElt.addChild(self._makeTree(item1, dict, savedStatus));
    });
  }
  return nodeElt;
};
SelectTreeLeafBox.prototype._estimateItemWidth = function (item, level) {
  var width = 12; //padding
  width += 12 * level;
  width += 14.7 + 5; //toggle icon
  if (item.icon) width += 21; //icon
  width += 7 + (0, _utils.estimateWidth14)(item.text) + 5 + 7; //margin-text
  if (item.desc) width += 6 + (0, _utils.estimateWidth14)(item.desc) * 0.85;
  return width;
};
SelectTreeLeafBox.prototype.viewToSelected = function () {
  var selectedNode = this.$selectedItem;
  if (!selectedNode) return;
  selectedNode.scrollIntoView();
  var parent = selectedNode.getParent();
  while (parent && parent.getParent) {
    if (parent.status === 'close') {
      parent.getNode().emit('press');
    }
    parent = parent.getParent();
  }
};
SelectTreeLeafBox.prototype.viewToValue = function (value) {
  var viewNode = this.$itemByValue[(0, _utils.keyStringOf)(value)];
  if (!viewNode) return;
  viewNode.scrollIntoView();
  while (viewNode && viewNode.getParent) {
    if (viewNode.status === 'close') {
      viewNode.getNode().emit('press');
    }
    viewNode = viewNode.getParent();
  }
};
SelectTreeLeafBox.prototype._calcEstimateSize = function (items) {
  var self = this;
  var width = 0;
  var height = 0;
  function visit(item, level) {
    var itemWidth = self._estimateItemWidth(item, level);
    width = Math.max(width, itemWidth);
    height += 28;
    if (item.items && item.items.length) {
      item.items.forEach(function (item) {
        visit(item, level + 1);
      });
    }
  }
  items.forEach(function (item) {
    visit(item, 0);
  });
  return {
    width: width,
    height: height
  };
};
SelectTreeLeafBox.prototype._updateSelectedItem = function () {
  if (this.$selectedItem) {
    this.$selectedItem.removeClass('as-selected');
    this.$selectedItem = null;
  }
  this.$selectedItem = this.$dislayItemByValue[(0, _utils.keyStringOf)(this.value)];
  if (this.$selectedItem) {
    this.$selectedItem.addClass('as-selected');
  }
};
SelectTreeLeafBox.prototype.focus = _SelectListBox["default"].prototype.focus;
SelectTreeLeafBox.property = {};
SelectTreeLeafBox.eventHandler = {};
SelectTreeLeafBox.property.items = {
  /***
   * @this SelectTreeLeafBox
   * @param items
   */
  set: function set(items) {
    var self = this;
    this._savedStatus = {};
    this._searchCache = {};
    items = items || [];
    this._items = items;
    (0, _search.prepareSearchForList)(items);
    this.$content.clearChild();
    this.$itemByValue = {};
    this.$dislayItemByValue = this.$itemByValue;
    this.$items = items.map(function (item) {
      return self._makeTree(item, self.$itemByValue, self._savedStatus);
    });
    this.$dislayItems = this.$items;
    this.$content.addChild(this.$items);
    this.estimateSize = this._calcEstimateSize(items);
    this.addStyle('--select-list-estimate-width', this.estimateSize.width + 'px');
    this._updateSelectedItem();
    self.updatePosition();
  },
  get: function get() {
    return this._items;
  }
};
SelectTreeLeafBox.property.value = {
  set: function set(value) {
    this._value = value;
    this._updateSelectedItem();
  },
  get: function get() {
    var firstLeaf;
    if (!this.strictValue || this.$itemByValue[(0, _utils.keyStringOf)(this._value)]) {
      return this._value;
    } else {
      firstLeaf = this._findFirstLeaf();
      if (firstLeaf) return firstLeaf.value;else return this._value;
    }
  }
};
SelectTreeLeafBox.property.selectedItem = {
  get: function get() {
    var key = (0, _utils.keyStringOf)(this._value);
    var firstLeaf;
    if (this.$itemByValue[key]) {
      return this.$itemByValue[key].itemData;
    } else if (!this.strictValue) {
      return null;
    } else {
      firstLeaf = this._findFirstLeaf();
      if (firstLeaf) return firstLeaf;else return null;
    }
  }
};
SelectTreeLeafBox.property.enableSearch = _SelectListBox["default"].property.enableSearch;
SelectTreeLeafBox.prototype._search = function (query) {
  var self = this;
  var queryItem = (0, _search["default"])({
    text: query
  });
  var minScore = Infinity;
  var maxScore = -Infinity;
  function makeScoreTree(item) {
    var holder = {
      item: item,
      score: (0, _search.calcItemMatchScore)(queryItem, item),
      childrenScore: 0,
      children: []
    };
    minScore = Math.min(minScore, holder.score);
    maxScore = Math.max(maxScore, holder.score);
    var children;
    if (item.items && item.items.length > 0) {
      children = item.items.map(makeScoreTree);
      holder.children = children;
      holder.childrenScore = holder.children.reduce(function (ac, cr) {
        return Math.max(ac, cr.score, cr.childrenScore);
      }, 0);
    }
    return holder;
  }
  var treeScores = this._items.map(makeScoreTree);
  var midScore = (maxScore + minScore) / 2;
  var savedStatus = {};
  function filterTree(scoredTrees, ignore) {
    return scoredTrees.filter(function (holder) {
      return ignore || holder.score >= midScore || holder.childrenScore >= midScore;
    }).map(function makeTree(holder) {
      var item = Object.assign({}, holder.item);
      if (!ignore && holder.children && holder.children.length > 0) {
        if (holder.childrenScore >= midScore) {
          savedStatus[(0, _utils.keyStringOf)(item.value)] = 'open';
          item.items = filterTree(holder.children, false);
        } else {
          savedStatus[(0, _utils.keyStringOf)(item.value)] = 'close';
          item.items = filterTree(holder.children, true);
        }
      }
      return item;
    });
  }
  var resultItems = filterTree(treeScores, false);
  var dict = {};
  var $items = resultItems.map(function (item) {
    return self._makeTree(item, dict, savedStatus);
  });
  return {
    $items: $items,
    items: resultItems,
    savedStatus: Object.assign({}, savedStatus),
    originSavedStatus: savedStatus,
    dict: dict
  };
};

/***
 * @this SelectTreeLeafBox
 */
SelectTreeLeafBox.eventHandler.searchModify = function () {
  var query = this.$searchInput.value.trim();
  if (query.length === 0) {
    this.$content.clearChild().addChild(this.$items);
    this.$dislayItemByValue = this.$itemByValue;
    this.$dislayItems = this.$items;
    this._updateSelectedItem();
    this.updatePosition();
    return;
  }
  if (!this._searchCache[query]) {
    this._searchCache[query] = this._search(query);
  }
  var searchData = this._searchCache[query];
  searchData.savedStatus = Object.assign(searchData.savedStatus, searchData.originSavedStatus);
  console.log(searchData);
  for (var val in searchData.dict) {
    if (isBranchStatus(searchData.dict[val].status)) {
      if (searchData.savedStatus[val]) {
        searchData.dict[val].status = searchData.savedStatus[val];
      }
    }
  }
  this.$content.clearChild().addChild(searchData.$items);
  this.$dislayItemByValue = searchData.dict;
  this.$dislayItems = searchData.$items;
  this._updateSelectedItem();
  this.updatePosition();
};
_ACore["default"].install(SelectTreeLeafBox);
var _default = SelectTreeLeafBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.STLBoxController = STLBoxController;
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _SelectTreeLeafBox = _interopRequireDefault(__webpack_require__(79442));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _EventEmitter = __webpack_require__(46833);
var _Dom = __webpack_require__(64821);
var _SelectMenu = _interopRequireDefault(__webpack_require__(41735));
var _utils = __webpack_require__(84512);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _MSelectTreeLeafBox = _interopRequireDefault(__webpack_require__(73484));
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; }
/***
 * @extends AElement
 * @constructor
 */
function SelectTreeLeafMenu() {
  var _this = this;
  this.$selectBox = (0, _ACore._)({
    tag: this.mobile ? _MSelectTreeLeafBox["default"] : _SelectTreeLeafBox["default"].tag,
    on: {
      pressitem: this.eventHandler.pressItem,
      preupdateposition: this.eventHandler.preUpdateListPosition,
      close: function close() {
        _this.isFocus = false;
      }
    }
  });
  this.$selectBox.sponsorElement = this;
  _OOP["default"].drillProperty(this, this.$selectBox, ['enableSearch', 'selectedItem']);
  this.$holderItem = (0, _ACore.$)('selectlistitem', this);
  // this.on('click', this.eventHandler.click.bind(this));
  this.boxCtrl = new STLBoxController(this);
  _OOP["default"].drillProperty(this, this.boxCtrl, 'isFocus');

  /**
   * @name items
   * @type {Array}
   * @memberof SelectTreeLeafMenu#
   */

  /**
   * @name value
   * @memberof SelectTreeLeafMenu#
   */

  /**
   * @name mobile
   * @type {boolean}
   * @memberof SelectTreeLeafMenu#
   */
  /**
   * @name disabled
   * @type {boolean}
   * @memberof SelectTreeLeafMenu#
   */
  /**
   * @name readOnly
   * @type {boolean}
   * @memberof SelectTreeLeafMenu#
   */
  /**
   * @name openValue
   * @memberof SelectTreeLeafMenu#
   * */
  /**
   * @name nullValue
   * @memberof SelectTreeLeafMenu#
   * */
}

SelectTreeLeafMenu.tag = 'SelectTreeLeafMenu'.toLowerCase();
SelectTreeLeafMenu.render = function () {
  var mobile = _BrowserDetector["default"].isMobile;
  return (0, _ACore._)({
    "class": ['absol-selectmenu', 'as-select-menu', 'as-select-tree-leaf-menu', 'as-strict-value'],
    extendEvent: ['change'],
    props: {
      mobile: mobile
    },
    attr: {
      tabindex: '1'
    },
    child: [{
      "class": 'absol-selectmenu-holder-item',
      child: 'selectlistitem'
    }, {
      tag: 'button',
      "class": 'absol-selectmenu-btn',
      child: ['dropdown-ico']
    }]
  });
};
SelectTreeLeafMenu.prototype.init = function (props) {
  props = props || {};
  Object.keys(props).forEach(function (key) {
    if (props[key] === undefined) delete props[key];
  });
  if (props.strictValue) {
    this.strictValue = props.strictValue;
    delete props.strictValue;
  }
  var hasValue = ('value' in props);
  var value = props.value;
  delete props.value;
  this["super"](props);
  if (hasValue) this.value = value;
};
SelectTreeLeafMenu.property = {};
SelectTreeLeafMenu.property.items = {
  set: function set(items) {
    items = (0, _utils.copySelectionItemArray)(items || [], {
      removeNoView: true
    });
    this.$selectBox.items = items;
    if (!this.mobile) this.addStyle('--select-list-estimate-width', this.$selectBox.estimateSize.width + 'px');
    var selectedItem = this.$selectBox.selectedItem;
    if (selectedItem) {
      this.$holderItem.data = selectedItem;
      if (this.mobile) {
        this.addStyle('--select-list-estimate-width', this.$selectBox._estimateItemWidth(selectedItem, 0) + 'px');
      }
    } else {
      this.$holderItem.data = {
        text: ''
      };
    }
  },
  get: function get() {
    return this.$selectBox.items;
  }
};
SelectTreeLeafMenu.property.value = {
  set: function set(value) {
    this.$selectBox.value = value;
    var selectedItem = this.$selectBox.selectedItem;
    if (selectedItem) {
      this.$holderItem.data = selectedItem;
      if (this.mobile) {
        this.addStyle('--select-list-estimate-width', this.$selectBox._estimateItemWidth(selectedItem, 0) + 'px');
      }
    } else {
      this.$holderItem.data = {
        text: ''
      };
    }
  },
  get: function get() {
    return this.$selectBox.value;
  }
};
SelectTreeLeafMenu.property.strictValue = {
  set: function set(value) {
    this.$selectBox.strictValue = !!value;
    if (value) this.addClass('as-strict-value');else this.removeClass('as-strict-value');
  },
  get: function get() {
    return this.hasClass('as-strict-value');
  }
};
SelectTreeLeafMenu.property.disabled = _SelectMenu["default"].property.disabled;
SelectTreeLeafMenu.eventHandler = {};
SelectTreeLeafMenu.eventHandler.clickOut = function (event) {
  if ((0, _EventEmitter.hitElement)(this.$selectBox, event)) return;
  this.isFocus = false;
};
SelectTreeLeafMenu.eventHandler.click = function (event) {
  if (!this.disabled) this.isFocus = true;
};
SelectTreeLeafMenu.eventHandler.pressItem = function (event) {
  this.$selectBox.value = event.item.value;
  this.$holderItem.data = event.item;
  var prevValue = this._value;
  this._value = event.item.value;
  this.isFocus = false;
  if (prevValue !== this._value) {
    this.emit('change', {
      item: event,
      type: 'change',
      target: this,
      originalEvent: event.originalEvent || event.originalEvent || event
    }, this);
  }
};
SelectTreeLeafMenu.eventHandler.preUpdateListPosition = function () {
  var bound = this.getBoundingClientRect();
  var screenSize = (0, _Dom.getScreenSize)();
  var availableTop = bound.top - 5;
  var availableBot = screenSize.height - 5 - bound.bottom;
  this.$selectBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px');
  var outBound = (0, _Dom.traceOutBoundingClientRect)(this);
  if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) {
    this.isFocus = false;
  }
};
_ACore["default"].install(SelectTreeLeafMenu);
var _default = SelectTreeLeafMenu;
/**
 *
 * @param {SelectTreeLeafMenu} elt
 * @constructor
 */
exports["default"] = _default;
function STLBoxController(elt) {
  this.elt = elt;
  this.ev_click = this.ev_click.bind(this);
  this.ev_clickOut = this.ev_clickOut.bind(this);
  this.elt.on('click', this.ev_click);
}
Object.defineProperty(STLBoxController.prototype, 'isFocus', {
  set: function set(value) {
    var _this2 = this;
    value = !!value;
    if (this.elt.hasClass('as-focus') === value) return;
    if (value && (this.elt.disabled || this.elt.readOnly)) return;
    var bound;
    if (value) {
      this.elt.$selectBox.addTo(document.body);
      this.elt.addClass('as-focus');
      this.elt.$selectBox.addStyle('visible', 'hidden');
      this.elt.off('click', this.ev_click);
      if (this.elt.mobile) {} else {
        bound = this.elt.getBoundingClientRect();
        this.elt.$selectBox.addStyle('min-width', bound.width + 'px');
        this.elt.$selectBox.followTarget = this.elt;
        this.elt.$selectBox.updatePosition();
      }
      setTimeout(function () {
        document.addEventListener('mousedown', this.ev_clickOut);
        this.elt.$selectBox.removeStyle('visibility');
        this.elt.$selectBox.focus();
      }.bind(this), 5);
      if (this.elt.$selectBox.viewToValue && (0, _utils.keyStringOf)(this.elt.nullValue) === (0, _utils.keyStringOf)(this.elt.$selectBox.value)) {
        this.elt.$selectBox.viewToValue(this.elt.openValue);
      } else this.elt.$selectBox.viewToSelected();
    } else {
      this.elt.removeClass('as-focus');
      this.elt.$selectBox.remove();
      document.removeEventListener('mousedown', this.ev_clickOut);
      if (this.elt.mobile) {} else {
        this.elt.$selectBox.followTarget = null;
      }
      setTimeout(function () {
        _this2.elt.on('click', _this2.ev_click);
      }, 100);
      this.elt.$selectBox.resetSearchState();
    }
  },
  get: function get() {
    return this.elt.hasClass('as-focus');
  }
});
STLBoxController.prototype.ev_click = function (event) {
  if (!this.elt.disabled && !this.elt.readOnly) this.isFocus = true;
};
STLBoxController.prototype.ev_clickOut = function (event) {
  if (!(0, _EventEmitter.hitElement)(this.elt.$selectBox, event) || event.target.attr && event.target.attr('class') && event.target.attr('class').indexOf('modal') >= 0) {
    this.isFocus = false;
  }
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(65997);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _SelectMenu = _interopRequireDefault(__webpack_require__(41735));
var _SelectTreeBox = _interopRequireDefault(__webpack_require__(63443));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends SelectMenu
 * @constructor
 */
function SelectTreeMenu() {
  this._items = [];
  this._value = null;
  this._lastValue = null;
  this.$holderItem = $('.absol-selectmenu-holder-item', this);
  this.$viewItem = $('.absol-selectmenu-holder-item selectlistitem', this);
  /***
   *
   * @type {SelectTreeBox}
   */
  this.$selectlistBox = _({
    tag: 'selecttreebox',
    props: {
      anchor: [1, 6, 2, 5]
    },
    on: {
      preupdateposition: this.eventHandler.preUpdateListPosition
    }
  });
  this.$selectlistBox.on('pressitem', this.eventHandler.selectListBoxPressItem);
  this.$selectlistBox.followTarget = this;
  this.$selectlistBox.sponsorElement = this;
  _OOP["default"].drillProperty(this, this.$selectlistBox, 'enableSearch');
  this._lastValue = "NOTHING_VALUE";
  this._isFocus = false;
  this.isFocus = false;
  this.on('mousedown', this.eventHandler.click, true);
}
SelectTreeMenu.tag = 'SelectTreeMenu'.toLowerCase();
SelectTreeMenu.render = function () {
  return _SelectMenu["default"].render().addClass('as-select-tree-menu');
};
SelectTreeMenu.eventHandler = Object.assign({}, _SelectMenu["default"].eventHandler);
SelectTreeMenu.property = Object.assign({}, _SelectMenu["default"].property);
Object.assign(SelectTreeMenu.prototype, _SelectMenu["default"].prototype);
_ACore["default"].install(SelectTreeMenu);
var _default = SelectTreeMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(25289);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var warned = false;

/***
 * @extends TabFrame
 * @constructor
 */
function SinglePage() {
  var thisSP = this;
  this._updateIntv = -1;
  this._tick = function () {
    if (this.isDescendantOf(document.body)) {
      if (this.$header) {
        var headerHeight = this.$header.getBoundingClientRect().height;
        if (this._prevHeaderHeight !== headerHeight) {
          _ResizeSystem["default"].update();
        }
      }
    } else {
      clearInterval(this._updateIntv);
      this._updateIntv = -1;
    }
  }.bind(this);
  this.$attachhook = $('attachhook', this).on('attached', function () {
    this.updateSize();
    setTimeout(this.updateSize, 20);
    _Dom["default"].addToResizeSystem(this);
    if (thisSP._updateIntv < 0) {
      thisSP._updateIntv = setInterval(thisSP._tick, 200);
    }
  });
  this.$attachhook.updateSize = this.updateSize.bind(this);
  this.$header = null;
  this.$footer = null;
  this.$viewport = $('.absol-single-page-scroller-viewport', this);
  this.$scroller = $('.absol-single-page-scroller', this);
}
SinglePage.tag = 'SinglePage'.toLowerCase();
SinglePage.render = function () {
  return _({
    tag: 'tabframe',
    extendEvent: ['sizechange'],
    "class": 'absol-single-page',
    child: [{
      "class": 'absol-single-page-scroller',
      child: {
        "class": 'absol-single-page-scroller-viewport'
      }
    }, 'attachhook']
  });
};
SinglePage.prototype.updateSize = function () {
  if (!this.isDescendantOf(document.body)) return;
  var paddingTop = parseFloat(this.getComputedStyleValue('padding-top').replace('px', '')) || 0;
  if (this.$header) {
    var headerBound = this.$header.getBoundingClientRect();
    var headerMarginTop = parseFloat(this.$header.getComputedStyleValue('margin-top').replace('px', '')) || 0;
    var headerMarginBottom = parseFloat(this.$header.getComputedStyleValue('margin-bottom').replace('px', '')) || 0;
    this.$scroller.addStyle('top', headerBound.height + headerMarginTop + headerMarginBottom + paddingTop + 'px');
    this._prevHeaderHeight = headerBound.height;
  }
  if (this.$footer) {
    var footerBound = this.$footer.getBoundingClientRect();
    this.$viewport.addStyle('padding-bottom', footerBound.height + 'px');
  }
  this.addStyle('--single-page-scroller-height', this.$scroller.clientHeight + 'px');
  if (this.isSupportedEvent('sizechange')) this.emit('sizechange', {
    type: 'sizechange',
    target: this
  }, this);
};
SinglePage.prototype.addChild = function (elt) {
  if (elt.classList.contains('absol-single-page-header')) {
    if (this.firstChild) {
      this.addChildBefore(elt, this.firstChild);
    } else {
      this.appendChild(elt);
    }
    this.$header = $(elt);
    this.updateSize();
  } else if (elt.classList.contains('absol-single-page-footer')) {
    this.$viewport.addChild(elt);
    this.$footer = $(elt);
    this.updateSize();
  } else {
    this.$viewport.addChild(elt);
  }
};
SinglePage.prototype.removeChild = function (elt) {
  if (elt == this.$footer) {
    this.$viewport.removeChild(elt);
    this.$footer = undefined;
    this.updateSize();
  } else if (elt == this.$header) {
    this["super"](elt);
    this.$header = undefined;
    this.updateSize();
  } else {
    this.$viewport.removeChild(elt);
  }
};
_ACore["default"].install(SinglePage);
var _default = SinglePage;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(77058);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _Dom = __webpack_require__(64821);
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); }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var t = document.createElement;

/***
 * @extends AElement
 * @constructor
 */
function SnackBar() {
  // OOP.drillProperty(this, this.firstChild, 'message', 'data');
  /***
   *
   * @type {*}
   */
  this._message = null;
  this.message = null;
}
SnackBar.tag = 'SnackBar'.toLowerCase();
SnackBar.render = function () {
  return _({
    "class": 'as-snackbar'
  });
};
SnackBar.property = {};
SnackBar.property.message = {
  set: function set(value) {
    this._message = value;
    if (value instanceof Array) {
      this.clearChild();
      this.addChild(value.map(function (item) {
        return _(item);
      }));
    } else if (typeof value === 'string') {
      this.innerHTML = value;
    } else if ((0, _Dom.isDomNode)(value)) {
      this.clearChild().addChild(value);
    } else if (value && _typeof(value) === 'object' && (value.text || value.props || value.tag || value.attr || value.style || value.child || value.child && value.child instanceof Array)) {
      this.clearChild().addChild(_(value));
    } else {
      this.clearChild();
      this._message = null;
    }
  },
  get: function get() {
    return this._message;
  }
};
_ACore["default"].install(SnackBar);
SnackBar.$instance = _('snackbar');
SnackBar._removeTimeout = -1;
SnackBar.show = function (message) {
  if (SnackBar._removeTimeout > 0) {
    clearTimeout(SnackBar._removeTimeout);
  }
  if (!SnackBar.$instance.parentElement) document.body.appendChild(SnackBar.$instance);
  SnackBar.$instance.removeClass('as-hiding');
  SnackBar._removeTimeout = setTimeout(function () {
    SnackBar.$instance.addClass('as-show');
    SnackBar.$instance.message = message;
    SnackBar._removeTimeout = setTimeout(function () {
      SnackBar.$instance.removeClass('as-show').addClass('as-hiding');
      SnackBar._removeTimeout = setTimeout(function () {
        SnackBar.$instance.remove();
        SnackBar._removeTimeout = -1;
        SnackBar.$instance.removeClass('as-hiding');
      }, 500);
    }, 3000);
  }, 1);
};
var _default = SnackBar;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(27439);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _utils = __webpack_require__(84512);
var _Text = __webpack_require__(35844);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function SpanInput() {
  this.defineEvent(['change']);
  this._inputType = 0;
  this._lastValue = null;
  this.on('paste', this.eventHandler.paste).on('keyup', this.eventHandler.keyup).on('keydown', this.eventHandler.keydown).on('blur', this.eventHandler.blur);
}
SpanInput.prototype.notifyValueChange = function (event) {
  var cValue = this.value;
  if (this._lastValue != cValue && (this._inputType != 1 || !isNaN(this._lastValue) || !isNaN(cValue))) {
    this._lastValue = cValue;
    this.emit('change', {
      type: 'change',
      value: cValue,
      originEvent: event
    }, this);
  }
};
SpanInput.eventHandler = {};
SpanInput.eventHandler.keyup = function (event) {
  if (this._inputType == 0) {
    this.notifyValueChange(event);
  } else if (this._inputType == 1) {
    this.eventHandler.numberKeyup(event);
  }
};
SpanInput.eventHandler.keydown = function (event) {
  if (this._inputType == 0) {} else if (this._inputType == 1) {
    this.eventHandler.numberKeydown(event);
  }
};
SpanInput.eventHandler.numberBlur = function (value) {
  this.notifyValueChange(event);
};
SpanInput.eventHandler.textBlur = function (event) {
  this.notifyValueChange(event);
};
SpanInput.eventHandler.blur = function (event) {
  if (this._inputType == 0) {
    this.eventHandler.textBlur(event);
  } else if (this._inputType == 1) {
    this.eventHandler.numberKeydown(event);
  }
};
SpanInput.eventHandler.numberKeyup = function (event) {
  this.notifyValueChange();
};
SpanInput.eventHandler.numberKeydown = function (event) {
  var key = event.key;
  if (key == 'Enter') {
    event.preventDefault();
    this.blur();
    this.notifyValueChange();
    return;
  }
  if (key && key.length == 1 && !event.ctrlKey && !event.altKey) {
    if (key.match(/[0-9.\-\+]/)) {
      if (key == '.' && this.text.indexOf('.') >= 0) event.preventDefault();
      if ((key == '+' || key == '-') && (this.text.indexOf('+') >= 0 || this.text.indexOf('-') >= 0 || getCaretPosition(this) > 0)) event.preventDefault();
    } else event.preventDefault();
  }
};
SpanInput.eventHandler.paste = function (event) {
  event.preventDefault();
  if (event.clipboardData && event.clipboardData.getData) {
    var text = event.clipboardData.getData("text/plain");
    if (this._inputType == 1) text = text.replace(/[^0-9.\-+]/g, '');
    document.execCommand("insertHTML", false, text);
    if (this._inputType == 1) {
      if (isNaN(this.value)) {
        this.value = NaN;
      }
    }
  } else if (window.clipboardData && window.clipboardData.getData) {
    var text = window.clipboardData.getData("Text");
    if (this._inputType == 1) text = text.replace(/[^0-9.\-+]/g, '');
    (0, _utils.insertTextAtCursor)(text);
    if (this._inputType == 1) {
      if (isNaN(this.value)) {
        this.value = NaN;
      }
    }
  }
};
SpanInput.property = {};
SpanInput.property.value = {
  set: function set(value) {
    if (this._inputType == 1 && isNaN(value)) value = null;
    this.clearChild();
    if (value !== null) this.addChild(_({
      text: value + ''
    }));
  },
  get: function get() {
    if (this._inputType == 1) {
      return parseFloat(this.text);
    } else {
      return this.text;
    }
  }
};
SpanInput.property.type = {
  set: function set(value) {
    var index = ['text', 'number'].indexOf(value);
    if (index < 0) index = 0;
    this._inputType = index;
    if (index == 1) {
      this.addClass('absol-span-input-empty-minus');
    } else {
      this.removeClass('absol-span-input-empty-minus');
    }
  },
  get: function get() {
    return ['text', 'number'][this._inputType];
  }
};
SpanInput.property.text = {
  get: function get() {
    return (0, _Text.getTextIn)(this);
  }
};
SpanInput.tag = 'spaninput';
SpanInput.render = function () {
  return _('span.absol-span-input[contenteditable="true"]');
};
_ACore["default"].install(SpanInput);
var _default = SpanInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = exports.STOP = exports.STATE_TO_STRING = exports.START = exports.RUNNING = exports.READY = exports.PAUSE = exports.NOT_READY = exports.ERROR = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var NOT_READY = 0;
exports.NOT_READY = NOT_READY;
var READY = 1;
exports.READY = READY;
var START = 2;
exports.START = START;
var RUNNING = 3;
exports.RUNNING = RUNNING;
var PAUSE = 4;
exports.PAUSE = PAUSE;
var STOP = 5;
exports.STOP = STOP;
var ERROR = 6;
exports.ERROR = ERROR;
var STATE_TO_STRING = ['NOT_READY', 'READY', 'START', 'RUNNING', 'PAUSE', 'STOP', 'ERROR'];

/**
 * @augments AElement
 * @augments HTMLCanvasElement
 * @constructor
 */
exports.STATE_TO_STRING = STATE_TO_STRING;
function Sprite() {
  this.loadTextureTimeout = 5000;
  this._textureLoaded = false;
  this._state = NOT_READY;
  this.defineEvent(['ready', 'srcerror', 'play', 'resume', 'pause', 'stop', 'reset', 'end', 'frame']);
  this._length = 60;
  this._lastDrawFrame = -1;
  this._frameIndex = 0;
  this._timeout = -1;
  this.ctx = this.getContext('2d');
  this._fps = 10;
  this._lastDrawMilis = 0;
  this._overTime = 0;
  this.draw = this.draw.bind(this);
  this.texture = null;
  this._frames = {
    type: 'grid',
    col: 1,
    row: 1
  };
  this._loop = false;
}
Sprite.cache = {};
Sprite.prototype.draw = function () {
  //todo
  var now = new Date().getTime();
  var dt = this._overTime + now - this._lastDrawMilis;
  var di = Math.floor(dt / 1000 * this._fps);
  var frameIndex = this._frameIndex + di;
  if (this._loop) {
    frameIndex = frameIndex % this._length;
  } else {
    frameIndex = Math.min(this._length - 1, frameIndex);
  }
  if (!isNaN(this._frameIndex) && frameIndex != this._frameIndex) {
    this.drawFrame(this._frameIndex);
  }
  this._overTime = dt - di * 1000 / this._fps;
  var nextTime = now + 1000 / this._fps - this._overTime - new Date().getTime();
  this._lastDrawMilis = now;
  this._frameIndex = frameIndex;
  this._timeout = -1;
  if (this._loop || frameIndex + 1 < this._length) {
    if (this._state == RUNNING) this._timeout = setTimeout(this.draw, nextTime);
  } else this.stop();
};
Sprite.prototype.drawFrame = function (index) {
  if (this._lastDrawFrame == index) return;
  this._lastDrawFrame = index;
  this.ctx.clearRect(0, 0, this.width, this.height);
  if (this._frames.type == 'grid') {
    var imgWidth = this.texture.naturalWidth;
    var imgHeight = this.texture.naturalHeight;
    var sHeight = imgHeight / this._frames.row;
    var sWidth = imgWidth / this._frames.col;
    var sx = index % this._frames.col * sWidth;
    var sy = Math.floor(index / this._frames.col) * sHeight;
    this.ctx.drawImage(this.texture, sx, sy, sWidth, sHeight, 0, 0, this.width, this.height);
  } else {}
  this.emit('frame', {
    name: 'frame',
    target: this,
    frameIndex: index
  }, this);
};
Sprite.prototype.stop = function () {
  this.pause();
  if (this._state != PAUSE) return this;
  this._state = STOP;
  this.emit('stop', {
    name: 'stop',
    target: this
  }, this);
  return this;
};
Sprite.prototype.pause = function () {
  if (this._state != RUNNING) return this;
  this._state = PAUSE;
  if (this._timeout > 0) {
    clearTimeout(this._timeout);
    this._timeout = -1;
  }
  var now = new Date().getTime();
  this._overTime += now - this._lastDrawMilis;
  this.emit('pause', {
    name: 'pause',
    target: this
  }, this);
};
Sprite.prototype.resume = function () {
  if (this._state != START && this._state != PAUSE) return this;
  if (this._state == RUNNING) return this;
  this._state = RUNNING;
  var now = new Date().getTime();
  this._lastDrawMilis = now;
  this.draw();
  this.emit('resume', {
    name: 'pause',
    target: this
  }, this);
};
Sprite.prototype.reset = function () {
  this._frameIndex = 0;
  this._overTime = 0;
};
Sprite.prototype.play = function () {
  if (this._state == ERROR) return this;
  if (this._state == RUNNING) return this;
  if (this._state == READY || this._state == STOP) {
    this.reset();
  }
  this._state = START;
  this.emit('play', {
    name: 'start',
    target: this
  }, this);
  this.resume();
  return this;
};
Sprite.prototype.afterReady = function () {
  var thisSprite = this;
  if (this._state != NOT_READY && this._state != ERROR) return Promise.resolve();else return new Promise(function (rs, rj) {
    thisSprite.once('ready', rs);
    thisSprite.once('srcerror', rj);
  });
};
Sprite.tag = 'sprite';
Sprite.render = function () {
  return _('canvas.as-sprite');
};
Sprite.property = {};
Sprite.property.frames = {
  set: function set(value) {
    this.stop();
    this._lastDrawFrame = -1;
    if (value && value.type == 'grid') {
      this._length = value.col * value.row;
    }
    this._frames = value;
    if (this._textureLoaded && this._frames && this._state == NOT_READY) {
      //todo: verify frame
      this._state = READY;
      this.emit('ready', {
        target: this,
        name: 'ready'
      }, this);
    }
  },
  get: function get() {
    return this._frames;
  }
};
Sprite.property.frameIndex = {
  set: function set(value) {
    value = value || 0;
    if (value < 0) value = this._length - 1;
    if (this._loop) {
      this._frameIndex = value % this._length;
      this._overTime = 0;
    } else {
      this._frameIndex = Math.max(this._length - 1, value);
      this._overTime = 0;
    }
    this.drawFrame(this._frameIndex);
  },
  get: function get() {
    return this._frameIndex;
  }
};
Sprite.property.src = {
  set: function set(value) {
    this.stop();
    this._lastDrawFrame = -1; //did not draw any thing 
    value = value || [];
    var lastSrc = this._src;
    this._src = value || null;
    if (lastSrc == this._src) return;
    if (!value) this.texture = null;else {
      var cImage;
      if (!Sprite.cache[this._src]) {
        cImage = new Image();
        Sprite.cache[this._src] = cImage;
        cImage.src = this._src;
      } else {
        cImage = Sprite.cache[this._src];
      }
      this.texture = cImage;
      this._state = NOT_READY;
      var thisSprite = this;
      this._textureLoaded = false;
      _Dom["default"].waitImageLoaded(this.texture, this.loadTextureTimeout).then(function (rs) {
        if (thisSprite.texture == cImage) {
          thisSprite._textureLoaded = true;
          if (thisSprite._frames) {
            thisSprite._lastDrawFrame = -1;
            thisSprite._state = READY;
            thisSprite.emit('ready', {
              target: thisSprite,
              name: 'ready'
            }, thisSprite);
          }
        }
      }, function () {
        if (thisSprite.texture == cImage) {
          thisSprite._state = ERROR;
          thisSprite.emit('srcerror', {
            target: thisSprite,
            name: 'srcerror'
          }, thisSprite);
        }
      });
    }
  },
  get: function get() {
    return this._src;
  }
};
Sprite.property.state = {
  get: function get() {
    return STATE_TO_STRING[this._state];
  }
};
Sprite.property.length = {
  get: function get() {
    return this._length;
  }
};
Sprite.property.fps = {
  set: function set(value) {
    value = Math.max(value || 0, 0);
    this._fps = value;
    if (this._state == RUNNING) {
      clearTimeout(this._timeout);
      this._timeout = -1;
      var now = new Date().getTime();
      this._overTime += now - this._lastDrawMilis;
      this._overTime = Math.min(1000 / this._fps, this._overTime);
      this.draw();
    }
  },
  get: function get() {
    return this._fps;
  }
};
Sprite.property.loop = {
  set: function set(value) {
    value = !!value;
    this._loop = value;
  },
  get: function get() {
    return this._loop;
  }
};
_ACore["default"].install(Sprite);
var _default = Sprite;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(14378);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _stringGenerate = __webpack_require__(10713);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var $ = _ACore["default"].$;
var _ = _ACore["default"]._;
function StaticTabbar() {
  var thisST = this;
  this.$activeBox = $('.absol-static-tabbar-active-box', this);
  this.$hline = $('.absol-static-tabbar-hline', this);
  this.$buttons = [];
  this._btDict = {};
  this._activedButton = undefined;
  this.sync = new Promise(function (resolve) {
    _('attachhook').on('error', function () {
      this.remove();
      resolve();
    }).addTo(thisST);
  });
  return this;
}
StaticTabbar.tag = 'StaticTabbar'.toLowerCase();
StaticTabbar.render = function () {
  return _({
    "class": 'absol-static-tabbar',
    extendEvent: 'change',
    child: [{
      "class": 'absol-static-tabbar-active-box',
      child: '.absol-static-tabbar-hline'
    }]
  });
};
StaticTabbar.prototype.fireChange = function (data) {
  this.emit('change', {
    target: this,
    data: data,
    value: this.value
  }, self);
};
StaticTabbar.property = {};
StaticTabbar.property.items = {
  set: function set(value) {
    this.$buttons.forEach(function (e) {
      e.remove();
    });
    this._items = value;
    var self = this;
    this.$buttons = this.items.map(function (tab) {
      var ident = tab.value || (0, _stringGenerate.randomIdent)();
      var button = _({
        tag: 'button',
        "class": 'absol-static-tabbar-button',
        id: 'tab-' + ident,
        child: {
          tag: 'span',
          child: {
            text: tab.text
          }
        },
        on: {
          click: function click(event) {
            if (self.value != tab.value) {
              self.value = ident;
              self.fireChange(tab);
            }
          }
        }
      }).addTo(self);
      self._btDict[ident] = button;
      return button;
    });
    if (this.value !== undefined) {
      this.sync.then(this.activeTab.bind(this, this.value));
    }
  },
  get: function get() {
    return this._items || [];
  }
};
StaticTabbar.property.value = {
  set: function set(value) {
    this._value = value;
    if (this.$buttons.length > 0) {
      this.sync.then(this.activeTab.bind(this, value));
    }
  },
  get: function get() {
    return this._value;
  }
};
StaticTabbar.prototype.activeTab = function (ident) {
  if (this._activedButton) this._activedButton.removeClass('active');
  var button = this._btDict[ident];
  this._activedButton = button;
  if (button) {
    button.addClass('active');
    var bound = this.getBoundingClientRect();
    var buttonBound = button.getBoundingClientRect();
    var dx = buttonBound.left - bound.left;
    var fontSize = this.getFontSize();
    this.$activeBox.addStyle({
      left: dx / fontSize + 'em',
      width: buttonBound.width / fontSize + 'em'
    });
  } else {
    this.$activeBox.addStyle({
      left: '0',
      width: '0'
    });
  }
};
_ACore["default"].install('statictabbar', StaticTabbar);
var _default = StaticTabbar;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(78434);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _CheckBoxInput = _interopRequireDefault(__webpack_require__(8398));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function Switch() {
  var thisS = this;
  this.$input = $('input', this);
  this.$input.on('click', function (event) {
    thisS.emit('change', event, thisS);
  });
  _OOP["default"].drillProperty(this, this.$input, 'checked');
  _OOP["default"].drillProperty(this, this.$input, 'isOn', 'checked');
  this.on('click', function (event) {
    if (this.readOnly) event.preventDefault();
  }, true);
}
Switch.tag = 'switch';
Switch.render = function () {
  return _({
    tag: 'label',
    "class": 'absol-switch',
    extendEvent: 'change',
    child: ['input[type="checkbox"]', 'span.absol-switch-slider']
  });
};
Switch.attribute = {
  checked: {
    set: function set(value) {
      if (value == 'false' || value == null) {
        this.checked = false;
      } else {
        this.checked = true;
      }
    },
    get: function get() {
      return this.checked ? 'true' : 'false';
    },
    remove: function remove() {
      this.checked = false;
    }
  },
  disabled: {
    set: function set(value) {
      if (value == 'false' || value == null) {
        this.disabled = false;
      } else {
        this.disabled = true;
      }
    },
    get: function get() {
      return this.disabled ? 'true' : 'false';
    },
    remove: function remove() {
      this.disabled = false;
    }
  }
};
Switch.property = {
  disabled: {
    set: function set(value) {
      this.$input.disabled = !!value;
      if (value) {
        this.addClass('disabled');
      } else {
        this.removeClass('disabled');
      }
    },
    get: function get() {
      return this.$input.disabled;
    }
  },
  readOnly: _CheckBoxInput["default"].property.readOnly
};
_ACore["default"].install('switch', Switch);
var _default = Switch;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(61812);
var _CheckBoxInput = _interopRequireDefault(__webpack_require__(8398));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _utils = __webpack_require__(84512);
var _EventEmitter = __webpack_require__(46833);
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; }
/***
 * @extends AElement
 * @constructor
 */
function TOCItem() {
  this.$iconP = null;
  this.$iconCtn = (0, _ACore.$)('.as-toc-item-ext-icon-ctn', this);
  this._status = 'none';
  this.$name = (0, _ACore.$)('.as-toc-item-name', this);
  this.$nameInput = (0, _ACore.$)('.as-toc-item-name-input', this).on('keydown', this.eventHandler.keyDownNameInput).on('paste', this.eventHandler.keyDownNameInput);
  this.$toggleCtn = (0, _ACore.$)('.as-toc-item-toggle-ico-ctn', this);
  this._level = 0;
  this.$checkbox = (0, _ACore.$)(_CheckBoxInput["default"].tag, this).on('change', this.eventHandler.checkedChange);
  this.$checkbox.disabled = true;
  this.$checkbox.addStyle('display', 'none');
  this.$checkIco = (0, _ACore.$)('.as-toc-item-check-ctn .mdi-check', this).addStyle('display', 'none').addStyle('font-size', '18px');
  this.$quickMenuBtn = (0, _ACore.$)('.as-toc-item-quick-menu-ctn button', this).on('click', this.eventHandler.clickQuickMenuBtn);
  this.on('click', this.eventHandler.click);
  this._lastClickTime = 0;
  /***
   * @name hasQuickMenu
   * @type {boolean}
   * @memberOf TOCItem#
   */ /***
      * @name name
      * @type {string}
      * @memberOf TOCItem#
      */

  /***
   * @name status
   * @type {"none"|"open"|"close"}
   * @memberOf TOCItem#
   */

  /***
   * @name level
   * @type {number}
   * @memberOf TOCItem#
   */
  /***
   * @name checked
   * @type {boolean}
   * @memberOf TOCItem#
   */
  /***
   * @name nodeData
   * @type {{}}
   * @memberOf TOCItem#
   */
}

TOCItem.tag = 'TOCItem'.toLowerCase();
TOCItem.render = function () {
  return (0, _ACore._)({
    "class": ['as-toc-item', 'as-has-quick-menu'],
    extendEvent: ['presstoggle', 'checkedchange', 'pressquickmenu', 'press', 'renamefinish'],
    child: [{
      "class": 'as-toc-item-toggle-ico-ctn',
      child: 'toggler-ico'
    }, '.as-toc-item-ext-icon-ctn', {
      "class": 'as-toc-item-name-ctn',
      child: [{
        tag: 'span',
        "class": 'as-toc-item-name',
        child: {
          text: 'đây là cái tên'
        }
      }, {
        tag: 'input',
        "class": 'as-toc-item-name-input',
        attr: {
          type: 'text'
        }
      }]
    }, {
      "class": 'as-toc-item-check-ctn',
      child: [{
        tag: _CheckBoxInput["default"].tag
      }, 'span.mdi.mdi-check']
    }, {
      "class": 'as-toc-item-quick-menu-ctn',
      child: {
        tag: 'button',
        child: 'span.mdi.mdi-dots-vertical'
      }
    }]
  });
};
TOCItem.property = {};
TOCItem.property.icon = {
  set: function set(value) {
    if (this.$iconP) {
      this.$iconP.remove();
      this.$iconP = undefined;
    }
    if (value) {
      var newE;
      if (!_Dom["default"].isDomNode(value)) {
        newE = (0, _ACore._)(value);
      }
      this.$iconP = newE;
      this.$iconCtn.addChild(newE);
      this._icon = value;
    } else {
      this._icon = undefined;
    }
  },
  get: function get() {
    return this._icon;
  }
};
TOCItem.property.status = {
  set: function set(value) {
    if (['none', 'open', 'close'].indexOf(value) < 0) value = 'none';
    this.removeClass('as-status-' + this._status);
    this._status = value;
    this.addClass('as-status-' + value);
  },
  get: function get() {
    return this._status;
  }
};
TOCItem.property.name = {
  set: function set(value) {
    this.$name.firstChild.data = value || '';
  },
  get: function get() {
    return this.$name.firstChild.data;
  }
};
TOCItem.property.level = {
  set: function set(value) {
    this._level = value;
    this.addStyle('--level', value + '');
  },
  get: function get() {
    return this._level;
  }
};
TOCItem.property.checked = {
  set: function set(value) {
    this.$checkbox.checked = value;
    if (value) {
      this.$checkIco.removeStyle('display');
    } else {
      this.$checkIco.addStyle('display', 'none');
    }
  },
  get: function get() {
    return this.$checkbox.checked;
  }
};
TOCItem.property.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
TOCItem.property.hasQuickMenu = {
  set: function set(value) {
    if (value) {
      this.addClass('as-has-quick-menu');
    } else {
      this.removeClass('as-has-quick-menu');
    }
  },
  get: function get() {
    return this.hasClass('as-has-quick-menu');
  }
};
TOCItem.property.extendClasses = {
  set: function set(value) {
    var _this = this;
    value = value || [];
    if (typeof value === 'string') value = value.trim().split(/\s/).filter(function (x) {
      return !!x;
    });
    if (this._extendClasses) {
      this._extendClasses.forEach(function (c) {
        return _this.removeClass(c);
      });
    }
    this._extendClasses = value;
    this._extendClasses.forEach(function (c) {
      return _this.addClass(c);
    });
  },
  get: function get() {
    return this._extendClasses || [];
  }
};
TOCItem.prototype.rename = function () {
  this.addClass('as-renaming');
  var name = this.name;
  var textWidth = (0, _utils.measureText)(name, '14px Arial, Helvetica, sans-serif').width;
  this.$nameInput.addStyle('width', textWidth + 2 + 'px');
  this.$nameInput.value = name;
  this.$nameInput.focus();
  this.$nameInput.select();
  this.$nameInput.once('blur', function (event) {
    var event1;
    if (this.$nameInput.value !== name) {
      event1 = (0, _EventEmitter.copyEvent)(event, {
        originalEvent: event,
        type: 'renamefinish',
        newName: this.$nameInput.value,
        __promise__: Promise.resolve(true),
        waitFor: function waitFor(promise) {
          if (promise && promise.then) {
            this.__promise__ = promise;
          } else {
            this.__promise__ = Promise.resolve(promise);
          }
        }
      });
      this.emit('renamefinish', event1, this);
      event1.__promise__.then(function (result) {
        if (result === true) {
          this.name = event1.newName;
        } else if (typeof result === 'string') {
          this.name = result;
        }
      }.bind(this));
    }
    this.removeClass('as-renaming');
  }.bind(this));
};

/***
 * @memberOf TOCItem#
 * @type {{}}
 */
TOCItem.eventHandler = {};
TOCItem.eventHandler.keyDownNameInput = function (event) {
  var extendText = '';
  if (event.type === 'paste') {
    extendText = (event.clipboardData || window.clipboardData).getData('text') || '';
  } else if (event.key.length === 1 && !(event.ctrl && event.key === 'C')) {
    extendText = event.key;
  } else if (event.key === 'Enter') {
    this.$nameInput.blur();
  }
  if (extendText.length > 0) {
    this.$nameInput.addStyle('width', (0, _utils.measureText)(this.$nameInput.value + extendText, '14px Arial, Helvetica, sans-serif').width + 2 + 'px');
  }
  setTimeout(function () {
    var name = this.$nameInput.value;
    this.$nameInput.addStyle('width', (0, _utils.measureText)(name, '14px Arial, Helvetica, sans-serif').width + 2 + 'px');
  }.bind(this), 0);
};
TOCItem.eventHandler.checkedChange = function (event) {
  this.emit('checkedchange', {
    type: 'checkedchange',
    target: this,
    originalEvent: event
  }, this);
};
TOCItem.eventHandler.clickQuickMenuBtn = function (event) {
  this.emit('pressquickmenu', {
    type: 'pressquickmenu',
    originalEvent: event
  }, this);
};
TOCItem.eventHandler.click = function (event) {
  if ((0, _EventEmitter.hitElement)(this.$checkbox, event) || (0, _EventEmitter.hitElement)(this.$quickMenuBtn, event)) return;
  var now = Date.now();
  if ((0, _EventEmitter.hitElement)(this.$toggleCtn, event)) {
    this.emit('presstoggle', {
      originalEvent: event,
      type: 'presstoggle'
    }, this);
  } else {
    if (now - this._lastClickTime > 500) {
      this.emit('press', {
        type: 'press',
        originalEvent: event
      }, this);
    } else if (this.status === "close" || this.status === 'open') {
      this.emit('presstoggle', {
        originalEvent: event,
        type: 'presstoggle'
      }, this);
    }
    this._lastClickTime = now;
  }
};
_ACore["default"].install(TOCItem);
var _default = TOCItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _TOCItem = _interopRequireDefault(__webpack_require__(64836));
var _QuickMenu = _interopRequireDefault(__webpack_require__(8277));
var _BlurTrigger = _interopRequireDefault(__webpack_require__(17471));
var _search = _interopRequireWildcard(__webpack_require__(67858));
var _noop = _interopRequireDefault(__webpack_require__(5025));
var _utils = __webpack_require__(84512);
var _EventEmitter = __webpack_require__(46833);
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; }
/***
 * @extends AElement
 * @constructor
 */
function TOCList() {
  this.$searchInput = null;
  this.$body = (0, _ACore.$)('.as-toc-list-body', this);
  this.$searching = (0, _ACore.$)('.as-toc-list-searching', this);
  this.rootController = new TOCVirtualRootController(this, [], this.$body);
  this.searchCache = {};
  this.savedState = {
    active: [],
    status: {}
  };
  /***
   * @name nodes
   * @type {{}[]}
   * @memberOf TOCList#
   */
}

TOCList.tag = 'TOCList'.toLowerCase();
TOCList.render = function () {
  return (0, _ACore._)({
    extendEvent: ['pressnode', 'checkednodechange', 'pressnodequickmmenu', 'statechange'],
    "class": 'as-toc-list',
    child: ['.as-toc-list-body', '.as-toc-list-searching']
  });
};
TOCList.prototype.applySavedState = function () {
  var savedStatus = this.savedState.status;
  function visitArr(arr) {
    arr.forEach(function (ct) {
      var status = savedStatus[ct.ident];
      if (status) {
        ct.status = status;
      }
      savedStatus[ct.ident] = ct.status;
      visitArr(ct.children);
    });
  }
  visitArr(this.rootController.children);
  if (this.savedState.active) {
    this.savedState.active.forEach(function (ident) {
      var activeCt = this.findControllerByIdent(ident);
      if (activeCt) activeCt.active();
    }.bind(this));
  }
};
TOCList.prototype.resetSavedState = function () {
  this.savedState = {
    active: null,
    status: {}
  };
};
TOCList.prototype.saveState = function () {
  var oldState = this.savedState;
  var savedState = {
    active: [],
    status: {}
  };
  var changed = false;
  function visitArr(arr) {
    arr.forEach(function (ct) {
      savedState.status[ct.ident] = ct.status;
      changed = changed || savedState.status[ct.ident] !== oldState.status[ct.ident];
      if (ct.nodeElt.hasClass('as-active')) {
        savedState.active.push(ct.ident);
      }
      visitArr(ct.children);
    });
  }
  var oldActive = (oldState.active || []).slice();
  oldActive.sort();
  var newActive = (savedState.active || []).slice();
  newActive.sort();
  changed = changed || oldActive.join('/') !== newActive.join('/');
  visitArr(this.rootController.children);
  this.savedState = savedState;
  if (changed) this.notifySavedStateChange();
};
TOCList.prototype.notifySavedStateChange = function () {
  this.emit('statechange', {
    target: this,
    type: 'statechange'
  }, this);
};
TOCList.prototype.loadSavedState = function (savedState) {
  savedState = savedState || {};
  if (typeof savedState.active === 'string') savedState.active = [savedState.active];
  this.savedState = {
    active: savedState.active || [],
    status: savedState.status || {}
  };
  this.applySavedState();
};

/***
 * @param {number=} n
 */
TOCList.prototype.openAllNodeRecursive = function (n) {
  this.rootController.openRecursive(n);
  this.saveState();
};
TOCList.prototype.closeAllNodeRecursive = function () {
  this.rootController.closeRecursive();
  this.saveState();
};
TOCList.prototype.deactivateAllNode = function () {
  this.rootController.deactivateRecursive();
};

/***
 *
 * @param ident
 * @returns {TOCNodeController|null}
 */
TOCList.prototype.activeNode = function (ident) {
  var nodeCt = this.findControllerByIdent(ident);
  var parent;
  if (nodeCt) {
    nodeCt.active();
    parent = nodeCt.parent;
    while (parent) {
      if (parent.open && parent.status === 'close') parent.open();
      parent = parent.parent;
    }
    setTimeout(function () {
      (0, _utils.vScrollIntoView)(nodeCt.nodeElt);
    }, 100);
  }
  return nodeCt;
};
TOCList.prototype.getActivatedNodes = function () {
  var res = [];
  this.rootController.traverse(function (node) {
    if (node.activated) {
      res.push(node);
    }
  });
  return res;
};

/***
 *
 * @param {string} ident
 * @param {TOCNodeController|TOCVirtualRootController=} rootController
 * @returns {TOCNodeController}
 */
TOCList.prototype.findControllerByIdent = function (ident, rootController) {
  var res = null;
  rootController = rootController || this.rootController;
  function visitArr(arr) {
    arr.some(function (ct) {
      if (ct.ident + '' === ident + '') {
        res = ct;
        return true;
      }
      visitArr(ct.children);
    });
  }
  visitArr(rootController.children);
  return res;
};
TOCList.prototype.makeNodeController = function (nodeData) {
  return new TOCNodeController(this, nodeData, null);
};

/**
 *
 * @param query
 * @private
 * @returns {TOCVirtualRootController}
 */
TOCList.prototype._calcSearch = function (query) {
  var searchRootController = this.searchCache[query];
  if (searchRootController) return searchRootController;
  var itemTree = this.searchCache.__itemTree__;
  if (!itemTree) {
    itemTree = this.nodes.map(function visit(node) {
      var item = (0, _search["default"])({
        text: node.name,
        value: Object.assign({}, node)
      });
      if (node.children && node.children.length > 0) {
        item.items = node.children.map(visit);
      }
      return item;
    });
    this.searchCache.__itemTree__ = itemTree;
  }
  var resultItemTree = (0, _search.searchTreeListByText)(query, itemTree);
  var resultNodes = resultItemTree.map(function visit2(item) {
    var node = Object.assign({}, item.value);
    delete node.children;
    if (item.items && item.items.length > 0) {
      node.children = item.items.map(visit2);
    }
    return node;
  });
  this.searchCache[query] = new TOCVirtualRootController(this, resultNodes);
  return this.searchCache[query];
};
TOCList.prototype.search = function (query) {
  query = query || '';
  query = query.trim().replace('\s(\s+)', ' ');
  var searchRoot = this._calcSearch(query);
  var activeNodeCt;
  if (query.length === 0) {
    this.removeClass('as-searching');
    this.$searching.clearChild();
  } else {
    this.addClass('as-searching');
    this.$searching.clearChild();
    searchRoot.openRecursive();
    activeNodeCt = this.findControllerByIdent(this.savedState.active, searchRoot);
    if (activeNodeCt) activeNodeCt.active();
    searchRoot.view = this.$searching;
  }
};
TOCList.property = {};
TOCList.property.nodes = {
  /***
   * @this TOCList
   * @param nodes
   */
  set: function set(nodes) {
    this.searchCache = {};
    nodes = nodes || [];
    this.rootController = new TOCVirtualRootController(this, nodes);
    this.rootController.view = this.$body;
    this.applySavedState();
  },
  get: function get() {
    return this.rootController.nodes;
  }
};
TOCList.property.searchInput = {
  /***
   * @this TOCList
   */
  set: function set(elt) {
    if (this.$searchInput) {
      this.$searchInput.off('stoptyping', this.eventHandler.searchTextInputModify);
    }
    this.$searchInput = elt;
    if (this.$searchInput) {
      this.$searchInput.on('stoptyping', this.eventHandler.searchTextInputModify);
    }
  },
  /***
   * @this TOCList
   */
  get: function get() {
    return this.$searchInput;
  }
};

/***
 * @memberOf TOCList#
 * @type {{}}
 */
TOCList.eventHandler = {};
TOCList.eventHandler.pressNode = function (nodeController, event) {
  var newEvent = (0, _EventEmitter.copyEvent)(event.originalEvent || event, {
    type: 'pressnode',
    target: this,
    originalEvent: event.originalEvent || event,
    controller: nodeController,
    nodeData: nodeController.nodeElt.nodeData,
    nodeElt: nodeController.nodeElt
  });
  this.emit('pressnode', newEvent, this);
};
TOCList.eventHandler.checkedNodeChange = function (nodeController, event) {
  var newEvent = {
    type: 'checkednodechange',
    target: this,
    originalEvent: event.originalEvent || event,
    controller: nodeController,
    nodeData: nodeController.nodeElt.nodeData,
    nodeElt: nodeController.nodeElt
  };
  this.emit('checkednodechange', newEvent, this);
};
TOCList.eventHandler.pressNodeQuickMenu = function (nodeController, event) {
  var newEvent = {
    type: 'pressnodequickmmenu',
    target: this,
    originalEvent: event.originalEvent || event,
    controller: nodeController,
    nodeData: nodeController.nodeElt.nodeData,
    nodeElt: nodeController.nodeElt
  };
  newEvent.showMenu = function (menuProps, onSelect) {
    var token = _QuickMenu["default"].show(nodeController.nodeElt.$quickMenuBtn, menuProps, [3, 4], onSelect, false);
    var blurTrigger = new _BlurTrigger["default"]([], 'click', function () {
      _QuickMenu["default"].close(token);
    }, 10, 30);
  };
  this.emit('pressnodequickmmenu', newEvent, this);
};

/***
 * @this TOCList
 */
TOCList.eventHandler.searchTextInputModify = function () {
  this.search(this.$searchInput.value);
};
_ACore["default"].install(TOCList);

/***
 *
 * @param {TOCList} listElt
 * @param {{}[]} nodes
 * @constructor
 */
function TOCVirtualRootController(listElt, nodes) {
  Object.defineProperties(this, {
    root: {
      value: this
    }
  });
  this.listElt = listElt;
  this.level = -1;
  this.nodes = nodes;
  /***
   *
   * @type {TOCNodeController[]}
   */
  this.children = nodes.map(function (nodeData) {
    return new TOCNodeController(listElt, nodeData, this);
  }.bind(this));
  this._view = null;
  /****
   * @type {AElement}
   * @name view
   * @memberOf TOCVirtualRootController#
   */
}

TOCVirtualRootController.prototype.deactivateRecursive = function () {
  this.children.forEach(function (ct) {});
};
TOCVirtualRootController.prototype.openRecursive = function (n) {
  this.children.forEach(function (ct) {
    ct.openRecursive(n);
  });
};
TOCVirtualRootController.prototype.closeRecursive = function () {
  this.children.forEach(function (ct) {
    ct.closeRecursive();
  });
};
TOCVirtualRootController.prototype.getViewElements = function () {
  var ac = [];
  this.children.forEach(function (ct) {
    ct.getViewElements(ac);
  });
  return ac;
};
TOCVirtualRootController.prototype.indexOfChild = function (child) {
  for (var i = 0; i < this.children.length; ++i) {
    if (child === this.children[i] || this.children[i].ident === child) return i;
  }
  return -1;
};

/***
 *
 * @param {TOCNodeController} controller
 * @param {TOCNodeController} at
 * @returns {TOCVirtualRootController}
 */
TOCVirtualRootController.prototype.addChildBefore = function (controller, at) {
  var atIdx;
  if (at) {
    atIdx = this.indexOfChild(at);
    if (atIdx >= 0) {
      if (controller.parent) controller.remove();
      this.children.splice(atIdx, 0, controller);
      controller.__parent__ = this;
      if (at.nodeElt.parentElement) {
        (0, _utils.addElementsBefore)(at.nodeElt.parentElement, controller.getViewElements(), at.nodeElt);
      }
      this.updateStatus();
    } else {
      throw new Error("The node before which the new node is to be inserted is not a child of this node.");
    }
  } else {
    if (controller.parent) controller.remove();
    this.children.push(controller);
    if (this.view) this.addChild(controller.getViewElements());
    this.updateStatus();
  }
  controller.setLevelRecursive(this.level + 1);
  return this;
};
TOCVirtualRootController.prototype.addChild = function (controller) {
  this.addChildBefore(controller, null);
  return this;
};

/***
 *
 * @param {TOCNodeController} controller
 * @param at
 */
TOCVirtualRootController.prototype.addChildAfter = function (controller, at) {
  var atIdx;
  var lastElement;
  if (at) {
    atIdx = this.indexOfChild(at);
    if (atIdx === this.children.length) {
      if (controller.parent) controller.remove();
      controller.__parent__ = this;
      this.children.push(controller);
      if (this.view) this.view.addChild(controller.getViewElements());
    } else if (atIdx >= 0) {
      if (controller.parent) controller.remove();
      controller.__parent__ = this;
      this.children.splice(atIdx, 0, controller);
      if (at.nodeElt.parentElement) {
        lastElement = at.getViewElements().pop();
        (0, _utils.addElementAfter)(at.nodeElt.parentElement, controller.getViewElements(), lastElement);
      }
    } else {
      throw new Error("The node before which the new node is to be inserted is not a child of this node.");
    }
  } else {
    if (controller.parent) controller.remove();
    controller.__parent__ = this;
    this.children.unshift(controller);
    (0, _utils.addElementAfter)(this.view, controller.getViewElements(), this.view.firstChild);
  }
  return this;
};
TOCVirtualRootController.prototype.updateStatus = _noop["default"];

/***
 * @param {TOCNodeController} child
 * @returns {TOCVirtualRootController|TOCNodeController}
 */
TOCVirtualRootController.prototype.removeChild = function (child) {
  var idx = this.children.indexOf(child);
  if (idx >= 0) {
    this.children.splice(idx, 1);
    child.getViewElements().forEach(function (elt) {
      elt.remove();
    });
    this.updateStatus();
  }
  return this;
};

/***
 *
 * @param {function(nodeCt:TOCNodeController):(void|boolean)} callback return true to stop
 */
TOCVirtualRootController.prototype.traverse = function (callback) {
  this.children.some(function visit(ct) {
    return callback(ct) || ct.children.some(visit);
  });
};
Object.defineProperties(TOCVirtualRootController.prototype, {
  firstChild: {
    get: function get() {
      return this.children[0] || null;
    }
  },
  lastChild: {
    get: function get() {
      return this.children[this.children.length - 1] || null;
    }
  },
  view: {
    /***
     * @this TOCVirtualRootController
     * @param view
     */
    set: function set(view) {
      view = view || null;
      if (view === this._view) return;
      if (this._view) {
        this._view.clearChild();
        this._view.rootController = null;
        this._view = null;
      }
      if (view) {
        if (view.rootController) {
          view.rootController.view = null;
        }
        view.rootController = this;
        this._view = view;
        this._view.addChild(this.getViewElements());
      }
    },
    get: function get() {
      return this._view;
    }
  }
});

/***
 *
 * @param {TOCList} listElt
 * @param {{}} nodeData
 * @param {TOCNodeController|TOCVirtualRootController} parent
 * @constructor
 */
function TOCNodeController(listElt, nodeData, parent) {
  Object.defineProperties(this, {
    listElt: {
      value: listElt
    },
    __parent__: {
      value: parent,
      enumerable: false,
      writable: true
    }
  });
  this.level = parent ? parent.level + 1 : 0;
  /***
   * @type {TOCItem}
   */
  this.nodeElt = (0, _ACore._)({
    tag: _TOCItem["default"].tag,
    props: {
      nodeData: nodeData,
      checked: !!nodeData.checked,
      name: nodeData.name,
      icon: nodeData.icon,
      level: this.level,
      controller: this,
      status: 'none',
      extendClasses: nodeData.extendClasses
    },
    on: {
      presstoggle: this.toggle.bind(this),
      press: this.ev_press.bind(this),
      checkedchange: this.ev_checkedChange.bind(this),
      pressquickmenu: this.ev_pressQuickMenu.bind(this)
    }
  });
  if (nodeData.hasQuickMenu === false) this.nodeElt.hasQuickMenu = false;
  this.nodeElt.on('presstoggle', this.listElt.saveState.bind(this.listElt));
  /***
   * @name children
   * @type {TOCNodeController[]}
   * @memberOf TOCNodeController#
   */
  if (nodeData.children && nodeData.children.length > 0) {
    this.nodeElt.status = 'close';
    this.children = nodeData.children.map(function (c) {
      return new TOCNodeController(listElt, c, this);
    }.bind(this));
  } else {
    this.children = [];
  }
}
TOCNodeController.prototype.indexOfChild = TOCVirtualRootController.prototype.indexOfChild;
TOCNodeController.prototype.traverse = TOCVirtualRootController.prototype.traverse;
TOCNodeController.prototype.updateStatus = function () {
  if (this.children.length === 0 && this.nodeElt.status !== 'none') {
    this.nodeElt.status = 'none';
  } else if (this.children.length > 0 && this.nodeElt.status === 'none') {
    this.nodeElt.status = 'close';
  }
};
TOCNodeController.prototype.deactivateRecursive = function () {
  this.nodeElt.removeClass('as-active');
  this.children.forEach(function (ct) {
    ct.deactivateRecursive();
  });
};
TOCNodeController.prototype.removeChild = TOCVirtualRootController.prototype.removeChild;
TOCNodeController.prototype.remove = function () {
  this.parent.removeChild(this);
};

/***
 *
 * @param {TOCNodeController} controller
 * @param {TOCNodeController} at
 * @returns {TOCNodeController}
 */
TOCNodeController.prototype.addChildBefore = function (controller, at) {
  var atIdx;
  if (at) {
    atIdx = this.indexOfChild(at);
    if (atIdx >= 0) {
      if (controller.parent) controller.remove();
      this.children.splice(atIdx, 0, controller);
      controller.__parent__ = this;
      if (this.status === 'open') {
        (0, _utils.addElementsBefore)(this.nodeElt.parentElement, controller.getViewElements(), at.nodeElt);
      }
      controller.setLevelRecursive(this.level + 1);
      this.updateStatus();
    } else {
      throw new Error("The node before which the new node is to be inserted is not a child of this node.");
    }
  } else {
    if (controller.parent) controller.remove();
    this.children.push(controller);
    this.updateStatus();
    if (this.status === "open") {
      (0, _utils.addElementsBefore)(this.nodeElt.parentElement, controller.getViewElements(), at.nodeElt);
    }
  }
  return this;
};
TOCNodeController.prototype.addChild = TOCVirtualRootController.prototype.addChild;
TOCNodeController.prototype.addChildAfter = function (controller, at) {
  throw new Error("Not implement!");
};
TOCNodeController.prototype.toggle = function () {
  if (this.status === 'close') this.open();else if (this.status === 'open') this.close();
};
TOCNodeController.prototype.open = function () {
  if (this.status !== 'close') return;
  this.nodeElt.status = 'open';
  var pE = this.nodeElt.parentElement;
  if (!pE) return;
  var veArr = this.getViewElements();
  veArr.shift();
  var at = pE.findChildAfter(this.nodeElt);
  if (at) {
    while (veArr.length > 0) {
      pE.addChildBefore(veArr.shift(), at);
    }
  } else {
    pE.addChild(veArr);
  }
};
TOCNodeController.prototype.close = function () {
  if (this.status !== 'open') return;
  var veArr = this.getViewElements();
  veArr.shift();
  while (veArr.length > 0) {
    veArr.pop().remove();
  }
  this.nodeElt.status = 'close';
};
TOCNodeController.prototype.getViewElements = function (ac) {
  if (ac === undefined) ac = [];
  ac.push(this.nodeElt);
  if (this.status === 'open' && this.children.length > 0) {
    this.children.forEach(function (ct) {
      ct.getViewElements(ac);
    });
  }
  return ac;
};
TOCNodeController.prototype.setLevelRecursive = function (value) {
  this.level = value;
  this.nodeElt.level = value;
  this.children.forEach(function (ct) {
    ct.setLevelRecursive(value + 1);
  });
};

/**
 *
 * @param {number=} level
 */
TOCNodeController.prototype.openRecursive = function (level) {
  if (typeof level === "number" && this.level >= level) return;
  if (this.status === 'close') {
    this.open();
  }
  this.children.forEach(function (ct) {
    ct.openRecursive(level);
  });
};
TOCNodeController.prototype.ev_press = function (event) {
  this.listElt.eventHandler.pressNode(this, event);
};
TOCNodeController.prototype.ev_checkedChange = function (event) {
  this.nodeElt.nodeData.checked = this.nodeElt.checked;
  this.listElt.eventHandler.checkedNodeChange(this, event);
};
TOCNodeController.prototype.ev_pressQuickMenu = function (event) {
  this.listElt.eventHandler.pressNodeQuickMenu(this, event);
};
TOCNodeController.prototype.ev_renameFinish = function (event) {};
TOCNodeController.prototype.closeRecursive = function () {
  if (this.status === 'open') {
    this.close();
  }
  this.children.forEach(function (ct) {
    ct.closeRecursive();
  });
};
TOCNodeController.prototype.rename = function () {};

/***
 *
 * @param {boolean=true} isActive default: true
 * @param {boolean=false} append default: false
 */
TOCNodeController.prototype.active = function (isActive, append) {
  var self = this;
  if (arguments.length === 0) isActive = true;
  append = !!append;
  var idx = this.listElt.savedState.active ? this.listElt.savedState.active.indexOf(this.ident) : -1;
  if (isActive) {
    this.root.traverse(function (ct) {
      if (ct === self) {
        ct.nodeElt.addClass('as-active');
      } else if (!append) ct.nodeElt.removeClass('as-active');
    });
    if (idx < 0) {
      this.listElt.savedState.active = this.listElt.savedState.active || [];
      if (append) {
        this.listElt.savedState.active.push(this.ident);
      } else {
        this.listElt.savedState.active = [this.ident];
      }
      this.listElt.notifySavedStateChange();
    }
  } else {
    if (idx >= 0) {
      if (append) {
        this.listElt.savedState.active.splice(idx, 1);
        this.nodeElt.removeClass('as-active');
      } else {
        this.listElt.savedState.active = [];
        this.root.traverse(function (ct) {
          ct.nodeElt.removeClass('as-active');
        });
      }
    }
  }
};
Object.defineProperties(TOCNodeController.prototype, {
  /***
   * @memberOf TOCNodeController#
   * @name status
   * @type {"open"|"close"|"none"}
   */
  status: {
    get: function get() {
      return this.nodeElt.status;
    },
    set: function set(value) {
      if (value === 'open' && this.nodeElt.status === 'close') this.open();else if (value === 'close' && this.nodeElt.status === 'open') this.close();
    }
  },
  root: {
    get: function get() {
      return this.parent ? this.parent.root : this;
    }
  },
  checked: {
    get: function get() {
      return !!this.nodeElt.nodeData.checked;
    },
    set: function set(value) {
      this.nodeElt.checked = !!value;
      this.nodeElt.nodeData.checked = !!value;
    }
  },
  name: {
    set: function set(value) {
      value = value || '';
      this.nodeElt.name = value;
      this.nodeElt.nodeData.name = value;
    },
    get: function get() {
      return this.nodeElt.nodeData.name;
    }
  },
  ident: {
    get: function get() {
      return this.nodeElt.nodeData.ident;
    },
    set: function set(value) {
      this.nodeElt.nodeData.ident = value;
    }
  },
  nodeData: {
    get: function get() {
      return this.nodeElt.nodeData;
    },
    set: function set(value) {
      this.nodeElt.nodeData = value;
    }
  },
  parent: {
    get: function get() {
      return this.__parent__;
    }
  },
  firstChild: {
    get: function get() {
      return this.children[0] || null;
    }
  },
  lastChild: {
    get: function get() {
      return this.children[this.children.length - 1] || null;
    }
  },
  activated: {
    get: function get() {
      return this.nodeElt.hasClass('as-active');
    }
  }
});
var _default = TOCList;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(35255);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _TabButton = _interopRequireDefault(__webpack_require__(5602));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends HScroller
 * @constructor
 */
function TabBar() {
  this.$parent = null;
  this.$addBtn = _({
    tag: 'button',
    "class": 'as-tab-bar-add-btn',
    child: 'span.mdi.mdi-plus',
    on: {
      click: function () {
        if (this.$parent) {
          this.$parent.emit('pressaddtab', {
            type: 'pressaddtab',
            target: this.$parent
          }, this.$parent);
        }
      }.bind(this)
    }
  });
  this.addChild(this.$addBtn);
  this.defineEvent(['active', 'close']);
  this.on('wheel', function (event) {
    var lastLeft = this.$viewport.scrollLeft;
    if (event.deltaY > 1) {
      this.$viewport.scrollLeft += 50;
    } else if (event.deltaY < -1) {
      this.$viewport.scrollLeft -= 50;
    }
    if (lastLeft != this.$viewport.scrollLeft) event.preventDefault();
  });
  this._tabs = [];
}
TabBar.tag = 'tabbar';
TabBar.render = function () {
  return _('hscroller.absol-tabbar');
};
TabBar.prototype.getAllTabButtons = function () {
  var buttons = [];
  $('tabbutton', this, function (e) {
    buttons.push(e);
  });
  return buttons;
};

/***
 *
 * @param {string} ident
 * @return {TabButton}
 */
TabBar.prototype.getButtonByIdent = function (ident) {
  return $('tabbutton#tabbuton-' + ident, this);
};
TabBar.property = {};
TabBar.property.tabs = {
  set: function set(value) {
    this.clearChild();
    this._tabs = [];
    (value || []).forEach(this.addTab.bind(this));
  },
  get: function get() {
    //each hold item data
    return this._tabs || [];
  }
};

/***
 *
 * @param {{text}}
 * @return {tabbar}
 */
TabBar.prototype.addTab = function (value) {
  var self = this;
  var props = {};
  if (typeof value == "string") {
    props.name = value;
  } else {
    if (value.name) {
      props.name = value.name;
    } else {
      throw new Error('Tab must has name attribute');
    }
    if (value.desc) props.desc = value.desc;
    if (value.tabIcon) {
      props.icon = value.tabIcon;
    }
    if (value.preventClosing) {
      props.preventClosing = value.preventClosing;
    }
  }
  var tabButton = _({
    tag: 'tabbutton',
    props: props,
    on: {
      active: function active(event, sender) {
        var prevented = false;
        self.emit('active', {
          target: this,
          value: value,
          preventDefault: function preventDefault() {
            prevented = true;
          }
        }, self);
        if (!prevented) {
          self.getAllTabButtons().forEach(function (e) {
            e.active = false;
          });
          this.active = true;
        }
      },
      close: function close(event, sender) {
        var prevented = false;
        self.emit('close', {
          target: this,
          value: value,
          preventDefault: function preventDefault() {
            prevented = true;
          }
        }, self);
        if (!prevented) {
          //todo:active other
          this.remove();
        }
      }
    }
  });
  this.addChildBefore(tabButton, this.$addBtn);
  if (value.id) tabButton.attr('id', 'tabbuton-' + value.id);
  this._tabs.push(tabButton);
  this.requestUpdateSize();
  return tabButton;
};
TabBar.prototype.removeTab = function (id) {
  this._tabs = this._tabs.filter(function (value) {
    return value == id;
  });
  $('#tabbuton-' + id, this).remove();
  this.requestUpdateSize();
};
TabBar.prototype.activeTab = function (id) {
  var self = this;
  var activedbtn = $('.absol-tabbar-button-active', this);
  if (activedbtn && activedbtn.attr('id') != id) {
    activedbtn.active = false;
  }
  var mButton = $('#tabbuton-' + id, this);
  if (mButton) {
    mButton.active = true;
    setTimeout(function () {
      self.scrollInto(mButton);
    }, 30);
  }
};
TabBar.prototype.setModified = function (ident, flag) {
  var bt = this.getButtonByIdent(ident);
  if (bt) {
    bt.modified = flag;
  }
};
_ACore["default"].install(TabBar);
var _default = TabBar;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(35255);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _stringGenerate = __webpack_require__(10713);
var _Dom = _interopRequireDefault(__webpack_require__(64821));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function TabButton() {
  var thisTB = this;
  this._icon = null;
  this.$extIconCtn = $('.as-tab-bar-button-ext-icon-ctn', this);
  this.$close = $('.absol-tabbar-button-close', this);
  this.$iconCtn = $('.absol-tabbar-button-icon-container', this).on('click', function (event) {
    event.tabButtonEventName = 'delete';
    thisTB.emit('close', event);
  });
  this.$modifiedFlag = $('.absol-tabbar-button-modified-flag', this).on('click', function (event) {
    event.tabButtonEventName = 'delete';
    thisTB.emit('close', event);
  });
  this.$textView = $('.absol-tabbar-button-text', this);
  this.on({
    click: function click(event) {
      if (event.tabButtonEventName) return;
      event.tabButtonEventName = 'active';
      thisTB.emit('active', event);
    }
  });
}
TabButton.tag = 'TabButton'.toLowerCase();
TabButton.render = function () {
  return _({
    tag: 'button',
    "class": 'absol-tabbar-button',
    extendEvent: ['close', 'active'],
    id: (0, _stringGenerate.randomIdent)(20),
    child: [{
      "class": 'as-tab-bar-button-ext-icon-ctn'
    }, {
      "class": 'absol-tabbar-button-text'
    }, {
      "class": 'absol-tabbar-button-icon-container',
      child: [{
        tag: 'span',
        "class": ['absol-tabbar-button-close', 'mdi-close', 'mdi'],
        attr: {
          title: 'Close'
        }
      }, {
        tag: 'span',
        "class": ['absol-tabbar-button-close-circle', 'mdi-close-circle', 'mdi'],
        attr: {
          title: 'Close'
        }
      }, {
        tag: 'span',
        "class": ['absol-tabbar-button-modified-flag', 'mdi', 'mdi-checkbox-blank-circle']
      }]
    }]
  });
};
TabButton.property = {};
TabButton.property.active = {
  set: function set(value) {
    this._active = value;
    if (value) this.addClass('absol-tabbar-button-active');else this.removeClass('absol-tabbar-button-active');
  },
  get: function get() {
    return this._active;
  }
};
TabButton.property.name = {
  set: function set(value) {
    this._name = value || '';
    this.$textView.innerHTML = this._name;
  },
  get: function get() {
    return this._name;
  }
};
TabButton.property.desc = {
  set: function set(value) {
    this.attr('title', value);
  },
  get: function get() {
    return this.attr('title');
  }
};
TabButton.property.icon = {
  set: function set(value) {
    value = value || null;
    this._icon = value;
    this.$extIconCtn.clearChild();
    if (this._icon) {
      this.$extIconCtn.addChild(_(value));
    }
  },
  get: function get() {
    return this._icon;
  }
};
TabButton.property.modified = {
  set: function set(value) {
    if (value) {
      this.addClass('absol-tabbar-button-modified');
    } else {
      this.removeClass('absol-tabbar-button-modified');
    }
  },
  get: function get() {
    return this.hasClass('absol-tabbar-button-modified');
  }
};
TabButton.property.preventClosing = {
  set: function set(value) {
    if (value) {
      this.addClass('as-prevent-closing');
    } else {
      this.removeClass('as-prevent-closing');
    }
  },
  get: function get() {
    return this.hasClass('as-prevent-closing');
  }
};
_ACore["default"].install(TabButton);
var _default = TabButton;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _utils = __webpack_require__(84512);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var $ = _ACore["default"].$;
var _ = _ACore["default"]._;

/**
 * @extends {AElement}
 * @constructor
 */
function TabFrame() {
  this.on('remove', this._onRemove);
}
TabFrame.tag = 'tabframe';
TabFrame.render = function () {
  return _({
    tag: 'frame',
    "class": 'absol-tab-frame',
    extendEvent: ['requestremove', 'remove']
  }, true);
};
TabFrame.property = {};
TabFrame.property.name = {
  set: function set(value) {
    if (typeof name == "undefined") {
      this._name = undefined;
    } else {
      this._name = value + '';
    }
    if (this.$parent) {
      if (this.$parent.notifyUpdateName) this.$parent.notifyUpdateName(this);
    }
  },
  get: function get() {
    return this._name;
  }
};
TabFrame.property.modified = {
  set: function set(value) {
    this._modified = !!value;
    if (this.$parent) {
      if (this.$parent.notifyUpdateModified) this.$parent.notifyUpdateModified(this);
    }
  },
  get: function get() {
    return !!this._modified;
  }
};
TabFrame.property.desc = {
  set: function set(value) {
    if (typeof value == "undefined") {
      this._desc = undefined;
    } else {
      this._desc = value + '';
    }
    if (this.$parent) {
      if (this.$parent.notifyUpdateDesc) this.$parent.notifyUpdateDesc(this);
    }
  },
  get: function get() {
    return this._desc;
  }
};
TabFrame.property.preventClosing = {
  set: function set(value) {
    if (value) {
      this.addClass('as-prevent-closing');
    } else {
      this.removeClass('as-prevent-closing');
    }
    if (this.$parent && this.$parent.notifyUpdatePreventClosing) {
      this.$parent.notifyUpdatePreventClosing(this);
    }
  },
  get: function get() {
    return this.hasClass('as-prevent-closing');
  }
};
TabFrame.attribute = {};
TabFrame.attribute.name = {
  set: function set(value) {
    this.name = value;
  },
  get: function get() {
    return this.name;
  },
  remove: function remove() {
    this.name = undefined;
  }
};
TabFrame.attribute.desc = {
  set: function set(value) {
    this.desc = value;
  },
  get: function get() {
    return this.desc;
  },
  remove: function remove() {
    this.desc = undefined;
  }
};
TabFrame.attribute.modified = {
  set: function set(value) {
    this.modified = value == 'true' || value == '1' || value === true;
  },
  get: function get() {
    return this.modified ? 'true' : undefined;
  },
  remove: function remove() {
    this.desc = false;
  }
};
TabFrame.prototype.requestRemove = function () {
  if (this.$parent && this.$parent.removeTab) {
    this.$parent.removeTab(this.id, false);
  } else {
    this.selfRemove();
  }
};
TabFrame.prototype._onRemove = function () {
  var _this = this;
  setTimeout(function () {
    if (!_this.isDescendantOf(document.body)) {
      _this.revokeResource();
    }
  }, 100);
};
TabFrame.prototype.revokeResource = function () {
  this.off('remove', this._onRemove);
  while (this.lastChild && false) {
    if (location.href.indexOf('localhost') >= 0 || location.href.indexOf('lab.') >= 0)
      //for testing
      (0, _utils.revokeResource)(this.lastChild);
    this.lastChild.remove();
  }
};
_ACore["default"].install(TabFrame);
var _default = TabFrame;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(35255);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _TabBar = _interopRequireDefault(__webpack_require__(52911));
var _utils = __webpack_require__(84512);
var _TextMeasure = _interopRequireDefault(__webpack_require__(60268));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function TabView() {
  var thisTV = this;
  /***
   *
   * @type {TabBar}
   */
  this.$tabbar = $('tabbar', this);
  this.$tabbar.$parent = this;
  this.$tabbar.on({
    close: TabView.eventHandler.closeTab.bind(thisTV),
    active: TabView.eventHandler.activeTab.bind(thisTV)
  });
  this._title = '';
  this._frameHolders = [];
  this._history = [];
  (0, _utils.forwardEvent)(this, 'inactivetab', 'deactivetab');
}
TabView.tag = 'TabView'.toLowerCase();
TabView.render = function () {
  return _({
    "class": 'absol-tabview',
    extendEvent: ['activetab', 'inactivetab', 'removetab', 'requestremovetab', 'pressaddtab'],
    child: ['tabbar']
  });
};
TabView.eventHandler = {};
TabView.eventHandler.closeTab = function (event) {
  event.preventDefault();
  var id = event.value.id;
  this.removeTab(id, true);
};
TabView.eventHandler.activeTab = function (event) {
  event.preventDefault();
  var id = event.value.id;
  this.activeTab(id, true);
};
TabView.prototype.activeTab = function (id, userActive) {
  var self = this;
  var resPromise = [];
  var needDeactivatedHolder = [];
  var needActiveHolder = [];
  this._frameHolders.forEach(function (holder) {
    if (holder.containerElt.hasClass('absol-tabview-container-hidden')) {
      if (holder.id + '' === id + '') {
        needActiveHolder.push(holder);
      }
    } else {
      if (holder.id + '' !== id + '') {
        needDeactivatedHolder.push(holder);
      }
    }
  });
  needDeactivatedHolder.forEach(function (holder) {
    holder.containerElt.addClass('absol-tabview-container-hidden');
    holder.tabFrame.emit('inactive', {
      type: 'inactive',
      target: holder.tabFrame,
      id: holder.id,
      userActive: !!userActive,
      tabButton: holder.tabButton,
      holder: holder
    }, holder.tabFrame);
  });
  needActiveHolder.forEach(function (holder) {
    self._history.push(holder.id);
    holder.containerElt.removeClass('absol-tabview-container-hidden');
    self.$tabbar.activeTab(holder.id);
    holder.tabFrame.emit('active', {
      type: 'active',
      target: holder.tabFrame,
      id: holder.id,
      userActive: !!userActive,
      tabButton: holder.tabButton,
      holder: holder
    }, holder.tabFrame);
    self.emit('activetab', {
      type: 'activetab',
      target: self,
      id: holder.id,
      userActive: !!userActive,
      tabButton: holder.tabButton,
      holder: holder,
      from: needDeactivatedHolder[0] && needDeactivatedHolder[0].tabFrame || null,
      to: holder.tabFrame
    }, self);
  });
};
TabView.prototype.removeTab = function (id, userActive) {
  var self = this;
  var resPromise = [];
  this._frameHolders.forEach(function (holder) {
    if (holder.id + '' === id + '') {
      var eventData = {
        type: 'requestremove',
        id: id,
        userActive: !!userActive,
        target: holder.tabFrame,
        tabFrame: holder.tabFrame,
        tabButton: holder.tabButton,
        holder: holder,
        __promise__: Promise.resolve(),
        waitFor: function waitFor(promise) {
          this.__promise__ = promise;
        }
      };
      holder.tabFrame.emit('requestremove', eventData, holder.tabFrame);
      eventData.type = 'requestremovetab';
      eventData.target = self;
      self.emit('requestremovetab', eventData, self);
      resPromise.push(eventData.__promise__.then(function () {
        //if ok
        var eventData2 = {
          type: 'inactive',
          target: holder.tabFrame,
          id: holder.id,
          userActive: !!userActive,
          tabButton: holder.tabButton,
          holder: holder
        };
        if (!holder.containerElt.hasClass('absol-tabview-container-hidden')) holder.tabFrame.emit('inactive', eventData2, holder.tabFrame);
        eventData2.type = 'inactivetab';
        eventData2.target = self;
        if (!holder.containerElt.hasClass('absol-tabview-container-hidden')) self.emit('inactivetab', eventData2, self);
        self._frameHolders = self._frameHolders.filter(function (x) {
          return x.id + '' !== id + '';
        });
        holder.tabFrame.notifyDetached();
        self.$tabbar.removeTab(holder.id);
        holder.containerElt.remove();
        eventData2.type = 'remove';
        eventData2.target = holder.tabFrame;
        holder.tabFrame.emit('remove', eventData2, holder.tabFrame);
        eventData2.type = 'removetab';
        eventData2.target = self;
        self.emit('removetab', eventData2, self);
        self.activeLastTab();
      }, function () {
        //if reject
      }));
    }
  });
  return Promise.all(resPromise);
};
TabView.prototype.notifyUpdateDesc = function (elt) {
  var holder = this.findHolder(elt);
  if (holder) {
    holder.tabButton.desc = elt.desc;
  }
};
TabView.prototype.notifyUpdateName = function (elt) {
  var holder = this.findHolder(elt);
  if (holder) {
    holder.tabButton.name = elt.name;
  }
};
TabView.prototype.notifyUpdateModified = function (elt) {
  var holder = this.findHolder(elt);
  if (holder) {
    holder.tabButton.modified = elt.modified;
  }
};
TabView.prototype.notifyUpdatePreventClosing = function (elt) {
  var holder = this.findHolder(elt);
  if (holder) {
    holder.tabButton.preventClosing = elt.preventClosing;
  }
};
TabView.prototype.findHolder = function (elt) {
  for (var i = 0; i < this._frameHolders.length; ++i) {
    var holder = this._frameHolders[i];
    if (holder.tabFrame === elt) {
      return holder;
    }
  }
};
TabView.prototype.addChild = function () {
  var self = this;
  Array.prototype.forEach.call(arguments, function (elt) {
    if (!elt.notifyAttached || !elt.notifyDetached) {
      throw new Error('element is not a tabframe');
    }
    var containerElt = _('.absol-tabview-container.absol-tabview-container-hidden');
    self.appendChild(containerElt); //origin function
    elt.selfRemove();
    var id = elt.attr('id');
    var desc = elt.attr('desc') || undefined;
    var name = elt.attr('name') || 'NoName';
    var tabIcon = elt.tabIcon;
    var modified = elt.modified;
    var preventClosing = elt.preventClosing;
    var tabButton = self.$tabbar.addTab({
      name: name,
      id: id,
      desc: desc,
      modified: modified,
      tabIcon: tabIcon,
      preventClosing: preventClosing
    });
    containerElt.addChild(elt);
    elt.notifyAttached(self);
    var holder = {};
    _OOP["default"].drillProperty(holder, elt, 'id');
    _OOP["default"].drillProperty(holder, elt, 'desc');
    _OOP["default"].drillProperty(holder, elt, 'name');
    _OOP["default"].drillProperty(holder, elt, 'preventClosing');
    Object.defineProperties(holder, {
      tabButton: {
        value: tabButton,
        writable: false
      },
      tabFrame: {
        value: elt,
        writable: false
      },
      containerElt: {
        value: containerElt,
        writable: false
      }
    });
    self._frameHolders.push(holder);
    self.activeTab(id);
  });
};
TabView.prototype.activeLastTab = function () {
  var dict = this._frameHolders.reduce(function (ac, holder) {
    ac[holder.id] = true;
    return ac;
  }, {});
  while (this._history.length > 0) {
    var id = this._history[this._history.length - 1];
    if (dict[id]) {
      this.activeTab(id);
      break;
    } else {
      this._history.pop();
    }
  }
};
TabView.prototype.getChildAt = function (index) {
  return this._frameHolders[index].tabFrame;
};
TabView.prototype.getAllChild = function () {
  return this._frameHolders.map(function (holder) {
    return holder.tabFrame;
  });
};
TabView.prototype.getActiveTabHolder = function () {
  var holder = null;
  for (var i = 0; i < this._frameHolders.length; ++i) {
    holder = this._frameHolders[i];
    if (!holder.containerElt.hasClass('absol-tabview-container-hidden')) {
      return holder;
    }
  }
  return null;
};
TabView.prototype.getActiveTab = function () {
  var holder = this.getActiveTabHolder();
  return holder && holder.tabFrame;
};
TabView.prototype.getActiveTabId = function () {
  var holder = this.getActiveTabHolder();
  return holder && holder.id;
};
TabView.prototype.getTabById = function (id) {
  var holder = this.getTabHolderById(id);
  return holder && holder.tabFrame;
};
TabView.prototype.getTabHolderById = function (id) {
  var holder = null;
  for (var i = 0; i < this._frameHolders.length; ++i) {
    holder = this._frameHolders[i];
    if (holder.id === id) {
      return holder;
    }
  }
  return null;
};
TabView.prototype.activeFrame = function (elt) {
  if (typeof elt == "string") {
    return this.activeTab(elt);
  } else if (elt && elt.attr) {
    return this.activeTab(elt.attr('id'));
  } else {
    throw new Error("Invalid param, must be id or elt!");
  }
};
TabView.property = {};
TabView.property.historyOfTab = {
  get: function get() {
    return this._history.slice();
  }
};
TabView.property.tvTitle = {
  set: function set(value) {
    this._title = value + '';
    var width;
    if (this._title.length > 0) {
      this.$tille = _({
        "class": 'as-tabview-title',
        child: {
          text: this._title
        }
      });
      width = _TextMeasure["default"].measureWidth(this._title, 'Arial', 14);
      this.$tabbar.addStyle('right', width + 10 + 'px');
      this.insertBefore(this.$tille, this.$tabbar.nextSibling);
    } else {
      if (this.$tille) this.$tille.remove();
      this.$tabbar.removeStyle('right');
    }
  },
  get: function get() {
    return this._title;
  }
};
_ACore["default"].install('tabview', TabView);
var _default = TabView;
exports["default"] = _default;
function TabViewUser() {}
TabViewUser.tag = 'TabViewUser'.toLowerCase();
TabViewUser.render = function () {};

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _PreInput = _interopRequireDefault(__webpack_require__(76606));
__webpack_require__(97823);
var _FontColorButton = _interopRequireDefault(__webpack_require__(14560));
var _Attributes = _interopRequireDefault(__webpack_require__(36447));
var _EventEmitter = __webpack_require__(46833);
var _utils = __webpack_require__(84512);
var _Color = _interopRequireDefault(__webpack_require__(64974));
var _Icons = __webpack_require__(39285);
var _keyboard = __webpack_require__(95141);
var _Snackbar = _interopRequireDefault(__webpack_require__(96206));
var _Dom = __webpack_require__(64821);
var _Text = __webpack_require__(35844);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _generator = __webpack_require__(18528);
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; }
/**
 * @typedef TEIDataRow
 * @property {TEIDataCell[]} cells
 */

/**
 * @typedef TEIData
 * @property {TEIDataRow[]} rows
 */

/**
 * @typedef TEIDataCell
 * @property {{color?:string, fontSize?: number, fontWeight?: ("bool"|"normal")}} [style]
 * @property {string} value
 */

/**
 * @extends AElement
 * @constructor
 */
function TableOfTextInput() {
  /**
   *
   * @type {TEITable}
   */
  this.teiTable = new TEITable(this);
  /**
   * @name data
   * @type {TEICell[]}
   */

  _OOP["default"].drillProperty(this, this.teiTable, ['minCol', 'maxCol', 'data', 'excelRichTextRows']);
}

/**
 *
 * @param name
 * @param value
 * @returns  {this}
 */
TableOfTextInput.prototype.addStyle = function (name, value) {
  if (name === 'display') {
    if (typeof value === "string" && value.indexOf('inline')) {
      this.addClass('as-inline');
    } else {
      this.removeClass('as-inline');
    }
    return this;
  } else return _AElement["default"].prototype.addStyle.apply(this, arguments);
};
TableOfTextInput.tag = 'TableOfTextInput'.toLowerCase();
TableOfTextInput.render = function () {
  return (0, _ACore._)({
    "class": 'as-table-of-text-input-wrapper',
    child: [{
      "class": 'as-table-of-text-input-content-ctn',
      child: {
        tag: 'table',
        extendEvent: ['change'],
        "class": 'as-table-of-text-input',
        child: [{
          tag: 'tbody',
          child: []
        }]
      }
    }]
  });
};
var _default = TableOfTextInput;
exports["default"] = _default;
_ACore["default"].install(TableOfTextInput);

/**
 *
 * @param {TableOfTextInput} wrapper
 * @constructor
 */
function TEITable(wrapper) {
  this._minCol = 3;
  this._maxCol = 3;
  this._minRow = 1;
  this._maxRow = 9;
  this.wrapper = wrapper;
  this.elt = (0, _ACore.$)('table', wrapper);
  this.$body = (0, _ACore.$)('tbody', this.elt);

  /**
   *
   * @type {TEIRow[]}
   */
  this.rows = [];
  this.formatTool = new TEIFormatTool(this);
}
TEITable.prototype.defaultData = {
  rows: [{
    cells: [{
      value: ''
    }, {
      value: ''
    }, {
      value: ''
    }]
  }]
};
TEITable.prototype.notifyChange = function (data) {
  this.elt.emit('change', Object.assign({
    type: 'change',
    target: this
  }, data), this.elt);
};
TEITable.prototype.calcCellPos = function () {
  var n = this.rows[0].cells.reduce(function (ac, cell) {
    return ac + cell.colspan;
  }, 0);
  var m = this.rows.length;
  var heights = Array(n).fill(0);
  var row, i, j, k;
  var cell, colspan, rowspan, colIdx;
  for (i = 0; i < m; ++i) {
    row = this.rows[i];
    colIdx = 0;
    for (j = 0; j < row.cells.length; ++j) {
      cell = row.cells[j];
      while (heights[colIdx] > i) {
        colIdx++;
      }
      colspan = cell.colspan;
      rowspan = cell.rowspan;
      cell.td.attr('data-col-idx', colIdx);
      for (k = 0; k < colspan; ++k) {
        heights[colIdx] = i + rowspan;
      }
    }
  }
};
Object.defineProperties(TEITable.prototype, {
  minCol: {
    /**
     * @this TableOfTextInput
     * @param value
     */
    set: function set(value) {
      if (!(0, _utils.isNaturalNumber)(value)) value = 1;
      value = Math.max(1, Math.floor(value));
      this._minCol = value;
    },
    get: function get() {
      return this._minCol;
    }
  },
  maxCol: {
    /**
     * @this TableOfTextInput
     * @param value
     */
    set: function set(value) {
      if (!(0, _utils.isNaturalNumber)(value)) value = 20;
      value = Math.min(20, Math.max(1, Math.floor(value)));
      this._maxCol = value;
    },
    get: function get() {
      return Math.max(this._minCol, this._maxCol);
    }
  },
  minRow: {
    /**
     * @this TableOfTextInput
     * @param value
     */
    set: function set(value) {
      if (!(0, _utils.isNaturalNumber)(value)) value = 1;
      value = Math.max(1, Math.floor(value));
      this._minRow = value;
    },
    get: function get() {
      return this._minRow;
    }
  },
  maxRow: {
    /**
     * @this TableOfTextInput
     * @param value
     */
    set: function set(value) {
      if (!(0, _utils.isNaturalNumber)(value)) value = 20;
      value = Math.min(20, Math.max(1, Math.floor(value)));
      this._maxRow = value;
    },
    get: function get() {
      return Math.max(this._minRow, this._maxRow);
    }
  },
  data: {
    set: function set(value) {
      var _this = this;
      if (typeof value === "string") {
        value = {
          rows: [{
            cells: [{
              value: value
            }]
          }]
        };
      }
      value = (0, _generator.copyJSVariable)(value || this.defaultData);
      if (!(value.rows instanceof Array)) value.rows = (0, _generator.copyJSVariable)(this.defaultData.rows);
      value.rows.forEach(function (row) {
        if (!(row.cells instanceof Array)) {
          row.cells = [];
        }
        if (row.cells.length === 0) {
          row.cells.push({
            value: ''
          });
        }
      });
      this.rows.forEach(function (row) {
        return row.tr.remove();
      });
      this.rows = value.rows.map(function (rowData) {
        return new TEIRow(_this, rowData);
      });
      this.$body.addChild(this.rows.map(function (row) {
        return row.tr;
      }));
      this.calcCellPos();
    },
    get: function get() {
      return {
        rows: this.rows.map(function (row) {
          return row.data;
        })
      };
    }
  },
  excelRichTextRows: {
    get: function get() {
      var cBound = this.elt.getBoundingClientRect();
      var placeHolderElt;
      var renderSpace;
      if (!cBound.width || !cBound.height) {
        if (this.parentElement) {
          placeHolderElt = (0, _ACore._)({
            style: {
              display: 'none'
            }
          });
          this.selfReplace(placeHolderElt);
        }
        renderSpace = (0, _ACore._)({
          style: {
            position: 'fixed',
            zIndex: -1000,
            visibility: 'hidden',
            opacity: 0
          }
        }).addTo(document.body);
      }
      var textNodes = (0, _Text.getTextNodesIn)(this.elt).filter(function (t) {
        return !!t.data;
      });
      var lineHeight = 25.662879943847656;
      cBound = this.elt.getBoundingClientRect();
      var y0 = cBound.top + 4 + 3.2348480224609375;
      var textInfos = textNodes.reduce(function (ac, txt) {
        var cell = cellOf(txt);
        var style = cell.style["export"]();
        var bounds = (0, _utils.getTextNodeBounds)(txt);
        bounds.forEach(function (bound) {
          var excelData = {
            text: bound.text.replace(/\n+$/, '')
          };
          if (excelData.text.trim().length === 0) return;
          excelData.font = {
            'name': 'Calibri'
          };
          if (style.color) {
            excelData.font.color = {
              argb: 'ff' + _Color["default"].parse(style.color).toString('hex6').substring(1).toLowerCase()
            };
          }
          if (style.fontWeight === 'bold') {
            excelData.font.bold = true;
          }
          if (style.fontStyle === 'italic') {
            excelData.font.italic = true;
          }
          if (style.fontSize) {
            excelData.font.size = style.fontSize;
          }
          ac.push({
            rowIdx: Math.round((bound.rect.y - y0) / lineHeight),
            bound: bound.rect,
            text: excelData.text,
            excelData: excelData
          });
        });
        return ac;
      }, []);
      textInfos.sort(function (a, b) {
        if (a.rowIdx === b.rowIdx) {
          return a.bound.x - b.bound.x;
        } else {
          return a.bound.y - b.bound.y;
        }
      });
      var richTextRows = textInfos.reduce(function (ac, cr, i) {
        var rowIdx = cr.rowIdx;
        while (ac.richTextRows.length <= rowIdx) {
          ac.x = ac.x0;
          ac.richTextRows.push([]);
        }
        var marginTextL = Math.floor((cr.bound.x - ac.x) / 3.314239501953125);
        if (marginTextL > 0) {
          ac.richTextRows[ac.richTextRows.length - 1].push({
            text: ' '.repeat(marginTextL),
            font: {
              'name': 'Calibri'
            }
          });
        }
        ac.richTextRows[ac.richTextRows.length - 1].push(cr.excelData);
        ac.x = cr.bound.x + cr.bound.width;
        ac.y = cr.bound.y;
        return ac;
      }, {
        richTextRows: [],
        x: cBound.left + 5,
        x0: cBound.left + 5
      }).richTextRows;
      if (placeHolderElt) {
        placeHolderElt.selfReplace(this);
      }
      if (renderSpace) renderSpace.remove();
      return richTextRows;
    }
  }
});

/**
 *
 * @param {TEITable} table
 * @param  data
 * @constructor
 */
function TEIRow(table, data) {
  data = data || {};
  if (!(data.cells instanceof Array)) data.cells = [];
  this.table = table;
  this.tr = (0, _ACore._)('tr');
  /**
   *
   * @type {TEICell[]}
   */
  this.cells = [];
  this.data = data;
}
Object.defineProperty(TEIRow.prototype, 'data', {
  set: function set(data) {
    var _this2 = this;
    this.cells = data.cells.map(function (cellData) {
      return new TEICell(_this2, cellData);
    });
    this.tr.clearChild().addChild(this.cells.map(function (cell) {
      return cell.td;
    }));
  },
  get: function get() {
    return {
      cells: this.cells.map(function (cell) {
        return cell.data;
      })
    };
  }
});
var cellOf = function cellOf(node) {
  while (node) {
    if (node.teiCell) return node.teiCell;
    node = node.parentElement;
  }
  return null;
};

/**
 *
 * @param {TEIRow} row
 * @param {TEIDataCell} data
 * @constructor
 */
function TEICell(row, data) {
  var _this3 = this;
  this.row = row;
  this.table = row.table;
  this.td = (0, _ACore._)({
    tag: 'td',
    "class": 'as-table-of-text-input-cell',
    on: {
      click: function click(event) {
        if (event.target === _this3.td) _this3.focus();
      }
    },
    child: {
      tag: _PreInput["default"],
      attr: {
        spellcheck: 'false'
      },
      props: {
        teiCell: this
      },
      on: {
        focus: function focus() {
          _this3.table.formatTool.onFocus(_this3);
        },
        blur: function blur() {
          _this3.table.formatTool.onBlur(_this3);
        },
        change: function change(event) {
          if (event.originalEvent) _this3.table.elt.emit('change', {
            type: 'change',
            target: _this3.table,
            cell: _this3
          }, _this3.table.elt);
        }
      }
    }
  });
  this.$input = (0, _ACore.$)('preinput', this.td);
  this.data = data;
  this.style = new _Attributes["default"](this);
  Object.assign(this.style, data.style);
  this.style.loadAttributeHandlers(this.styleHandlers);
}
TEICell.prototype.focus = function () {
  this.$input.focus();
  var textNode = (0, _Text.getTextNodesIn)(this.$input).pop();
  if (!textNode) return;
  var range = document.createRange();
  range.setStart(textNode, textNode.data.length);
  range.setEnd(textNode, textNode.data.length);
  var sel = getSelection();
  sel.removeAllRanges();
  sel.addRange(range);
};
TEICell.prototype.remove = function () {
  this.td.remove();
  var idx = this.table.cells.indexOf(this);
  if (idx >= 0) this.table.cells.splice(idx, 1);
};
TEICell.prototype.styleHandlers = {
  fontWeight: {
    set: function set(value) {
      if (value === 'bold') {
        this.td.addClass('as-bold');
      } else {
        this.td.removeClass('as-bold');
      }
    },
    get: function get() {
      if (this.td.hasClass('as-bold')) return 'bold';
      return 'normal';
    },
    "export": function _export() {
      if (this.td.hasClass('as-bold')) return 'bold';
      return undefined;
    }
  },
  fontStyle: {
    set: function set(value) {
      if (value === 'italic') {
        this.td.addClass('as-italic');
      } else {
        this.td.removeClass('as-italic');
      }
    },
    get: function get() {
      if (this.td.hasClass('as-italic')) return 'italic';
      return 'normal';
    },
    "export": function _export() {
      if (this.td.hasClass('as-italic')) return 'italic';
      return undefined;
    }
  },
  fontSize: {
    set: function set(value) {
      if (typeof value === "string") value = parseInt(value.replace(/[^0-9.]/g, ''), 10);
      if (!(0, _utils.isRealNumber)(value)) value = 11;
      value = Math.abs(value);
      value = value || 11;
      this.td.addStyle('font-size', value + 'pt');
      return value;
    },
    get: function get(ref) {
      var value = ref.get();
      return value || 11;
    },
    "export": function _export(ref) {
      var value = ref.get();
      if (value === 11) value = undefined;
      return value || undefined;
    }
  },
  color: {
    set: function set(value) {
      try {
        var cValue = _Color["default"].parse(value);
        value = cValue.toString('hex6');
      } catch (err) {
        value = '#000000';
      }
      this.td.addStyle('color', value);
      return value;
    },
    get: function get(ref) {
      return ref.get() || '#000000';
    },
    "export": function _export(ref) {
      var value = ref.get();
      if (value === '#000000') value = undefined;
      return value || undefined;
    }
  },
  textAlign: {
    set: function set(value) {
      if (!['left', 'right', 'center'].includes(value)) value = 'left';
      this.td.addStyle('text-align', value);
      return value;
    },
    get: function get(ref) {
      var value = ref.get();
      return value || 'left';
    },
    "export": function _export(ref) {
      var value = ref.get();
      if (value === 'left') value = undefined;
      return value;
    }
  }
};
Object.defineProperty(TEICell.prototype, "data", {
  set: function set(value) {
    value = value || {};
    if (typeof value === "string") value = {
      value: value
    };
    if (typeof value.value === "string") {
      this.$input.value = value.value;
    } else {
      this.$input.value = "";
    }
  },
  get: function get() {
    var res = {};
    res.value = this.$input.value;
    res.style = this.style["export"]();
    Object.keys(res.style).forEach(function (key) {
      if (res.style[key] === undefined) delete res.style[key];
    });
    return res;
  }
});
Object.defineProperties(TEICell.prototype, {
  colspan: {
    set: function set(value) {},
    get: function get() {
      var value = this.td.attr('colspan') || '1';
      value = parseInt(value);
      if ((0, _utils.isNaturalNumber)(value)) return value;
      return 1;
    }
  },
  rowspan: {
    set: function set(value) {},
    get: function get() {
      var value = this.td.attr('rowspan') || '1';
      value = parseInt(value);
      if ((0, _utils.isNaturalNumber)(value)) return value;
      return 1;
    }
  },
  colpos: {
    get: function get() {}
  },
  rowpos: {
    get: function get() {}
  }
});
function TEIFormatTool(table) {
  var _this4 = this;
  Object.keys(TEIFormatTool.prototype).filter(function (k) {
    return k.startsWith('ev_');
  }).forEach(function (k) {
    return _this4[k] = _this4[k].bind(_this4);
  });
  this.table = table;
  this.table.elt.on('keydown', this.ev_keydown);
  this.$tool = (0, _ACore._)({
    "class": 'as-table-of-text-input-tool',
    child: [{
      tag: 'numberinput',
      "class": 'as-table-of-text-input-tool-font-size',
      props: {
        value: 14
      },
      attr: {
        title: 'Ctrl+< | Ctrl+>'
      }
    }, {
      tag: 'button',
      attr: {
        title: 'Ctrl+B'
      },
      "class": ['as-transparent-button', 'as-table-of-text-input-tool-bold' /*, 'as-checked'*/],
      child: 'span.mdi.mdi-format-bold'
    }, {
      tag: 'button',
      attr: {
        title: 'Ctrl+I'
      },
      "class": ['as-transparent-button', 'as-table-of-text-input-tool-italic'],
      child: 'span.mdi.mdi-format-italic'
    }, {
      tag: _FontColorButton["default"]
    }, {
      tag: 'button',
      "class": ['as-transparent-button', 'as-table-of-text-input-tool-text-align'],
      child: 'span.mdi.mdi-format-align-left',
      attr: {
        'data-align': 'left',
        title: 'Ctrl+L'
      }
    }, {
      tag: 'button',
      "class": ['as-transparent-button', 'as-table-of-text-input-tool-text-align'],
      child: 'span.mdi.mdi-format-align-center',
      attr: {
        'data-align': 'center',
        title: 'Ctrl+E'
      }
    }, {
      tag: 'button',
      "class": ['as-transparent-button', 'as-table-of-text-input-tool-text-align'],
      child: 'span.mdi.mdi-format-align-right',
      attr: {
        'data-align': 'right',
        title: 'Ctrl+R'
      }
    }, {
      tag: 'button',
      "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
      child: 'span.mdi.mdi-table-column-plus-before',
      attr: {
        'data-command': 'left'
      }
    }, {
      tag: 'button',
      "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
      child: 'span.mdi.mdi-table-column-plus-after',
      attr: {
        'data-command': 'right'
      }
    }, {
      tag: 'button',
      "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
      child: 'span.mdi.mdi-table-row-plus-before',
      attr: {
        'data-command': 'above'
      }
    }, {
      tag: 'button',
      "class": ['as-transparent-button', 'as-table-of-text-input-tool-command'],
      child: 'span.mdi.mdi-table-row-plus-after',
      attr: {
        'data-command': 'bellow'
      }
    }, {
      tag: 'button',
      "class": ['as-transparent-button', 'as-table-of-text-input-tool-command', 'as-variant-danger'],
      attr: {
        'data-command': 'removeCol'
      },
      child: {
        tag: 'span',
        "class": ['mdi', 'mdi-table-column-remove']
      }
    }, {
      tag: 'button',
      "class": ['as-transparent-button', 'as-table-of-text-input-tool-command', 'as-variant-danger'],
      attr: {
        'data-command': 'removeRow'
      },
      child: {
        tag: 'span',
        "class": ['mdi', 'mdi-table-row-remove']
      }
    }]
  });
  this.table.wrapper.addChildBefore(this.$tool, this.table.wrapper.firstChild);
  this.$fontSize = (0, _ACore.$)('.as-table-of-text-input-tool-font-size', this.$tool).on('change', this.ev_fontSizeChange);
  this.$bold = (0, _ACore.$)('.as-table-of-text-input-tool-bold', this.$tool).on('click', this.ev_clickBold);
  this.$italic = (0, _ACore.$)('.as-table-of-text-input-tool-italic', this.$tool).on('click', this.ev_clickItalic);
  this.$fontColor = (0, _ACore.$)(_FontColorButton["default"].tag, this.$tool).on('submit', this.ev_fontColorSubmit);
  this.$alignBtns = (0, _ACore.$$)('.as-table-of-text-input-tool-text-align', this.$tool).reduce(function (ac, btn) {
    var value = btn.attr('data-align');
    btn.on('click', function (ev) {
      _this4.ev_clickAlign(value, ev);
    });
    ac[value] = btn;
    return ac;
  }, {});
  this.$commandBtns = (0, _ACore.$$)('.as-table-of-text-input-tool-command', this.$tool).reduce(function (ac, btn) {
    var value = btn.attr('data-command');
    btn.on('click', function (ev) {
      _this4.commands[value].exec.call(_this4);
      // this.ev_clickInsert(value, ev);
    });

    ac[value] = btn;
    return ac;
  }, {});
  // this.$removeBtn = $('.as-table-of-text-input-tool-remove-col', this.$tool)
  //     .on('click', this.ev_clickRemove);

  this.focusCell = null;
  this.table.elt.on('change', function () {
    return _this4.updateAvailableCommands();
  });
}
TEIFormatTool.prototype.commands = {
  left: {
    /**
     * @this TEIFormatTool
     */
    available: function available() {
      return this.focusCell.row.cells.length < this.table.maxCol;
    },
    /**
     * @this TEIFormatTool
     */
    exec: function exec() {
      var idx = this.focusCell.row.cells.indexOf(this.focusCell);
      this.table.rows.forEach(function (row) {
        var newCell = new TEICell(row, {
          value: ''
        });
        row.tr.addChildBefore(newCell.td, row.cells[idx].td);
        row.cells.splice(idx, 0, newCell);
      });
      this.table.elt.emit('change', {
        type: 'change',
        target: this.table
      }, this.table.elt);
    }
  },
  right: {
    /**
     * @this TEIFormatTool
     */
    exec: function exec() {
      var idx = this.focusCell.row.cells.indexOf(this.focusCell);
      this.table.rows.forEach(function (row) {
        var newCell = new TEICell(row, {
          value: ''
        });
        row.tr.addChildAfter(newCell.td, row.cells[idx].td);
        row.cells.splice(idx + 1, 0, newCell);
      });
      this.table.elt.emit('change', {
        type: 'change',
        target: this.table
      }, this.table.elt);
    }
  },
  above: {
    /**
     * @this TEIFormatTool
     */
    available: function available() {
      return this.table.rows.length < this.table.maxRow;
    },
    /**
     * @this TEIFormatTool
     */
    exec: function exec() {
      if (!this.focusCell) return;
      var colN = this.table.rows[0].cells.length;
      var focusRow = this.focusCell.row;
      var idx = this.table.rows.indexOf(focusRow);
      var newRow = new TEIRow(this.table, {
        cells: Array(colN).fill().map(function () {
          return {
            value: ''
          };
        })
      });
      this.table.rows.splice(idx, 0, newRow);
      this.table.$body.addChildBefore(newRow.tr, focusRow.tr);
      this.table.notifyChange({
        newRow: newRow
      });
    }
  },
  bellow: {
    /**
     * @this TEIFormatTool
     */
    exec: function exec() {
      if (!this.focusCell) return;
      var colN = this.table.rows[0].cells.length;
      var focusRow = this.focusCell.row;
      var idx = this.table.rows.indexOf(focusRow);
      var newRow = new TEIRow(this.table, {
        cells: Array(colN).fill().map(function () {
          return {
            value: ''
          };
        })
      });
      this.table.rows.splice(idx + 1, 0, newRow);
      this.table.$body.addChildAfter(newRow.tr, focusRow.tr);
      this.table.notifyChange({
        newRow: newRow
      });
    }
  },
  removeCol: {
    /**
     * @this TEIFormatTool
     */
    available: function available() {
      return this.table.minCol < this.focusCell.row.cells.length;
    },
    /**
     * @this TEIFormatTool
     */
    exec: function exec() {
      if (!this.focusCell) return;
      var focusRow = this.focusCell.row;
      var idx = focusRow.cells.indexOf(this.focusCell);
      this.table.rows.forEach(function (row) {
        var cell = row.cells[idx];
        cell.td.remove();
        row.cells.splice(idx, 1);
      });
      this.table.elt.emit('change', {
        type: 'change',
        target: this.table
      }, this.table.elt);
      var cellNext = focusRow.cells[idx - 1] || focusRow.cells[idx];
      if (cellNext) cellNext.focus();
    }
  },
  removeRow: {
    /**
     * @this TEIFormatTool
     */
    available: function available() {
      return this.table.minRow < this.table.rows.length;
    },
    /**
     * @this TEIFormatTool
     */
    exec: function exec() {
      if (!this.focusCell) return;
      var focusRow = this.focusCell.row;
      var idx = this.table.rows.indexOf(focusRow);
      var colIdx = focusRow.cells.indexOf(this.focusCell);
      focusRow.tr.remove();
      this.table.rows.splice(idx, 1);
      this.table.elt.emit('change', {
        type: 'change',
        target: this.table
      }, this.table.elt);
      var nextRow = this.table.rows[idx] || this.table.rows[idx - 1];
      var nexCell;
      if (nextRow) {
        nexCell = nextRow.cells[colIdx];
        if (nexCell) nexCell.focus();
      }
    }
  }
};
TEIFormatTool.prototype.commands.right.available = TEIFormatTool.prototype.commands.left.available;
TEIFormatTool.prototype.commands.bellow.available = TEIFormatTool.prototype.commands.above.available;
TEIFormatTool.prototype.onFocus = function (cell) {
  var _this5 = this;
  if (this.focusCell !== cell && this.focusCell) {
    this.focusCell.td.removeClass('as-focus');
  }
  if (!this.focusCell) {
    setTimeout(function () {
      document.addEventListener('click', _this5.ev_clickOut);
    }, 30);
  }
  this.focusCell = cell;
  this.focusCell.td.addClass('as-focus');
  this.$fontSize.value = this.focusCell.style.fontSize;
  if (this.focusCell.style.fontWeight === 'bold') this.$bold.addClass('as-checked');else this.$bold.removeClass('as-checked');
  if (this.focusCell.style.fontStyle === 'italic') this.$italic.addClass('as-checked');else this.$italic.removeClass('as-checked');
  this.$fontColor.value = this.focusCell.style.color;
  var textAlign = this.focusCell.style.textAlign;
  for (var align in this.$alignBtns) {
    if (align === textAlign) {
      this.$alignBtns[align].addClass('as-checked');
    } else {
      this.$alignBtns[align].removeClass('as-checked');
    }
  }
  this.updateAvailableCommands();
};
TEIFormatTool.prototype.updateAvailableCommands = function () {
  var _this6 = this;
  Object.keys(this.$commandBtns).forEach(function (key) {
    var available = _this6.focusCell && _this6.commands[key].available.call(_this6);
    _this6.$commandBtns[key].disabled = !available;
  });
};
TEIFormatTool.prototype.onBlur = function (cell) {};
TEIFormatTool.prototype.ev_clickOut = function (event) {
  if ((0, _EventEmitter.hitElement)(this.table.wrapper, event)) return;
  if (this.focusCell) {
    this.focusCell.td.removeClass('as-focus');
    this.focusCell = null;
  }
  document.removeEventListener('click', this.ev_clickOut);
};
TEIFormatTool.prototype.ev_fontSizeChange = function () {
  if (!this.focusCell) return;
  var prevValue = this.focusCell.style.fontSize;
  var newValue = this.$fontSize.value;
  if (newValue !== prevValue) {
    this.focusCell.style.fontSize = newValue;
    this.table.elt.emit('change', {
      type: 'change',
      target: this.table,
      cell: this
    }, this);
  }
};
TEIFormatTool.prototype.ev_clickBold = function () {
  if (this.$bold.hasClass('as-checked')) {
    this.$bold.removeClass('as-checked');
    this.focusCell.style.fontWeight = 'normal';
  } else {
    this.$bold.addClass('as-checked');
    this.focusCell.style.fontWeight = 'bold';
  }
  this.table.elt.emit('change', {
    type: 'change',
    target: this.table,
    cell: this
  }, this);
};
TEIFormatTool.prototype.ev_clickItalic = function () {
  if (!this.focusCell) return;
  if (this.$italic.hasClass('as-checked')) {
    this.$italic.removeClass('as-checked');
    this.focusCell.style.fontStyle = 'normal';
  } else {
    this.$italic.addClass('as-checked');
    this.focusCell.style.fontStyle = 'italic';
  }
  this.table.elt.emit('change', {
    type: 'change',
    target: this.table,
    cell: this
  }, this);
};
TEIFormatTool.prototype.ev_fontColorSubmit = function () {
  if (!this.focusCell) return;
  var prevColor = this.focusCell.style.color;
  var newColor = this.$fontColor.value;
  if (prevColor !== newColor) {
    this.focusCell.style.color = newColor;
    this.table.elt.emit('change', {
      type: 'change',
      target: this.table,
      cell: this
    }, this);
  }
};
TEIFormatTool.prototype.ev_clickAlign = function (newValue, event) {
  if (!this.focusCell) return;
  var prevValue = this.focusCell.style.textAlign;
  if (prevValue !== newValue) {
    this.$alignBtns[prevValue].removeClass('as-checked');
    this.$alignBtns[newValue].addClass('as-checked');
    this.focusCell.style.textAlign = newValue;
    this.table.elt.emit('change', {
      type: 'change',
      target: this.table,
      cell: this
    }, this);
  }
};
TEIFormatTool.prototype.ev_clickInsert = function (at, event) {
  if (!this.focusCell) return;
  var idx = this.table.cells.indexOf(this.focusCell);
  var bfIdx = at === 'left' ? idx : idx + 1;
  var newCell = new TEICell(this.table, {
    value: ''
  });
  if (bfIdx >= this.table.cells.length) {
    this.table.$row.addChild(newCell.td);
    this.table.cells.push(newCell);
  } else {
    this.table.$row.addChildBefore(newCell.td, this.table.cells[bfIdx].td);
    this.table.cells.splice(bfIdx, 0, newCell);
  }
  this.table.elt.emit('change', {
    type: 'change',
    target: this.table,
    cell: this
  }, this);
};
TEIFormatTool.prototype.ev_clickRemove = function () {
  if (!this.focusCell) return;
  this.focusCell.remove();
  this.table.elt.emit('change', {
    type: 'change',
    target: this.table,
    cell: this.focusCell
  }, this.table);
  this.focusCell = null;
};
TEIFormatTool.prototype.ev_keydown = function (event) {
  var key = (0, _keyboard.keyboardEventToKeyBindingIdent)(event);
  switch (key) {
    case 'ctrl-b':
      this.ev_clickBold(event);
      event.preventDefault();
      break;
    case 'ctrl-i':
      this.ev_clickItalic();
      event.preventDefault();
      break;
    case 'ctrl-l':
      this.ev_clickAlign('left', event);
      event.preventDefault();
      break;
    case 'ctrl-e':
      this.ev_clickAlign('center', event);
      event.preventDefault();
      break;
    case 'ctrl-r':
      this.ev_clickAlign('right', event);
      event.preventDefault();
      break;
  }
};

/***/ }),

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

"use strict";


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;
__webpack_require__(57818);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireWildcard(__webpack_require__(64821));
var _utils = __webpack_require__(84512);
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 }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function TableVScroller() {
  var _this = this;
  var thisTS = this;
  this.$attachHook = $('attachhook', this);
  this.$attachHook.updateSize = function () {
    _this.updateStyle();
    _this.updateSize();
  };
  this.sync = new Promise(function (rs) {
    thisTS.$attachHook.on('attached', rs);
  });
  this.$viewport = $('.absol-table-vscroller-viewport', this);
  this.$attachHook.on('attached', function () {
    _Dom["default"].addToResizeSystem(thisTS.$attachHook);
    this.updateSize();
  });
  this.$topTable = $('.absol-table-vscroller-head', this);
  this.$headLine = $('.absol-table-vscroller-head-line', this);
  this.swappedContentPairs = [];
}
TableVScroller.tag = 'TableVScroller'.toLowerCase();
TableVScroller.render = function () {
  return _({
    "class": 'absol-table-vscroller',
    child: ['.absol-table-vscroller-viewport', 'table.absol-table-vscroller-head', '.absol-table-vscroller-head-line', 'attachhook']
  });
};
TableVScroller.prototype.clearChild = function () {
  this.$viewport.clearChild();
  this.$topTable.clearChild();
};
TableVScroller.prototype.addChild = function (elt) {
  if (this.$viewport.childNodes.length == 0) {
    this.$table = elt.$table || $('table', elt);
    if (this.$table) {
      this.$viewport.addChild(elt);
      this.update();
    } else {
      throw new Error('Element must be a table!');
    }
  } else {
    throw new Error("Only 1 table accepted!");
  }
};
TableVScroller.prototype._trackBackgroundColor = function (element) {
  var current = this.$thead;
  var res;
  while (current && !res && res != 'rgba(0, 0, 0, 0)') {
    res = window.getComputedStyle(element).getPropertyValue('background-color');
    current = current.parentNode;
  }
  if (res == 'rgba(0, 0, 0, 0)') return 'white';
  return res;
};
TableVScroller.prototype.updateStyle = function () {
  if (!this.$thead) return;
  var clazz = this.$table.attr('class');
  if (clazz) {
    clazz = clazz.trim().split(/\s+/);
    for (var i = 0; i < clazz.length; ++i) {
      this.$topTable.addClass(clazz[i]);
    }
  }
  var bgColor = this._trackBackgroundColor(this.$thead);
  this.$topTable.addStyle('background-color', bgColor);
};
TableVScroller.prototype.updateSize = function () {
  if (!this.$thead) return;
  var theadBound = this.$thead.getBoundingClientRect();
  var tableBound = this.$table.getBoundingClientRect();
  this.$topTable.addStyle({
    width: tableBound.width + 'px',
    height: theadBound.height + 'px'
  });
  this.$headLine.addStyle({
    top: theadBound.height + 'px',
    maxWidth: tableBound.width + 'px'
  });
  if (this.$viewport.clientHeight < this.$viewport.scrollHeight) {
    this.addClass('scroll-v');
  } else {
    this.removeClass('scroll-v');
  }
  var realNodes = this.$tr.childNodes;
  var topNodes = this.$topTr.childNodes;
  var widthStyle;
  var displayStyle;
  for (var i = 0; i < realNodes.length; ++i) {
    if (!realNodes[i].tagName) continue;
    widthStyle = $(realNodes[i]).getComputedStyleValue('width');
    displayStyle = realNodes[i].getComputedStyleValue('display');
    if (!widthStyle) {
      widthStyle = realNodes[i].getBoundingClientRect().width;
      if (!widthStyle) {
        displayStyle = 'none';
      }
      widthStyle += 'px';
    }
    // console.trace(getAncestorElementOf(realNodes[i]), widthStyle, displayStyle)
    $(topNodes[i]).attr('style', realNodes[i].attr('style')).addStyle('width', widthStyle).addStyle('display', displayStyle);
  }
  this.$topTable.removeStyle('display');
};
TableVScroller.prototype.updateContent = function () {
  var _this2 = this;
  this.swappedContentPairs.forEach(function (originElt, copyElt) {
    _this2.swappedContentPairs.push([originElt, copyElt]);
  });
  this.swappedContentPairs = [];
  var elt = this.$table;
  this.$thead = $('thead', elt);
  this.$tr = $('tr', this.$thead);
  this.$topThead = (0, _Dom.depthClone)(this.$thead, function (originElt, copyElt) {
    if (originElt.tagName === 'TH') {
      (0, _utils.swapChildrenInElt)(originElt, copyElt);
      _this2.swappedContentPairs.push([originElt, copyElt]);
    }
  });
  this.$topTr = $('tr', this.$topThead);
  this.$topTable.clearChild().addChild(this.$topThead).addStyle('display', 'none');
};
TableVScroller.prototype.update = function () {
  if (!this.$table) return;
  this.updateContent();
  this.updateStyle();
  this.updateSize();
};
_ACore["default"].install(TableVScroller);
var _default = TableVScroller;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(99218);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _SelectMenu = _interopRequireDefault(__webpack_require__(20834));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 *
 *  @augments HTMLTextAreaElement
 *  @augments AElement
 *
 * @constructor
 */
function TextArea2() {
  this.on('keydown', this.eventHandler.keydown);
  this.on('paste', this.eventHandler.paste);
  this.on('cut', this.eventHandler.paste);
}
TextArea2.tag = 'TextArea2'.toLowerCase();
TextArea2.render = function () {
  return _('textarea.absol-textarea2');
};
TextArea2.getRenderPre = function () {
  if (!TextArea2.$preSpace) {
    TextArea2.$preSpace = _('textarea').addStyle({
      'overflow': 'hidden',
      'height': '12px',
      'resize': 'none'
    }).addTo(_SelectMenu["default"].getRenderSpace());
  }
  return TextArea2.$preSpace;
};
TextArea2.prototype.updateSize = function () {
  var heightStyle = this._measureHeight(this.value);
  this.addStyle('--content-height', heightStyle);
};
TextArea2.eventHandler = {};
TextArea2.eventHandler.keydown = function (event) {
  if (event.altKey || event.ctrlKey) return;
  var key = event.key || String.fromCharCode(event.which || event.keyCode);
  var selectPost = this.getInputSelection();
  var leftText = this.value.substring(0, selectPost.start);
  var rightText = this.value.substring(selectPost.end);
  var middText = '';
  if (key == 'Enter') {
    middText = '\n';
  } else if (key == 'Backspace') {
    if (leftText.length > 0) {
      leftText = leftText.substring(0, leftText.length - 1);
    }
  } else if (key == 'Delete') {
    if (selectPost.start < selectPost.end) {
      middText = '';
    } else if (rightText.length > 0) {
      rightText = rightText.substring(1);
    }
  } else if (key.length == 1) {
    //char
    middText = key;
  } else {
    return;
  }
  var newText = leftText + middText + rightText;
  var heightStyle = this._measureHeight(newText);
  this.addStyle('--content-height', heightStyle);
};
TextArea2.eventHandler.paste = function (event) {
  // var text  = 
  var cl = event.clipboardData || window.clipboardData;
  var middText = cl.getData('Text') || '';
  var selectPost = this.getInputSelection();
  var leftText = this.value.substring(0, selectPost.start);
  var rightText = this.value.substring(selectPost.end);
  var newText = leftText + middText + rightText;
  var heightSyle = this._measureHeight(newText);
  this.addStyle('--content-height', heightSyle);
};
TextArea2.eventHandler.cut = function (event) {
  // var text  = 
  var cl = event.clipboardData || window.clipboardData;
  var selectPost = this.getInputSelection();
  var leftText = this.value.substring(0, selectPost.start);
  var rightText = this.value.substring(selectPost.end);
  var newText = leftText + rightText;
  var heightSyle = this._measureHeight(newText);
  this.addStyle('--content-height', heightSyle);
};
TextArea2.prototype._measureHeight = function (text) {
  var pre = TextArea2.getRenderPre();
  pre.addStyle('padding-left', this.getComputedStyleValue('padding-left'));
  pre.addStyle('padding-right', this.getComputedStyleValue('padding-right'));
  pre.addStyle('padding-top', this.getComputedStyleValue('padding-top'));
  pre.addStyle('padding-bottom', this.getComputedStyleValue('padding-bottom'));
  pre.addStyle('width', this.getComputedStyleValue('width'));
  pre.addStyle('height', this.getFontSize() + 'px');
  pre.addStyle('boder', this.getComputedStyleValue('boder'));
  pre.addStyle('font-size', this.getComputedStyleValue('font-size'));
  pre.addStyle('font-family', this.getComputedStyleValue('font-family'));
  pre.value = text;
  var result = pre.scrollHeight + 'px';
  return result;
};

/**
 * Return an object with the selection range or cursor position (if both have the same value)
 * @param {DOMElement} el A dom element of a textarea or input text.
 * @return {Object} reference Object with 2 properties (start and end) with the identifier of the location of the cursor and selected text.
 **/
TextArea2.prototype.getInputSelection = function () {
  var start = 0,
    end = 0,
    normalizedValue,
    range,
    textInputRange,
    len,
    endRange;
  if (typeof this.selectionStart == "number" && typeof this.selectionEnd == "number") {
    start = this.selectionStart;
    end = this.selectionEnd;
  } else {
    range = document.selection.createRange();
    if (range && range.parentElement() == this) {
      len = this.value.length;
      normalizedValue = this.value.replace(/\r\n/g, "\n");

      // Create a working TextRange that lives only in the input
      textInputRange = this.createTextRange();
      textInputRange.moveToBookmark(range.getBookmark());

      // Check if the start and end of the selection are at the very end
      // of the input, since moveStart/moveEnd doesn't return what we want
      // in those cases
      endRange = this.createTextRange();
      endRange.collapse(false);
      if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
        start = end = len;
      } else {
        start = -textInputRange.moveStart("character", -len);
        start += normalizedValue.slice(0, start).split("\n").length - 1;
        if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) {
          end = len;
        } else {
          end = -textInputRange.moveEnd("character", -len);
          end += normalizedValue.slice(0, end).split("\n").length - 1;
        }
      }
    }
  }
  return {
    start: start,
    end: end
  };
};
_ACore["default"].install(TextArea2);
var _default = TextArea2;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(13367);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function TextClipboard() {
  this.$textarea = _('<textarea class="absol-text-clipboard" wrap="off" autocorrect="off"' + ' autocapitalize="off" spellcheck="false"></textarea>').addTo(this);
}
TextClipboard.tag = 'TextClipboard'.toLowerCase();
TextClipboard.render = function () {
  return _({
    style: {
      positon: 'fixed',
      opacity: 0,
      width: '1px',
      height: '1px',
      top: 0,
      left: 0
    }
  });
};
TextClipboard.prototype.copy = function (text) {
  this.$textarea.value = text;
  this.$textarea.select();
  document.execCommand('copy');
};
TextClipboard.prototype.paste = function () {
  this.$textarea.select();
  document.execCommand('paste');
};
_ACore["default"].install(TextClipboard);
var _default = TextClipboard;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _TextMeasureData = _interopRequireDefault(__webpack_require__(62738));
var _Dom = __webpack_require__(64821);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
 * best module
 * @constructor
 */
function TextMeasure() {
  this.$canvas = null;
  this.data = {};
  this._loadComputedData();
  // if the font is not in data, create it and copy console log to TextMeasureData.js
  // this._makeFontSize('Times New Roman');
  // this._makeFontSize('Arial');
}

TextMeasure.prototype.exportCode = function () {
  var _this = this;
  var obj = 'self.absol.TextMeasure';
  var code = ['if (!self.absol) self.absol = {};', obj + ' = {};', obj + '.data = ' + JSON.stringify(this.data) + ';'];
  Object.keys(this.constructor.prototype).forEach(function (key) {
    var val = _this[key];
    if (typeof val === "function") {
      code.push(obj + '.' + key + ' = ' + val + ';\n');
    } else if (!(0, _Dom.isDomNode)(val)) {
      //todo
    }
  });
  return code.join('\n');
};
TextMeasure.prototype._loadComputedData = function () {
  var thisO = this;
  this.data.chars = _TextMeasureData["default"].chars;
  this.data.fonts = Object.keys(_TextMeasureData["default"].fonts).reduce(function (ac, fontName) {
    var font = _TextMeasureData["default"].fonts[fontName];
    ac[fontName] = {
      width: thisO._valueDict2KeyDict(font.width),
      spacing: thisO._valueDict2KeyDict(font.spacing, 2),
      fontBoundingBoxAscent: font.fontBoundingBoxAscent,
      fontBoundingBoxDescent: font.fontBoundingBoxDescent
    };
    return ac;
  }, {});
};
TextMeasure.prototype._valueDict2KeyDict = function (dict, keyLength) {
  var thisO = this;
  return Object.keys(dict).reduce(function (ac, valueText) {
    var keys = thisO._splitKey(dict[valueText], keyLength || 1);
    var value = parseFloat(valueText);
    keys.reduce(function (ac1, key) {
      ac1[key] = value;
      return ac1;
    }, ac);
    return ac;
  }, {});
};
TextMeasure.prototype._keyDic2ValueDict = function (keyDict) {
  return Object.keys(keyDict).reduce(function (ac, cr) {
    var vKey = keyDict[cr].toString();
    ac[vKey] = ac[vKey] || '';
    ac[vKey] += cr;
    return ac;
  }, {});
};

/***
 *
 * @param s
 * @param l
 * @returns {string[]}
 * @private
 */
TextMeasure.prototype._splitKey = function (s, l) {
  var cArr = s.split('');
  if (!l || l < 2) return cArr;
  return cArr.reduce(function (ac, cr) {
    ac.last += cr;
    if (ac.last.length >= l) {
      ac.arr.push(ac.last);
      ac.last = '';
    }
    return ac;
  }, {
    arr: [],
    last: ''
  }).arr;
};
TextMeasure.prototype._array2keyDict = function (arrKey, arrVal) {
  return arrKey.reduce(function (ac, cr, i) {
    ac[cr] = arrVal[i];
    return ac;
  }, {});
};
TextMeasure.prototype._makeFontSize = function (fontName) {
  var thisO = this;
  var charList = _TextMeasureData["default"].chars;
  var fontMt = this.measureTextByCanvas("demo-abgH", '20px ' + fontName);
  var cWidthArr = charList.map(function (c) {
    return thisO.measureTextByCanvas(c).width;
  });
  var width = this._array2keyDict(charList, cWidthArr);
  var spacing = charList.reduce(function (ac, c1, i1) {
    return charList.reduce(function (ac1, c2, i2) {
      var d = thisO.measureTextByCanvas(c1 + c2).width - cWidthArr[i1] - cWidthArr[i2];
      if (d !== 0) ac1[c1 + c2] = d;
      return ac1;
    }, ac);
  }, {});
  _TextMeasureData["default"][fontName] = {
    width: thisO._keyDic2ValueDict(width),
    spacing: thisO._keyDic2ValueDict(spacing),
    fontBoundingBoxAscent: fontMt.fontBoundingBoxAscent,
    fontBoundingBoxDescent: fontMt.fontBoundingBoxDescent
  };
  this.data.fonts[fontName] = {
    width: width,
    spacing: spacing,
    fontBoundingBoxAscent: fontMt.fontBoundingBoxAscent,
    fontBoundingBoxDescent: fontMt.fontBoundingBoxDescent
  };

  // copy from console and paste it to TextMeasureData
  // console.log(fontName+":"+JSON.stringify(this.data.fonts[fontName]));
};

/***
 *
 * @param {string} text
 * @param {string} fontName
 * @param {number} fontSize
 * @return {number}
 */
TextMeasure.prototype.measureWidth = function (text, fontName, fontSize) {
  var width = this.data.fonts[fontName].width;
  var spacing = this.data.fonts[fontName].spacing;
  var res = 0;
  var prevC = text[0];
  var c = text[0];
  res += width[c] || 0;
  for (var i = 1; i < text.length; ++i) {
    c = text[i];
    res += spacing[prevC + c] || 0;
    res += width[c] || 0;
    prevC = c;
  }
  return res * fontSize / 20;
};

/***
 *
 * @param {string}text
 * @param {string=} font - without font-size, default is 20px
 * @returns {TextMetrics}
 */
TextMeasure.prototype.measureTextByCanvas = function (text, font) {
  if (!document || !document.createElement) throw new Error("Not support renderer!");
  var canvas = this.$canvas || (this.$canvas = document.createElement("canvas"));
  var context = canvas.getContext("2d");
  if (font) context.font = font;
  var metrics = context.measureText(text);
  return metrics;
};
var instance = new TextMeasure();
var _default = instance;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _default = {
  chars: (" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~©´ÀÁÂÊÍÒÔÙÚ" + "ÝàáâãèéêìíðòóôõùúýĂăĐđĩũƠơƯưɐɔɕɗəɛɡɣɲʃʒʝʰˆː˘̪̀̃͡τφχẠạẢảẤấẦầẩẫẬậắằẳặẸẹẻẽếỀềểễỆệỉịọỏỐốồổỗỘộỚớỜờởỡỢợụỦủỨứỪừửữựỳỷỹ" + "–‘“”…♥♪【】🤣️�").split(''),
  fonts: {
    "Times New Roman": {
      "width": {
        "0": "̪̀̃͡️",
        "5": " ,.",
        "10": "0123456789#$*_bdghknopquvxyðòóôõùúýđũɗɡɣɲọỏốồổỗộụủỳỷỹ–♪",
        "20": "…【】",
        "6.66015625": "!()-I[]`fr´Íʃˆ˘‘",
        "8.1640625": "\"",
        "16.66015625": "%",
        "15.556640625": "&m",
        "3.603515625": "'",
        "11.279296875": "+<=>",
        "5.556640625": "/:;\\ijltìíĩʝːỉị",
        "8.876953125": "?acezàáâãèéêăɐɔɕəʒχạảấầẩẫậắằẳặẹẻẽếềểễệ“”",
        "18.41796875": "@",
        "14.443359375": "ADGHKNOQUVXYwÀÁÂÒÔÙÚÝĂĐƠẠẢẤẦẬỐỘỚỜỢỦ",
        "13.33984375": "BCR",
        "12.216796875": "ELTZÊẸỀỆ",
        "11.123046875": "FPS",
        "7.783203125": "Js",
        "17.783203125": "M",
        "18.876953125": "W",
        "9.384765625": "^",
        "9.599609375": "{}",
        "4.00390625": "|",
        "10.8203125": "~",
        "15.1953125": "©",
        "10.576171875": "ơớờởỡợ",
        "15.517578125": "ƯỨỪ",
        "10.83984375": "ưứừửữự",
        "8.3984375": "ɛ",
        "6.42578125": "ʰ",
        "8.037109375": "τ",
        "11.54296875": "φ",
        "11.875": "♥",
        "19.423828125": "🤣�"
      },
      "spacing": {
        "-0.7421875": "11W:W;",
        "-2.216796875": "ATP,P.VaVeVyWAY-YAYqYu",
        "-2.578125": "AVV,V.VAVoY,Y.",
        "-1.6015625": "AWF,F.RVTAWaWeWo",
        "-1.8359375": "AYAwAyLTLVPAT-V-W,W.Y:Y;Yp",
        "-1.484375": "AvFALWT,T.V:V;‘‘",
        "-2.001953125": "LYYaYeYoYv",
        "-1.103515625": "LyRWRYT;W-Yir.",
        "-1.201171875": "RTViVrVuWy",
        "-0.80078125": "RyWiWrWur,",
        "-0.99609375": "T:",
        "-0.361328125": "TOffrg",
        "-1.396484375": "TaTcTeToTsTwTy",
        "-0.703125": "TiTrTu",
        "-0.400390625": "r-",
        "-1.298828125": "v,v.w,w.y,y.",
        "-0.439453125": "χφ",
        "-4.443359375": "【̀【̃【̪【͡】̀】̃】̪】͡",
        "-11.38671875": "🤣"
      },
      "fontBoundingBoxAscent": 18,
      "fontBoundingBoxDescent": 4
    },
    "Arial": {
      "width": {
        "0": "̪̀̃͡️",
        "10": "Jcksvxyzýɔɕỳỷỹ♪",
        "20": "…【】",
        "11.123046875": "0123456789#$?L_abdeghnopquàáâãèéêðòóôõùúăđũɐɗəɡɲạảấầẩẫậắằẳặẹẻẽếềểễệọỏốồổỗộụủ–",
        "5.556640625": " !,./:;I[\\]ftÍìíĩː",
        "7.099609375": "\"",
        "17.783203125": "%",
        "13.33984375": "&ABEKPSVXYÀÁÂÊÝĂẠẢẤẦẬẸỀỆ",
        "3.818359375": "'",
        "6.66015625": "()-`r´ˆ˘“”",
        "7.783203125": "*",
        "11.6796875": "+<=>~",
        "20.302734375": "@",
        "14.443359375": "CDHNRUwÙÚĐỦ",
        "12.216796875": "FTZ",
        "15.556640625": "GOQÒÔỐỘ",
        "16.66015625": "Mm",
        "18.876953125": "W",
        "9.384765625": "^",
        "4.443359375": "ijlʃỉị‘",
        "6.6796875": "{}",
        "5.1953125": "|",
        "14.736328125": "©",
        "17.1484375": "ƠỚỜỢ",
        "13.115234375": "ơớờởỡợ",
        "17.080078125": "ƯỨỪ",
        "13.388671875": "ưứừửữự",
        "9.169921875": "ɛ",
        "10.01953125": "ɣ",
        "10.8984375": "ʒ",
        "7.94921875": "ʝ",
        "7.666015625": "ʰ",
        "7.900390625": "τ",
        "12.96875": "φ",
        "10.498046875": "χ",
        "11.875": "♥",
        "19.423828125": "🤣�"
      },
      "spacing": {
        "-1.484375": "11ATAVAYLTLVLWLYPATAVAVaYAYaYpv,v.y,y.",
        "-0.7421875": "AWLyTiTrTuV:V;VrVuVyWAWaYi",
        "-0.361328125": "AvAwAyRTRVRWRYTOViW-W:W;WeWoWrWuff‘‘",
        "-2.216796875": "F,F.T,T.T:T;TaTcTeToTs",
        "-1.103515625": "FAT-TwTyV-VeVoW,W.Y:YuYvr,r.w,w.",
        "-2.578125": "P,P.Y,Y.",
        "-1.8359375": "V,V.Y-YeYoYq",
        "-0.17578125": "Wy",
        "-1.298828125": "Y;",
        "1.11328125": "ìĩ",
        "-0.283203125": "τφφτ",
        "-0.537109375": "φχχφ",
        "-5": "【̀【̃【̪【͡】̀】̃】̪】͡",
        "-11.38671875": "🤣"
      },
      "fontBoundingBoxAscent": 18,
      "fontBoundingBoxDescent": 4
    }
  }
};
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _ChromeTime24Picker = _interopRequireDefault(__webpack_require__(2273));
var _datetime = __webpack_require__(58286);
var _EventEmitter = __webpack_require__(46833);
var _utils = __webpack_require__(84512);
var _TimeInput = _interopRequireDefault(__webpack_require__(17019));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _DelaySignal = _interopRequireDefault(__webpack_require__(81809));
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
var _MultiLanguageCSS = __webpack_require__(89074);
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; }
/**
 * @extends AElement
 * @constructor
 */
function Time24Input() {
  var t = _LanguageSystem["default"].getText('txt_next_day');
  if (t) {
    t = '(' + t + ')';
    this.nextDateText = t;
  }
  this.domSignal = new _DelaySignal["default"]();
  this.$clockBtn = (0, _ACore.$)('.as-time-input-icon-btn', this);
  this.$text = (0, _ACore.$)('.as-time-input-text', this);
  this.$clearBtn = (0, _ACore.$)('button.as-time-input-clear-btn', this).on('click', this.clear.bind(this));
  this._hour = 0;
  this._minute = 0;
  this._nd = false;
  this._dayOffset = 0;
  this._format = 'HH:mm ND';
  this._firedValue = 'NOT_FIRED';
  this.textCtrl = new T24ITextController(this);
  this.notNull = true;
  this.dropdownCtn = new T24DropdownController(this);
  setTimeout(function () {}, 1000);

  /**
   * @type {string}
   * @name format
   * @memberof Time24Input#
   */

  /**
   * @type {number|null}
   * @name hour
   * @memberof Time24Input#
   */

  /**
   * @type {number|null}
   * @name minute
   * @memberof Time24Input#
   */

  /**
   * @type {number} always is a number, set dayOffset, keep value
   * @name dayOffset
   * @memberof Time24Input#
   */

  /**
   * computed from other
   * @type {number|null}
   * @name value
   * @memberof Time24Input#
   */

  /**
   * @type {boolean}
   * @name nd
   * @memberof Time24Input#
   */
}

Time24Input.tag = 'Time24Input'.toLowerCase();
Time24Input.prototype.nextDateText = '(Next day)';
Time24Input.render = function () {
  return (0, _ACore._)({
    "class": ['ac-time-input', 'as-time-24-input'],
    extendEvent: ['change'],
    child: [{
      tag: 'input',
      "class": 'as-time-input-text',
      attr: {
        type: 'text',
        spellcheck: "false"
      }
    }, {
      tag: 'button',
      "class": 'as-time-input-clear-btn',
      child: 'span.mdi.mdi-close-circle'
    }, {
      tag: 'button',
      "class": 'as-time-input-icon-btn',
      child: 'span.mdi.mdi-clock-outline'
    }]
  });
};
Time24Input.prototype._notifyChange = function (event) {
  this._firedValue = this.value;
  this.emit('change', {
    type: 'change',
    originalEvent: event && (event.originalEvent || event.originEvent) || event
  }, this);
};
Time24Input.prototype.notifyIfChange = function () {
  if (this._firedValue !== this.value) {
    this._notifyChange();
  }
};
Time24Input.prototype.clear = function (event) {
  if (this.value !== null && !this.notNull) {
    this.value = null;
    this._notifyChange(event);
  }
};
Time24Input.prototype.share = {
  $picker: null,
  /***
   * @type Time24Input
   */
  $holdingInput: null,
  $follower: null,
  $closeBtn: null
};
Time24Input.property = {};
Time24Input.property.hour = {
  set: function set(value) {
    if ((0, _utils.isRealNumber)(value)) {
      value = Math.round(value);
      if (value < 0) {
        value = Math.ceil(-value / 24) * 24 + value;
      }
      value = value % 24;
    } else {
      value = null;
    }
    this._hour = value;
    this.textCtrl.updateTextFromValue();
  },
  get: function get() {
    return this._hour;
  }
};
Time24Input.property.minute = {
  set: function set(value) {
    if ((0, _utils.isRealNumber)(value)) {
      value = Math.round(value);
      if (value < 0) {
        value = Math.ceil(-value / 60) * 60 + value;
      }
      value = value % 60;
    } else {
      value = null;
    }
    this._minute = value;
    this.textCtrl.updateTextFromValue();
  },
  get: function get() {
    return this._minute;
  }
};
Time24Input.property.nd = {
  set: function set(value) {
    this._nd = !!value;
    this.textCtrl.updateTextFromValue();
  },
  get: function get() {
    var value = this._nd;
    var hour = this.hour;
    var minute = this.minute;
    var dayOffset = this.dayOffset;
    var mh;
    if ((0, _utils.isRealNumber)(dayOffset)) {
      if ((0, _utils.isNaturalNumber)(hour)) {
        mh = (0, _utils.millisToClock)(dayOffset);
        if (hour < mh.hour) {
          value = true;
        } else if (hour === mh.hour) {
          if ((0, _utils.isRealNumber)(minute) && minute < mh.minute) {
            value = true;
          }
        }
      }
    }
    return value;
  }
};
Time24Input.property.dayOffset = {
  set: function set(dayOffset) {
    var value = this.value;
    this._dayOffset = (0, _utils.isRealNumber)(dayOffset) ? (0, _utils.normalizeMinuteOfMillis)(dayOffset) : 0;
    this.value = value;
  },
  get: function get() {
    if (this.notNull) {
      return this._dayOffset || 0;
    } else {
      return this._dayOffset;
    }
  }
};
Time24Input.property.value = {
  set: function set(value) {
    value = (0, _utils.isRealNumber)(value) ? (0, _utils.normalizeMinuteOfMillis)(Math.min(Math.max(value, 0), _datetime.MILLIS_PER_DAY)) : null;
    var clockTime;
    if (value !== null) {
      clockTime = (0, _utils.millisToClock)(value + this.dayOffset);
      this._hour = clockTime.hour;
      this._minute = clockTime.minute;
      if (value === _datetime.MILLIS_PER_DAY) this._nd = true;
    } else {
      this._hour = null;
      this._minute = null;
    }
    this.textCtrl.updateTextFromValue();
    this._firedValue = this.value;
  },
  get: function get() {
    if (!(0, _utils.isRealNumber)(this._hour) || !(0, _utils.isRealNumber)(this._minute)) return null;
    var mil = (0, _utils.clockToMillis)(this._hour, this._minute);
    if (mil < this.dayOffset || mil === this.dayOffset && this._nd) mil += _datetime.MILLIS_PER_DAY;
    mil -= this.dayOffset;
    return mil;
  }
};
Time24Input.property.displayTime = {
  get: function get() {
    var value = this.value;
    if ((0, _utils.isRealNumber)(value)) {
      return value + this.dayOffset;
    } else {
      return null;
    }
  }
};
Time24Input.property.notNull = {
  set: function set(value) {
    if (value) {
      if (this.value === null) {
        this.value = 0;
      }
      this.addClass('as-must-not-null');
    } else {
      this.removeClass('as-must-not-null');
    }
    this._firedValue = this.value;
  },
  get: function get() {
    return this.hasClass('as-must-not-null');
  }
};
Time24Input.property.disabled = {
  set: function set(value) {
    value = !!value;
    this._disabled = value;
    if (value) this.addClass('as-disabled');else this.removeClass('as-disabled');
    this.$text.disabled = value;
  },
  get: function get() {
    return this._disabled;
  }
};
Time24Input.property.readOnly = _TimeInput["default"].property.readOnly;
Time24Input.property.format = {
  set: function set(value) {
    this._format = value || 'HH:mm';
    if (this._format.indexOf('ND') < 0) {
      this._format = this._format.trimEnd() + ' ND';
    }
    this.textCtrl.updateTextFromValue();
  },
  get: function get() {
    return this._format;
  }
};
Time24Input.eventHandler = {};
Time24Input.eventHandler.pickerChange = function (event) {
  if (this.dayOffset === null) this.dayOffset = 0;
};
Time24Input.eventHandler.clickClockBtn = function () {
  this._attachPicker();
};
_ACore["default"].install(Time24Input);
var _default = Time24Input;
/**
 *
 * @param {Time24Input} elt
 * @constructor
 */
exports["default"] = _default;
function T24DropdownController(elt) {
  this.elt = elt;
  this.$clockBtn = elt.$clockBtn.on('click', this.ev_clickClockBtn.bind(this));
  this.disabledButtton = false;
  this.ev_clickOut = this.ev_clickOut.bind(this);
}
T24DropdownController.prototype.share = {
  $picker: null,
  $holdingInput: null,
  /**
   * @type {Follower|null}
   */
  $follower: null,
  /**
   * @type {T24DropdownController|null}
   */
  holder: null
};
T24DropdownController.prototype.prepare = function () {
  var share = this.share;
  if (share.$picker) return;
  (0, _MultiLanguageCSS.loadLanguageModule)();
  share.$picker = (0, _ACore._)({
    tag: _ChromeTime24Picker["default"].tag,
    on: {
      change: function change(event) {
        if (share.holder) {
          share.holder.onPickerChange(event);
        }
      }
    }
  });
  share.$picker.nextDateText = this.elt.nextDateText;
  /**
   * @type {Follower}
   */
  share.$follower = (0, _ACore._)({
    tag: 'follower',
    "class": ['as-chrome-time-24-picker-follower', 'as-dropdown-box-common-style'],
    child: [this.share.$picker, {
      "class": 'as-dropdown-box-footer',
      child: [{
        "class": 'as-dropdown-box-footer-right',
        child: ['<a data-ml-key="txt_close" class="as-select-list-box-close-btn"></a>']
      }]
    }]
  });
  share.$follower.cancelWaiting();
  this.share.$closeBtn = (0, _ACore.$)('.as-select-list-box-close-btn', this.share.$follower);
};
T24DropdownController.prototype.attach = function () {
  var _this = this;
  this.prepare();
  var share = this.share;
  if (share.holder) {
    share.holder.release();
  }
  share.holder = this;
  this.disabledButtton = true;
  share.$follower.addTo(document.body);
  share.$follower.followTarget = this.elt;
  share.$follower.addStyle('visibility', 'hidden');
  var hour = this.elt.hour;
  var min = this.elt.minute;
  var dayOffset = this.elt.dayOffset;
  share.$picker.dayOffset = dayOffset;
  var offsetClock = (0, _utils.millisToClock)(dayOffset);
  var value = 0;
  if ((0, _utils.isRealNumber)(hour)) {
    if (!(0, _utils.isRealNumber)(min)) {
      if (hour === offsetClock.hour) {
        min = offsetClock.hour;
      } else {
        min = 0;
      }
    }
    value = (0, _utils.clockToMillis)(hour, min) - dayOffset;
    if (value < 0) value += _datetime.MILLIS_PER_DAY;
  } else if ((0, _utils.isRealNumber)(min)) {
    if (min >= offsetClock.minute) {
      hour = offsetClock.hour;
    } else {
      hour = (offsetClock.hour + 1) % 24;
    }
    value = (0, _utils.clockToMillis)(hour, min) - dayOffset;
    if (value < 0) value += _datetime.MILLIS_PER_DAY;
  }
  if (value === 0 && this.elt.nd) value = _datetime.MILLIS_PER_DAY;
  share.$picker.value = value;
  setTimeout(function () {
    document.addEventListener('click', _this.ev_clickOut);
    share.$follower.removeStyle('visibility');
    share.$picker.scrollIntoSelected();
  }, 10);
};
T24DropdownController.prototype.release = function () {
  var _this2 = this;
  var share = this.share;
  if (share.holder !== this) return;
  share.$follower.remove();
  share.$follower.followTarget = null;
  share.holder = null;
  setTimeout(function () {
    _this2.disabledButtton = false;
    document.removeEventListener('click', _this2.ev_clickOut);
  }, 100);
};
T24DropdownController.prototype.onPickerChange = function (event) {
  this.elt.value = this.share.$picker.value;
  this.elt._notifyChange(event);
  _ResizeSystem["default"].requestUpdateSignal();
};
T24DropdownController.prototype.ev_clickClockBtn = function () {
  if (this.disabledButtton) return;
  this.attach();
};
T24DropdownController.prototype.ev_clickOut = function (event) {
  if ((0, _EventEmitter.hitElement)(this.share.$follower, event) && !(0, _EventEmitter.hitElement)(this.share.$closeBtn, event)) return;
  this.release();
};
var STATE_NEW = 1;
var STATE_EDITED = 2;
var STATE_NONE = 0;

/**
 *
 * @param {Time24Input} elt
 * @constructor
 */
function T24ITextController(elt) {
  var _this3 = this;
  this.elt = elt;
  this.domSignal = elt.domSignal;
  this.$text = this.elt.$text;
  this.$text.on('keydown', this.ev_keydown.bind(this)).on('pointerup', this.autoSelect.bind(this)).on('blur', function () {
    _this3.loadValueFromInput();
    _this3.elt.notifyIfChange();
  });
  this.editingData = {};
}
T24ITextController.prototype.tokenRegex = /(\([^)]*\))|([^.\/:\-,\\\u0020\u0009\u000D\u200B]+)|([.\/:\-,\\]+)/i;
var CHAR_NBSP = "\xA0";
T24ITextController.prototype.tokenMap = {
  h: 'h',
  H: 'H',
  HH: 'H',
  hh: 'h',
  m: 'm',
  mm: 'm',
  a: 'a',
  ND: 'ND'
};
T24ITextController.prototype.makeTokenDict = function (s) {
  var rgx = new RegExp(this.tokenRegex.source, 'g');
  var rgxFormat = new RegExp(this.tokenRegex.source, 'g');
  var format = this.elt.format + ' ND';
  var tokenMap = this.tokenMap;
  var tokenMatched = rgx.exec(s);
  var formatToken = rgxFormat.exec(format);
  var text, ident;
  var idx;
  var res = {};
  while (tokenMatched && formatToken) {
    ident = formatToken[2];
    if (tokenMap[ident]) {
      text = tokenMatched[0];
      idx = tokenMatched.index;
      res[tokenMap[ident]] = {
        text: text,
        idx: idx,
        length: text.length,
        sourceText: s,
        value: ident === 'a' || ident === 'ND' ? text : parseInt(text)
      };
      if (ident === 'ND') {
        res[tokenMap[ident]].value = res[tokenMap[ident]].value !== CHAR_NBSP;
      }
    }
    tokenMatched = rgx.exec(s);
    formatToken = rgxFormat.exec(format);
  }
  Object.defineProperty(res, 'minute', {
    enumerable: false,
    get: function get() {
      var token = this['m'] || this['mm'];
      if (token) {
        return token.value;
      } else return null;
    }
  });
  Object.defineProperty(res, 'hour24', {
    enumerable: false,
    get: function get() {
      var token = this['H'];
      if (token && (0, _utils.isNaturalNumber)(token.value)) {
        return token.value;
      }
      token = this['h'];
      var tokenA = this['A'];
      if (token && (0, _utils.isNaturalNumber)(token.value)) {
        if (tokenA.value === 'PM') {
          return 12 + token.value % 12;
        } else return token.value % 12;
      }
      return null;
    }
  });
  return res;
};
T24ITextController.prototype.formatText = function (h, m, nd) {
  var _this4 = this;
  var text = this.elt.format;
  text = text.replace(new RegExp(this.tokenRegex.source, 'g'), function (all) {
    switch (all) {
      case 'm':
      case 'mm':
        return (0, _utils.isRealNumber)(m) ? (0, _utils.zeroPadding)(m, all.length) : all;
      case 'hh':
      case 'h':
        return (0, _utils.isRealNumber)(h) ? (0, _utils.zeroPadding)(h % 12 ? h : 12, all.length) : all;
      case 'HH':
      case 'H':
        return (0, _utils.isRealNumber)(h) ? (0, _utils.zeroPadding)(h, all.length) : all;
      case 'a':
        return (0, _utils.isRealNumber)(h) ? h > 12 ? 'PM' : 'AM' : 'all';
      case 'ND':
        return nd ? _this4.elt.nextDateText : CHAR_NBSP;
      default:
        return all;
    }
  });
  return text;
};
T24ITextController.prototype.updateTextFromValue = function () {
  var value = this.elt.value;
  var hour = this.elt.hour;
  var minute = this.elt.minute;
  var nd = this.elt.nd;
  var text = this.formatText(hour, minute, nd);
  if ((0, _utils.isRealNumber)(value)) {
    this.elt.removeClass('as-value-null');
  } else {
    this.elt.addClass('as-value-null');
  }
  this.$text.value = text;
};
T24ITextController.prototype.loadValueFromInput = function () {
  var tkDick = this.makeTokenDict(this.$text.value);
  var hour = NaN;
  var minute = NaN;
  var nd = false;
  if (tkDick.H) {
    hour = Math.min(23, Math.max(0, tkDick.H.value));
  } else if (tkDick.h) {
    hour = Math.min(12, Math.max(1, tkDick.h.value));
    if (tkDick.a && tkDick.a.value === 'PM') {
      hour += 12;
    }
  }
  if (tkDick.m) {
    minute = Math.min(59, Math.max(0, tkDick.m.value));
  }
  if (tkDick.nd) {
    nd = tkDick.nd.value;
  }
  this.elt._hour = hour;
  this.elt._minute = minute;
  this.elt._nd = nd;
};
T24ITextController.prototype.autoSelect = function () {
  var token = this.tokenAt(this.$text.selectionStart);
  var tokenEnd = this.tokenAt(this.$text.selectionEnd);
  if (token) {
    if (tokenEnd.idx === token.idx) {
      token.select();
      this.editingData.state = STATE_NEW;
    } else {
      this.$text.select();
      this.editingData.state = STATE_NONE;
    }
  }
};
T24ITextController.prototype.editPrevToken = function () {
  var token = this.tokenAt(this.$text.selectionStart);
  if (!token) return false;
  var cIdx = token.idx;
  for (var i = token.idx - 1; i >= 0; --i) {
    token = this.tokenAt(i);
    if (token && token.idx !== cIdx) {
      token.select();
      this.editingData.state = STATE_NEW;
      break;
    }
  }
};
T24ITextController.prototype.editNextToken = function () {
  var token = this.tokenAt(this.$text.selectionStart);
  if (!token) return false;
  var cIdx = token.idx;
  var l = this.$text.value.length;
  for (var i = token.idx + token.length; i < l; ++i) {
    token = this.tokenAt(i);
    if (token && token.idx !== cIdx) {
      token.select();
      this.editingData.state = STATE_NEW;
      break;
    }
  }
};
T24ITextController.prototype.tokenAt = function (start) {
  var tokenizedText = new TITokenizedText(this.$text.value, this.elt.format);
  var nearestDistance = Infinity;
  var nearestIdx = -1;
  var n = Math.min(tokenizedText.textTokens.length, tokenizedText.formatTokens.length);
  var i, textToken, formatToken;
  var distance;
  for (i = 0; i < n; ++i) {
    formatToken = tokenizedText.formatTokens[i];
    if (!(0, _utils.isDateTimeFormatToken)(formatToken.content)) continue;
    textToken = tokenizedText.textTokens[i];
    if (start >= textToken.idx && start < textToken.idx + textToken.length) {
      nearestIdx = i;
      nearestDistance = 0;
      break;
    }
    if (start < textToken.idx) {
      distance = textToken.idx - start;
      if (distance < nearestDistance) {
        nearestDistance = distance;
        nearestIdx = i;
      }
    }
    if (start >= textToken.idx + textToken.length) {
      distance = start - textToken.idx - textToken.length;
      if (distance < nearestDistance) {
        nearestDistance = distance;
        nearestIdx = i;
      }
    }
  }
  if (nearestIdx < 0) return null;
  formatToken = tokenizedText.formatTokens[nearestIdx];
  textToken = tokenizedText.textTokens[nearestIdx];
  var self = this;
  return {
    idx: textToken.idx,
    text: textToken.content,
    length: textToken.length,
    ident: formatToken.content,
    input: this.$text,
    sourceText: tokenizedText.text,
    // isAvailable: function () {
    //     return this.sourceText === this.input.value;
    // },
    select: function select() {
      this.input.setSelectionRange(this.idx, this.idx + this.length);
    },
    replace: function replace(newText, selecting) {
      tokenizedText.setTokenText(this.ident, newText);
      var hour = tokenizedText.getTokenText('HH') || tokenizedText.getTokenText('H');
      var minute = tokenizedText.getTokenText('mm') || tokenizedText.getTokenText('m');
      var nd = tokenizedText.getTokenText('ND') !== CHAR_NBSP;
      var newND = self.isNextDate(parseInt(hour, 10), parseInt(minute, 10), nd);
      if (newND !== nd) {
        tokenizedText.setTokenText('ND', newND ? self.elt.nextDateText : CHAR_NBSP);
      }
      this.input.value = tokenizedText.getText(true);
      this.length = newText.length;
      if (selecting) {
        this.select();
      }
    }
  };
};

/**
 *
 * @param h
 * @param m
 * @param nd - referent result if can not detect
 * @returns {boolean}
 */
T24ITextController.prototype.isNextDate = function (h, m, nd) {
  var dayOffset = this.elt.dayOffset;
  if (!(0, _utils.isNaturalNumber)(dayOffset)) return !!nd;
  var oH = Math.floor(dayOffset / 36e5);
  var oM = Math.floor(dayOffset / 6e4) % 60;
  if (!(0, _utils.isNaturalNumber)(h)) return !!nd;
  if (h < oH) return true;
  if (!(0, _utils.isNaturalNumber)(m)) return !!nd;
  if (h === oH) {
    if (m < oM) return true;
    if (m === oM) return !!nd;
    return false;
  }
};
T24ITextController.prototype.correctingInput = function () {
  //nothing todo now
};
T24ITextController.prototype.ev_keydown = function (event) {
  var token = this.tokenAt(this.$text.selectionStart);
  var endToken = this.tokenAt(this.$text.selectionEnd);
  // var tokenDict = this.makeTokenDict(this.$text.value);
  var format = this.elt.format;
  if (!token) {
    if (event.key === 'Enter') {
      this.correctingInput();
      this.loadValueFromInput();
      this.elt.notifyIfChange(event);
    }
    return;
  }
  var newTokenText;
  var value;
  if (event.key.startsWith('Arrow')) {
    event.preventDefault();
    switch (event.key) {
      case 'ArrowLeft':
        this.editPrevToken();
        break;
      case 'ArrowRight':
        this.editNextToken();
        break;
      case 'ArrowUp':
      case 'ArrowDown':
        switch (token.ident) {
          case "H":
          case "HH":
            value = parseInt(token.text);
            if (isNaN(value)) {
              this.editingData.H = event.key === 'ArrowUp' ? 0 : 23;
            } else {
              this.editingData.H = (value + (event.key === 'ArrowUp' ? 1 : 23)) % 24;
            }
            newTokenText = (0, _utils.zeroPadding)(this.editingData.H, token.ident.length);
            token.replace(newTokenText, true);
            break;
          case "hh":
          case 'h':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this.editingData.h = event.key === 'ArrowUp' ? 1 : 12;
            } else {
              this.editingData.h = 1 + (value + (event.key === 'ArrowUp' ? 0 : 10)) % 12;
            }
            newTokenText = this.editingData.h + '';
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
          case "mm":
          case 'm':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this.editingData.m = event.key === 'ArrowUp' ? 0 : 59;
            } else {
              this.editingData.m = (value + (event.key === 'ArrowUp' ? 1 : 59)) % 60;
            }
            newTokenText = this.editingData.m + '';
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
          case 'a':
            value = token.text;
            this.editingData.a = value === 'PM' ? "AM" : "PM";
            newTokenText = this.editingData.a;
            token.replace(newTokenText, true);
            break;
          case 'ND':
            value = token.text !== CHAR_NBSP;
            this.editingData.nd = !value;
            newTokenText = this.editingData.nd ? this.elt.nextDateText : CHAR_NBSP;
            token.replace(newTokenText, true);
            break;
        }
        break;
    }
  } else if (event.key === "Delete" || event.key === 'Backspace') {
    event.preventDefault();
    if (endToken.idx !== token.idx) {
      if (this.elt.notNull) {
        this.$text.value = (0, _datetime.formatDateTime)((0, _datetime.beginOfDay)(new Date()), format).replace('ND', CHAR_NBSP);
      } else {
        this.$text.value = format.replace('ND', CHAR_NBSP);
      }
      this.$text.select();
    } else {
      if (this.elt.notNull) {
        if (token.ident === 'ND') {
          token.replace(CHAR_NBSP, true);
        } else token.replace(token.ident === 'a' ? 'AM' : (0, _utils.zeroPadding)(token.ident === 'hh' || token.ident === 'h' ? 12 : 0, token.ident.length), true);
      } else {
        token.replace(token.ident, true);
      }
      if (event.key === "Delete") this.editNextToken();else this.editPrevToken();
    }
  } else if (event.key === "Enter" || event.key === 'Tab') {
    this.correctingInput();
    this.loadValueFromInput();
    this.elt.notifyIfChange(event);
  } else if (event.ctrlKey) {
    switch (event.key) {
      case 'a':
      case 'A':
        break;
      case 'c':
      case 'C':
        break;
      case 'x':
      case 'X':
        this.domSignal.once('clear_value', function () {
          this.$text.value = format;
          this.$text.select();
        }.bind(this));
        this.domSignal.emit('clear_value');
        break;
      default:
        event.preventDefault();
    }
  } else if (event.key.match(/^[0-9]$/g)) {
    event.preventDefault();
    var dVal = parseInt(event.key);
    if (this.editingData.state === STATE_NEW) {
      switch (token.ident) {
        case 'm':
        case 'mm':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this.editingData.state = STATE_EDITED;
          if (dVal > 5) {
            this.editNextToken();
          }
          break;
        case 'h':
        case 'hh':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this.editingData.state = STATE_EDITED;
          if (dVal > 1) {
            this.editNextToken();
          }
          break;
        case 'H':
        case 'HH':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this.editingData.state = STATE_EDITED;
          if (dVal > 2) {
            this.editNextToken();
          }
          break;
        case 'ND':
          value = token.text !== CHAR_NBSP;
          this.editingData.nd = !value;
          newTokenText = this.editingData.nd ? this.elt.nextDateText : CHAR_NBSP;
          token.replace(newTokenText, true);
          break;
      }
    } else {
      switch (token.ident) {
        case 'm':
        case 'mm':
          dVal = (parseInt(token.text.split('').pop(), 10) || 0) * 10 + dVal;
          dVal = Math.max(0, Math.min(59, dVal));
          this.editingData.m = dVal;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this.editNextToken();
          break;
        case 'h':
        case 'hh':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(1, Math.min(12, dVal));
          this.editingData.h = dVal;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this.editNextToken();
          break;
        case 'H':
        case 'HH':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(0, Math.min(23, dVal));
          this.editingData.H = dVal;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this.editNextToken();
          break;
      }
    }
  } else if (event.key.match(/^[aApPSCsc]$/) && token.ident === 'a') {
    event.preventDefault();
    if (event.key.match(/^[aAsS]$/)) {
      token.replace('AM', true);
      this.editingData.a = "AM";
    } else {
      token.replace('PM', true);
      this.editingData.a = "PM";
    }
    this.editNextToken();
  } else if (token.ident === 'ND') {
    event.preventDefault();
    value = token.text !== CHAR_NBSP;
    this.editingData.nd = !value;
    newTokenText = this.editingData.nd ? this.elt.nextDateText : CHAR_NBSP;
    token.replace(newTokenText, true);
  } else {
    event.preventDefault();
  }
};
function TITokenizedText(text, format) {
  this.text = text;
  this.format = format;
  /**
   *
   * @type {{content: string, idx: number, length: number}[]}
   */
  this.formatTokens = this.makeTokens(format);
  /**
   *
   * @type {{content: string, idx: number, length: number}[]}
   */
  this.textTokens = this.makeTokens(text);
}
TITokenizedText.prototype.tokenRegex = /(\([^)]*\))|([^.\/:\-,\\\u0020\u0009\u000D\u200B]+)|([.\/:\-,\\]+)/i;
// var CHAR_NBSP = '\u00A0';

TITokenizedText.prototype.spaceRegex = /[\u0020\u0009\u000D\u200B]+/;
TITokenizedText.prototype.tokenMap = {
  h: 'h',
  H: 'H',
  HH: 'H',
  hh: 'h',
  m: 'm',
  mm: 'm',
  a: 'a',
  ND: 'ND'
};

/**
 *
 * @param {string} text
 * @returns {{content: string, idx: number, length: number}[]}
 */
TITokenizedText.prototype.makeTokens = function (text) {
  var rgx = new RegExp(this.tokenRegex.source, 'g');
  var matched = rgx.exec(text);
  var res = [];
  while (matched) {
    res.push({
      content: matched[0],
      idx: matched.index,
      length: matched[0].length
    });
    matched = rgx.exec(text);
  }
  return res;
};
TITokenizedText.prototype.setTokenText = function (tkName, content) {
  tkName = this.tokenMap[tkName] || tkName;
  var di = 0;
  var formatToken;
  var textToken;
  var found = false;
  for (var i = 0; i < this.formatTokens.length; ++i) {
    formatToken = this.formatTokens[i];
    textToken = this.textTokens[i];
    if (!textToken) {
      textToken = {
        content: formatToken.content,
        idx: formatToken.idx,
        length: formatToken.length
      };
      this.textTokens.push(textToken);
      di = this.text.length - textToken.idx;
      this.text += textToken.content;
    }
    if (di !== 0) {
      textToken.idx += di;
    }
    if ((this.tokenMap[formatToken.content] || formatToken.content) === tkName) {
      found = true;
      this.text = this.text.substring(0, textToken.idx + di) + content + this.text.substring(textToken.idx + di + textToken.length);
      di += content.length - textToken.length;
      textToken.length = content.length;
      textToken.content = content;
    }
  }
  return this;
};
TITokenizedText.prototype.getTokenText = function (tkName) {
  var res = null;
  tkName = this.tokenMap[tkName] || tkName;
  for (var i = 0; i < this.formatTokens.length; ++i) {
    if ((this.tokenMap[this.formatTokens[i].content] || this.formatTokens[i].content) === tkName) {
      res = this.textTokens[i].content;
      break;
    }
  }
  return res;
};
TITokenizedText.prototype.getToken = function (tkName) {
  var res = null;
  tkName = this.tokenMap[tkName] || tkName;
  for (var i = 0; i < this.formatTokens.length; ++i) {
    if ((this.tokenMap[this.formatTokens[i].content] || this.formatTokens[i].content) === tkName) {
      res = Object.assign({}, this.textTokens[i]);
      break;
    }
  }
  return res;
};
TITokenizedText.prototype.getText = function (extractByFormat) {
  var res = this.text;
  if (extractByFormat) {
    if (this.formatTokens.length < this.textTokens.length) {
      res = res.substring(0, this.textTokens[this.formatTokens.length - 1].idx + this.textTokens[this.formatTokens.length - 1].length);
    } else if (this.formatTokens.length > this.textTokens.length) {
      res += this.format.substring(this.textTokens[this.textTokens.length - 1].idx + this.textTokens[this.textTokens.length - 1].length);
    }
  }
  return res;
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(22870);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _datetime = __webpack_require__(58286);
var _ChromeTimePicker = _interopRequireDefault(__webpack_require__(11564));
var _DomSignal = _interopRequireDefault(__webpack_require__(47341));
var _DateTimeInput = _interopRequireDefault(__webpack_require__(37800));
var _utils = __webpack_require__(84512);
var _EventEmitter = __webpack_require__(46833);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var STATE_NEW = 1;
var STATE_EDITED = 2;
var STATE_NONE = 0;
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends {AElement}
 * @constructor
 */
function TimeInput() {
  this._editingData = {};
  this._isOpenPicker = false;
  this._lastEmitValue = null;
  this._min = 0;
  this._hour = null;
  this._minute = null;
  this._format = 'HH:mm';
  this.$clockBtn = $('.as-time-input-icon-btn', this).on('click', this.eventHandler.clickClockBtn);
  this.$text = $('input', this).on('mousedown', this.eventHandler.mouseDownInput).on('mouseup', this.eventHandler.mouseUpInput).on('dblclick', this.eventHandler.dblclickInput).on('keydown', this.eventHandler.keydown).on('blur', this.eventHandler.inputBlur).on('contextmenu', function (event) {
    event.preventDefault();
  });
  this.$clearBtn = $('button.as-time-input-clear-btn', this).on('click', this.clear.bind(this));
  this.$domSignal = _('attachhook').addTo(this);
  this.domSignal = new _DomSignal["default"](this.$domSignal);
  this.domSignal.on('request_auto_select', this._autoSelect.bind(this));
  _OOP["default"].drillProperty(this, this, 'dayOffset', 'value');
  this.dayOffset = null;
  this.hour = null;
  this.minute = null;
  this.disabled = false;
  this.notNull = true;
  /***
   * @memberOf TimeInput#
   * @name min
   * @type {number}
   */

  /***
   * @memberOf TimeInput#
   * @name s24
   * @type {boolean}
   * @readonly
   */
}

TimeInput.tag = 'timeinput';
TimeInput.render = function () {
  return _({
    "class": 'ac-time-input',
    extendEvent: ['change'],
    child: [{
      tag: 'input',
      "class": 'as-time-input-text',
      attr: {
        type: 'text'
      }
    }, {
      tag: 'button',
      "class": 'as-time-input-clear-btn',
      child: 'span.mdi.mdi-close-circle'
    }, {
      tag: 'button',
      "class": 'as-time-input-icon-btn',
      child: 'span.mdi.mdi-clock-outline'
    }]
  });
};
TimeInput.prototype._autoSelect = _DateTimeInput["default"].prototype._autoSelect;
TimeInput.prototype.tokenMap = {
  h: 'h',
  H: 'H',
  HH: 'H',
  hh: 'h',
  m: 'm',
  mm: 'm',
  a: 'a'
};
TimeInput.prototype.tokenRegex = _DateTimeInput["default"].prototype.tokenRegex;
TimeInput.prototype._tokenAt = _DateTimeInput["default"].prototype._tokenAt;
TimeInput.prototype._editNextToken = _DateTimeInput["default"].prototype._editNextToken;
TimeInput.prototype._editPrevToken = _DateTimeInput["default"].prototype._editPrevToken;
TimeInput.prototype._makeTokenDict = _DateTimeInput["default"].prototype._makeTokenDict;
TimeInput.prototype._makeValueDict = function (hour, minute) {
  var res = {};
  if (typeof hour == 'number' && hour >= 0 && hour < 24) {
    res.h = {
      value: 1 + (hour - 1) % 12
    };
    res.H = {
      value: hour
    };
    res.a = {
      value: hour >= 12 ? 'PM' : 'AM'
    };
  } else {
    res.h = {
      value: NaN
    };
    res.H = {
      value: NaN
    };
    res.a = {
      value: 'a'
    };
  }
  if (typeof minute === "number" && minute >= 0 && minute < 60) {
    res.m = {
      value: minute
    };
  } else {
    res.m = {
      value: NaN
    };
  }
  return res;
};
TimeInput.prototype._applyValue = function (hour, minute) {
  this._hour = hour;
  this._minute = minute;
  this.$text.value = this._applyTokenDict(this._format, this._makeValueDict(hour, minute));
  this._updateNullClass();
};
TimeInput.prototype._updateNullClass = function () {
  if (this._hour == null && this._minute == null) {
    this.addClass('as-value-null');
  } else {
    this.removeClass('as-value-null');
  }
};
TimeInput.prototype._applyTokenDict = function (format, dict) {
  var rgx = new RegExp(this.tokenRegex.source, 'g');
  var tokenMap = this.tokenMap;
  return format.replace(rgx, function (full, g1, g2, sourceText) {
    if (g1 && g1 === 'a') {
      return dict[g1].value;
    } else if (g1 && tokenMap[g1]) {
      var ident = tokenMap[g1];
      if (dict[ident] && !isNaN(dict[ident].value)) {
        return (0, _utils.zeroPadding)(dict[ident].value, g1.length);
      } else {
        return full;
      }
    } else return full;
  });
};
TimeInput.prototype._correctingInput = function () {
  var tkDict = this._makeTokenDict(this.$text.value);

  // TODO: check min, max,
};

TimeInput.prototype._correctingCurrentToken = function () {
  var token = this._tokenAt(this.$text.selectionStart);
  if (!token) return;
  var value;
  if (token.ident === 'a') {
    if (token.text !== 'a' && token.text !== 'AM' && token.text !== 'PM') {
      token.replace('a', false);
    }
  } else {
    value = parseInt(token.text);
    var rqMin = {
      h: 1,
      hh: 1,
      m: 0,
      mm: 0,
      H: 0,
      HH: 0
    }[token.ident];
    var rqMax = {
      H: 23,
      HH: 23,
      h: 12,
      hh: 12,
      m: 59,
      mm: 59
    }[token.ident];
    if (rqMin !== undefined) {
      if (!isNaN(value)) {
        if (value < rqMin || value > rqMin) {
          value = Math.max(rqMin, Math.min(rqMax, value));
          token.replace((0, _utils.zeroPadding)(value, token.ident.length), false);
          this._editingData[this.tokenMap[token.ident]] = value;
        }
      } else if (token.text !== token.ident) {
        token.replace(token.ident, false);
      }
    }
  }
};
TimeInput.prototype._loadValueFromInput = function () {
  var tkDick = this._makeTokenDict(this.$text.value);
  var hour = NaN;
  var minute = NaN;
  if (tkDick.H) {
    hour = Math.min(23, Math.max(0, tkDick.H.value));
  } else if (tkDick.h) {
    hour = Math.min(12, Math.max(1, tkDick.h.value));
    if (tkDick.a && tkDick.a.value === 'PM') {
      hour += 12;
    }
  }
  if (tkDick.m) {
    minute = Math.min(59, Math.max(0, tkDick.m.value));
  }
  this._hour = isNaN(hour) ? null : hour;
  this._minute = isNaN(minute) ? null : minute;
  this._updateNullClass();
};
TimeInput.prototype.clear = function (event) {
  this._applyValue(null, null);
  this._notifyIfChange(event);
};
TimeInput.prototype._notifyIfChange = function (event) {
  if (this._lastEmitValue === this.dayOffset) return;
  this.emit('change', {
    type: 'change',
    target: this,
    dayOffset: this.dayOffset,
    hour: this.hour,
    minute: this.minute,
    originEvent: event
  }, this);
  this._lastEmitValue = this.dayOffset;
};
TimeInput.property = {};
TimeInput.property.hour = {
  set: function set(value) {
    if (typeof value == "number") {
      value = value % 24 || 0;
    } else {
      value = null;
    }
    this._applyValue(value, this._minute);
    this._lastEmitValue = this.dayOffset;
  },
  get: function get() {
    return this._hour;
  }
};
TimeInput.property.minute = {
  set: function set(value) {
    if (typeof value == "number") {
      value = value % 60 || 0;
    } else {
      value = null;
    }
    this._applyValue(this._hour, value);
    this._lastEmitValue = this.dayOffset;
  },
  get: function get() {
    return this._minute;
  }
};
TimeInput.property.value = {
  set: function set(value) {
    if (typeof value == "number" || value && value.getTime) {
      value = value || 0;
      if (value.getTime) value = value.getTime() - (0, _datetime.beginOfDay)(value).getTime();else {
        value = value % _datetime.MILLIS_PER_DAY;
      }
      this.hour = Math.floor(value / _datetime.MILLIS_PER_HOUR);
      this.minute = Math.floor(value % _datetime.MILLIS_PER_HOUR / _datetime.MILLIS_PER_MINUTE);
    } else {
      this.hour = null;
      this.minute = null;
    }
  },
  get: function get() {
    if (this._hour === null || this._minute === null) return null;
    return this._hour * _datetime.MILLIS_PER_HOUR + this._minute * _datetime.MILLIS_PER_MINUTE;
  }
};
TimeInput.property.disabled = {
  set: function set(value) {
    value = !!value;
    this._disabled = value;
    if (value) this.addClass('as-disabled');else this.removeClass('as-disabled');
    this.$text.disabled = value;
  },
  get: function get() {
    return this._disabled;
  }
};
TimeInput.property.format = {
  enumerable: true,
  configurable: true,
  set: function set(value) {
    if (typeof value !== "string") value = "HH:mm";
    value = value || 'HH:mm';
    this._format = value;
    this.dayOffset = this['dayOffset'];
  },
  get: function get() {
    return this._format;
  }
};
TimeInput.property.s24 = {
  get: function get() {
    var t = this.format.match(new RegExp(this.tokenRegex.source, 'g'));
    return !t || t.indexOf('a') < 0;
  }
};
TimeInput.property.notNull = {
  set: function set(value) {
    if (value) {
      if (this.dayOffset === null) {
        this.dayOffset = 0;
      }
      this.addClass('as-must-not-null');
    } else {
      this.removeClass('as-must-not-null');
    }
  },
  get: function get() {
    return this.hasClass('as-must-not-null');
  }
};
TimeInput.property.readOnly = {
  set: function set(value) {
    value = !!value;
    if (value) this.addClass('as-read-only');else this.removeClass('as-read-only');
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
TimeInput.property.min = {
  set: function set(value) {
    if (!(0, _utils.isRealNumber)(value)) value = 0;
    value = Math.floor(value);
    value = Math.max(0, Math.min(_datetime.MILLIS_PER_DAY, value));
    this._min = value;
  },
  get: function get() {
    return this._min;
  }
};
TimeInput.eventHandler = {};
TimeInput.eventHandler.clickClockBtn = function () {
  this._attachPicker(this);
};
TimeInput.eventHandler.mouseUpInput = _DateTimeInput["default"].eventHandler.mouseUpInput;
TimeInput.eventHandler.mouseDownInput = _DateTimeInput["default"].eventHandler.mouseDownInput;
TimeInput.eventHandler.dblclickInput = _DateTimeInput["default"].eventHandler.dblclickInput;
TimeInput.eventHandler.inputBlur = _DateTimeInput["default"].eventHandler.inputBlur;
TimeInput.eventHandler.clickOut = function (event) {
  if ((0, _EventEmitter.hitElement)(this.share.$picker, event) && !(0, _EventEmitter.hitElement)(this.share.$closeBtn, event)) return;
  this._releasePicker();
};
TimeInput.eventHandler.pickerChange = function (event) {
  this._applyValue(event.hour, event.minute);
  this._notifyIfChange(event);
  _ResizeSystem["default"].requestUpdateSignal();
};

/***
 *
 * @param {KeyboardEvent} event
 */
TimeInput.eventHandler.keydown = function (event) {
  var token = this._tokenAt(this.$text.selectionStart);
  var endToken = this._tokenAt(this.$text.selectionEnd);
  if (!token) {
    if (event.key === 'Enter') {
      this._correctingInput();
      this._loadValueFromInput();
      this._notifyIfChange(event);
    }
    return;
  }
  var newTokenText;
  var value;
  if (event.key.startsWith('Arrow')) {
    event.preventDefault();
    switch (event.key) {
      case 'ArrowLeft':
        this._editPrevToken();
        break;
      case 'ArrowRight':
        this._editNextToken();
        break;
      case 'ArrowUp':
      case 'ArrowDown':
        switch (token.ident) {
          case "H":
          case "HH":
            value = parseInt(token.text);
            if (isNaN(value)) {
              this._editingData.H = event.key === 'ArrowUp' ? 0 : 23;
            } else {
              this._editingData.H = (value + (event.key === 'ArrowUp' ? 1 : 23)) % 24;
            }
            newTokenText = (0, _utils.zeroPadding)(this._editingData.H, token.ident.length);
            token.replace(newTokenText, true);
            break;
          case "hh":
          case 'h':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this._editingData.h = event.key === 'ArrowUp' ? 1 : 12;
            } else {
              this._editingData.h = 1 + (value + (event.key === 'ArrowUp' ? 0 : 10)) % 12;
            }
            newTokenText = this._editingData.h + '';
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
          case "mm":
          case 'm':
            value = parseInt(token.text);
            if (isNaN(value)) {
              this._editingData.m = event.key === 'ArrowUp' ? 0 : 59;
            } else {
              this._editingData.m = (value + (event.key === 'ArrowUp' ? 1 : 59)) % 60;
            }
            newTokenText = this._editingData.m + '';
            while (newTokenText.length < token.ident.length) {
              newTokenText = '0' + newTokenText;
            }
            token.replace(newTokenText, true);
            break;
          case 'a':
            value = token.text;
            this._editingData.a = value === 'PM' ? "AM" : "PM";
            newTokenText = this._editingData.a;
            token.replace(newTokenText, true);
            break;
        }
        break;
    }
  } else if (event.key === "Delete" || event.key === 'Backspace') {
    event.preventDefault();
    if (endToken.idx !== token.idx) {
      if (this.notNull) {
        this.$text.value = (0, _datetime.formatDateTime)((0, _datetime.beginOfDay)(new Date()), this.format);
      } else {
        this.$text.value = this._format;
      }
      this.$text.select();
    } else {
      if (this.notNull) {
        token.replace(token.ident === 'a' ? 'AM' : (0, _utils.zeroPadding)(token.ident === 'hh' || token.ident === 'h' ? 12 : 0, token.ident.length), true);
      } else {
        token.replace(token.ident, true);
      }
      if (event.key === "Delete") this._editNextToken();else this._editPrevToken();
    }
  } else if (event.key === "Enter" || event.key === 'Tab') {
    this._correctingInput();
    this._loadValueFromInput();
    this._notifyIfChange(event);
  } else if (event.ctrlKey) {
    switch (event.key) {
      case 'a':
      case 'A':
        break;
      case 'c':
      case 'C':
        break;
      case 'x':
      case 'X':
        this.domSignal.once('clear_value', function () {
          this.$text.value = this._format;
          this.$text.select();
        }.bind(this));
        this.domSignal.emit('clear_value');
        break;
      default:
        event.preventDefault();
    }
  } else if (event.key.match(/^[0-9]$/g)) {
    event.preventDefault();
    var dVal = parseInt(event.key);
    if (this._editingData.state === STATE_NEW) {
      switch (token.ident) {
        case 'm':
        case 'mm':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          if (dVal > 5) {
            this._editNextToken();
          }
          break;
        case 'h':
        case 'hh':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          if (dVal > 1) {
            this._editNextToken();
          }
          break;
        case 'H':
        case 'HH':
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editingData.state = STATE_EDITED;
          if (dVal > 2) {
            this._editNextToken();
          }
          break;
      }
    } else {
      switch (token.ident) {
        case 'm':
        case 'mm':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(0, Math.min(59, dVal));
          this._editingData.m = dVal;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editNextToken();
          break;
        case 'h':
        case 'hh':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(1, Math.min(12, dVal));
          this._editingData.h = dVal;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editNextToken();
          break;
        case 'H':
        case 'HH':
          dVal = (parseInt(token.text.split('').pop()) || 0) * 10 + dVal;
          dVal = Math.max(0, Math.min(23, dVal));
          this._editingData.H = dVal;
          token.replace((0, _utils.zeroPadding)(dVal, token.ident.length), true);
          this._editNextToken();
          break;
      }
    }
  } else if (event.key.match(/^[aApPSCsc]$/) && token.ident === 'a') {
    event.preventDefault();
    if (event.key.match(/^[aAsS]$/)) {
      token.replace('AM', true);
      this._editingData.a = "AM";
    } else {
      token.replace('PM', true);
      this._editingData.a = "PM";
    }
    this._editNextToken();
  } else {
    event.preventDefault();
  }
};
TimeInput.prototype.share = {
  $picker: null,
  $holdingInput: null,
  $follower: null,
  $closeBtn: null
};
TimeInput.prototype._preparePicker = function () {
  if (this.share.$picker) return;
  this.share.$picker = _({
    tag: _ChromeTimePicker["default"].tag,
    "class": ['as-time-input-picker']
  });
  this.share.$follower = _({
    tag: 'follower',
    "class": ['as-time-input-follower', 'as-dropdown-box-common-style'],
    child: [this.share.$picker, {
      "class": 'as-dropdown-box-footer',
      child: [{
        "class": 'as-dropdown-box-footer-right',
        child: ['<a data-ml-key="txt_close" class="as-select-list-box-close-btn"></a>']
      }]
    }]
  });
};
TimeInput.prototype._attachPicker = function () {
  this._preparePicker();
  if (this.share.$holdingInput) this.share.$holdingInput._releasePicker();
  this.share.$holdingInput = this;
  this.share.$follower.addTo(document.body);
  this.share.$follower.followTarget = this;
  this.share.$follower.sponsorElement = this;
  this.share.$follower.addStyle('visibility', 'hidden');
  this.share.$picker.hour = this.hour || 0;
  this.share.$picker.minute = this.minute || 0;
  this.share.$picker.s24 = this.s24;
  this.share.$picker.min = this.min;
  this.share.$picker.domSignal.emit('request_scroll_into_selected');
  this.$clockBtn.off('click', this.eventHandler.clickClockBtn);
  this.share.$picker.on('change', this.eventHandler.pickerChange);
  setTimeout(function () {
    document.addEventListener('click', this.eventHandler.clickOut);
    this.share.$follower.removeStyle('visibility');
  }.bind(this), 5);
};
TimeInput.prototype._releasePicker = function () {
  if (this.share.$holdingInput !== this) return;
  // this.share.$calendar.off('pick', this.eventHandler.calendarPick);
  this.share.$follower.remove();
  document.removeEventListener('click', this.eventHandler.clickOut);
  this.share.$picker.off('change', this.eventHandler.pickerChange);
  setTimeout(function () {
    this.$clockBtn.on('click', this.eventHandler.clickClockBtn);
  }.bind(this), 5);
  this.share.$holdingInput = null;
};
_ACore["default"].install(TimeInput);
var _default = TimeInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.isTouchDevice = exports["default"] = void 0;
__webpack_require__(22053);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Svg = _interopRequireDefault(__webpack_require__(98315));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _datetime = __webpack_require__(58286);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _NumberSpanInput = _interopRequireDefault(__webpack_require__(94471));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
//todo: add this to absol
var isTouchDevice = _BrowserDetector["default"].hasTouch && !_BrowserDetector["default"].os.type.match(/windows|X11|Ubuntu|Linux/);
//todo: re select text after click
exports.isTouchDevice = isTouchDevice;
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var $g = _Svg["default"].ShareInstance.$;
var _g = _Svg["default"].ShareInstance._;
function TimePicker() {
  this._hour = 0;
  this._minute = 0;
  this._lastDayOffset = 0;
  this._state = 'none';
  this._mode = 'CLOCK';
  this._latBound = {
    width: 0,
    height: 0
  };
  var thisPicker = this;
  if (isTouchDevice) this.addClass('ac-time-picker-touch');
  this.$attachook = _('attachhook').addTo(this).on('error', function () {
    _Dom["default"].addToResizeSystem(this);
    this.requestUpdateSize();
    thisPicker.addStyle('font-size', thisPicker.getComputedStyleValue('font-size'));
  });
  this.$attachook.requestUpdateSize = this.updateSize.bind(this);
  /***
   *
   * @type {NumberSpanInput}
   */
  this.$hour = $('.ac-time-picker-hour', this).on({
    focus: this.eventHandler.focusHour,
    keydown: this.eventHandler.keydownHour,
    blur: this.eventHandler.blurHour
  });
  /***
   *
   * @type {NumberSpanInput}
   */
  this.$minute = $('.ac-time-picker-minute', this).on({
    keydown: this.eventHandler.keydownMinute,
    focus: this.eventHandler.focusMinute,
    blur: this.eventHandler.blurMinute
  });
  this.$hourInput = $('.ac-time-picker-hour-input', this).on({
    click: this.eventHandler.clickHourInput,
    keydown: this.eventHandler.keydownHourInput,
    blur: this.eventHandler.blurHourInput
  });
  this.$minuteInput = $('.ac-time-picker-minute-input', this).on({
    click: this.eventHandler.clickMinuteInput,
    keydown: this.eventHandler.keydownMinuteInput,
    blur: this.eventHandler.blurMinuteInput
  });

  //only support if is none touch device
  if (isTouchDevice) {
    this.$hour.readOnly = true;
    this.$hour.on('click', this._editHourState.bind(this));
    this.$minute.readOnly = true;
    this.$minute.on('click', this._editMinuteState.bind(this));
  }
  this.$clock = $g('.ac-time-picker-clock', this).on(isTouchDevice ? 'touchstart' : 'mousedown', this.eventHandler.mousedownClock);
  this._clockWidth = 400;
  this._clockHeight = 400;
  this._clockRadius = 150;
  this._clockRadiusInner = 100;
  this.$clockContent = $g('.ac-time-picker-clock-content', this);
  this.$clockHourCtn = $g('.ac-time-picker-clock-hour-ctn', this);
  this.$clockMinuteCtn = $g('.ac-time-picker-clock-minute-ctn', this);
  this.$hourNumbers = Array(24).fill(0).map(function (u, i) {
    var h = i;
    if (h == 0) h = 12;else if (h == 12) h = '00';
    return _g({
      tag: 'text',
      attr: {
        'text-anchor': 'middle'
      },
      "class": 'ac-time-picker-clock-hour-' + (i < 12 ? 'am' : 'pm'),
      child: {
        text: h + ''
      }
    }).addTo(thisPicker.$clockHourCtn);
  });
  this.$minuteNumbers = Array(12).fill(0).map(function (u, i) {
    return _g({
      tag: 'text',
      attr: {
        'text-anchor': 'middle'
      },
      "class": 'ac-time-picker-clock-minute',
      child: {
        text: i * 5 + ''
      }
    }).addTo(thisPicker.$clockMinuteCtn);
  });
  this.$selectCtn = $g('.ac-time-picker-clock-select-ctn', this);
  this.$clockCenter = _g({
    tag: 'circle',
    "class": 'ac-time-picker-clock-center',
    attr: {
      cx: "0",
      cy: '0'
    }
  }).addTo(this.$selectCtn);
  this.$clockSelectLine = _g({
    tag: 'path',
    "class": 'ac-time-picker-clock-select-line'
  }).addTo(this.$selectCtn);
  this.$clockSelectCicle = _g({
    tag: 'circle',
    "class": 'ac-time-picker-clock-select-circle',
    attr: {
      cx: 0,
      cy: 0
    }
  }).addTo(this.$selectCtn);
  this.$clockSelectCenter = _g({
    tag: 'circle',
    "class": 'ac-time-picker-clock-select-center'
  }).addTo(this.$selectCtn);
  this.$finishBtn = $('.ac-time-picker-finish-btn', this).on('click', this.finishSelect.bind(this));
  this.$cancelBtn = $('.ac-time-picker-cancel-btn', this).on('click', this.cancelSelect.bind(this));
  this.$keyboardBtn = $('.ac-time-picker-keyboard-btn', this).on('click', this.timeMode.bind(this));
  this.$clockBtn = $('.ac-time-picker-clock-btn', this).on('click', this.clockMode.bind(this));
}
;
TimePicker.prototype.updateSize = function () {
  // var 
  this._fontSize = this.getFontSize();
  var cBound = this.$clock.getBoundingClientRect();
  this._clockWidth = cBound.width;
  this._clockHeight = cBound.height;
  this.$clock.attr({
    width: this._clockWidth,
    height: this._clockHeight,
    viewBox: '0 0 ' + this._clockWidth + ' ' + this._clockHeight
  });
  this.$clockContent.attr('transform', 'translate(' + this._clockWidth / 2 + ',' + this._clockHeight / 2 + ')');
  var clockRadius = this._clockWidth / 2 - this._fontSize;
  var clockRadiusInner = clockRadius - this._fontSize * 1.5;
  this._clockRadius = clockRadius;
  this._clockRadiusInner = clockRadiusInner;
  this.$clockCenter.attr('r', this._fontSize / 5);
  this.$clockSelectCicle.attr({
    r: this._fontSize * 0.7,
    cx: clockRadius
  });
  this.$clockSelectCenter.attr({
    r: this._fontSize / 10,
    cx: clockRadius
  });
  this.$hourNumbers.forEach(function (elt, i) {
    var angle = Math.PI * (i - 3) / 6;
    var r = i < 12 ? clockRadius : clockRadiusInner;
    var box = elt.getBBox();
    var x = r * Math.cos(angle);
    var y = r * Math.sin(angle) + box.height / 2;
    elt.attr({
      x: x,
      y: y
    });
  });
  this.$minuteNumbers.forEach(function (elt, i) {
    var angle = Math.PI * (i - 3) / 6;
    var box = elt.getBBox();
    var x = clockRadius * Math.cos(angle);
    var y = clockRadius * Math.sin(angle) + box.height / 3;
    elt.attr({
      x: x,
      y: y
    });
  });
  this.updateSelectPosition();
  this.notifySizeChange();
};
TimePicker.prototype.updateSelectPosition = function () {
  var angle, radius;
  if (this._state == "EDIT_MINUTE") {
    angle = Math.PI * (this._minute - 15) / 30;
    radius = this._clockRadius;
  } else if (this._state == "EDIT_HOUR") {
    angle = Math.PI * (this._hour - 3) / 6;
    if (this._hour > 0 && this._hour <= 12) {
      radius = this._clockRadius;
    } else {
      radius = this._clockRadiusInner;
    }
  } else {
    return;
  }
  this._drawSelect(radius, angle);
};
TimePicker.prototype.editHour = function () {
  this.clockMode();
  if (this.$hour.readOnly) {
    this._editHourState();
  } else {
    this.$hour.focus();
  }
};
TimePicker.prototype._drawSelect = function (radius, angle) {
  var x = radius * Math.cos(angle);
  var y = radius * Math.sin(angle);
  this.$clockSelectCicle.attr({
    cx: x,
    cy: y
  });
  this.$clockSelectCenter.attr({
    cx: x,
    cy: y
  });
  this.$clockSelectLine.attr('d', 'M0,0L' + x + ',' + y);
};
TimePicker.prototype.notifyChange = function (force) {
  if (this._lastDayOffset != this.dayOffset || force) {
    this.emit('change', {
      target: this,
      hour: this.hour,
      minute: this.minute,
      dayOffset: this.dayOffset,
      name: 'change'
    }, this);
    this._lastDayOffset = this.dayOffset;
  }
};
TimePicker.prototype.notifySizeChange = function () {
  var bound = this.getBoundingClientRect();
  if (this._latBound.width != bound.width || this._latBound.height != bound.height) {
    this._latBound.width = bound.width;
    this._latBound.height = bound.height;
    this.emit('sizechange', {
      name: 'sizechange',
      bound: bound,
      target: this
    }, this);
  }
};
TimePicker.tag = 'TimePicker';
TimePicker.render = function () {
  return _({
    extendEvent: ['change', 'finish', 'cancel', 'sizechange'],
    "class": ['ac-time-picker', 'ac-time-picker-clock-mode'],
    //clock mode is default
    child: [{
      "class": 'ac-time-picker-set-clock',
      child: [{
        "class": 'ac-time-picker-set-clock-header',
        child: [{
          tag: 'numberspaninput',
          "class": 'ac-time-picker-hour',
          props: {
            value: 0,
            zeroInt: 2
          }
        }, {
          tag: 'span',
          text: ':'
        }, {
          tag: 'numberspaninput',
          "class": 'ac-time-picker-minute',
          props: {
            value: 0,
            zeroInt: 2
          }
        }]
      }, _g({
        tag: 'svg',
        "class": 'ac-time-picker-clock',
        child: [{
          "class": 'ac-time-picker-clock-content',
          child: ['.ac-time-picker-clock-select-ctn', '.ac-time-picker-clock-hour-ctn', '.ac-time-picker-clock-minute-ctn']
        }]
      })]
    }, {
      "class": 'ac-time-picker-set-time',
      child: [{
        "class": 'ac-time-picker-set-time-header',
        child: {
          text: 'Set time'
        }
      }, {
        "class": 'ac-time-picker-set-time-label',
        child: {
          text: 'Type in time'
        }
      }, {
        "class": 'ac-time-picker-set-time-input-group',
        child: [{
          "class": 'ac-time-picker-set-time-input-hm',
          child: [{
            tag: 'input',
            "class": 'ac-time-picker-hour-input',
            attr: {
              type: 'number',
              placeHolder: '00',
              tabindex: '2'
            }
          }, {
            tag: 'span',
            child: {
              text: ':'
            }
          }, {
            tag: 'input',
            "class": 'ac-time-picker-minute-input',
            attr: {
              type: 'number',
              placeHolder: '00',
              tabindex: '3'
            }
          }]
        }, {
          "class": 'ac-time-picker-set-time-input-label-hm',
          child: [{
            tag: 'span',
            child: {
              text: 'hour'
            }
          }, {
            tag: 'span',
            style: {
              visibility: 'hidden'
            },
            child: {
              text: ':'
            }
          }, {
            tag: 'span',
            child: {
              text: 'minute'
            }
          }]
        }]
      }]
    }, {
      "class": 'ac-time-picker-footer',
      child: [{
        tag: 'button',
        "class": 'ac-time-picker-keyboard-btn',
        child: 'span.mdi.mdi-keyboard-outline'
      }, {
        tag: 'button',
        "class": 'ac-time-picker-clock-btn',
        child: 'span.mdi.mdi-clock-outline'
      }, {
        "class": 'ac-time-picker-footer-right',
        child: [{
          tag: 'button',
          "class": 'ac-time-picker-cancel-btn',
          attr: {
            tabindex: '4'
          },
          child: {
            text: 'CANCEL'
          }
        }, {
          tag: 'button',
          attr: {
            tabindex: '4'
          },
          "class": 'ac-time-picker-finish-btn',
          child: {
            text: 'OK'
          }
        }]
      }]
    }]
  });
};
TimePicker.prototype.clockMode = function () {
  if (this._mode == "CLOCK") return;
  this._mode = 'CLOCK';
  this.removeClass('ac-time-picker-time-mode').addClass('ac-time-picker-clock-mode');
  this.$hour.value = this._hour < 10 ? '0' + this._hour : this._hour;
  this.$minute.value = this._minute < 10 ? '0' + this._minute : this._minute;
  this._editHourState();
  this.updateSize();
  this._showSelectHour(this._hour);
};
TimePicker.prototype.timeMode = function () {
  if (this._mode == "TIME") return;
  this._mode = 'TIME';
  this.addClass('ac-time-picker-time-mode').removeClass('ac-time-picker-clock-mode');
  this.$hourInput.value = this._hour < 10 ? '0' + this._hour : this._hour;
  this.$minuteInput.value = this._minute < 10 ? '0' + this._minute : this._minute;
  this.editHourInput();
  this.updateSize();
};
TimePicker.prototype._editHourState = function () {
  this._state = "EDIT_HOUR";
  this._preHour = this._hour;
  this.removeClass('ac-time-picker-edit-minute').addClass('ac-time-picker-edit-hour').removeClass('ac-time-picker-edit-hour-input').removeClass('ac-time-picker-edit-minute-input');
  this.updateSize();
};
TimePicker.prototype._editMinuteState = function () {
  this._state = "EDIT_MINUTE";
  this._preMinute = this._minute;
  this.addClass('ac-time-picker-edit-minute').removeClass('ac-time-picker-edit-hour').removeClass('ac-time-picker-edit-hour-input').removeClass('ac-time-picker-edit-minute-input');
  this.updateSize();
};
TimePicker.prototype.editHourInput = function () {
  var thisPicker = this;
  this._state = "EDIT_HOUR_INPUT";
  this._preHour = this._hour;
  this.removeClass('ac-time-picker-edit-minute').removeClass('ac-time-picker-edit-hour').addClass('ac-time-picker-edit-hour-input').removeClass('ac-time-picker-edit-minute-input');
  this.updateSize();
  setTimeout(function () {
    thisPicker.$hourInput.focus();
    thisPicker.$hourInput.select();
  }, 10);
};
TimePicker.prototype.editMinuteInput = function () {
  var thisPicker = this;
  this._state = "EDIT_MINUTE_INPUT";
  this._preMinute = this._minute;
  this.removeClass('ac-time-picker-edit-minute').removeClass('ac-time-picker-edit-hour').removeClass('ac-time-picker-edit-hour-input').addClass('ac-time-picker-edit-minute-input');
  this.updateSize();
  setTimeout(function () {
    thisPicker.$minuteInput.focus();
    thisPicker.$minuteInput.select();
  }, 1);
};
TimePicker.prototype.finishSelect = function () {
  this.emit('finish', {
    target: this,
    hour: this.hour,
    minute: this.minute,
    dayOffset: this.dayOffset,
    name: 'finish'
  }, this);
};
TimePicker.prototype.cancelSelect = function () {
  this.emit('cancel', {
    target: this,
    name: 'cancel'
  }, this);
};
TimePicker.eventHandler = {};
TimePicker.eventHandler.focusHour = function () {
  this._editHourState();
  this.$hour.selectAll();
};
TimePicker.eventHandler.blurHour = function () {
  var newText = this.$hour.value;
  var hour = parseFloat(newText) || 0;
  if (hour < 0 || hour >= 24) hour = this._preHour;
  this.$hour.value = hour < 10 ? '0' + hour : hour;
  this._hour = hour;
  this._showSelectHour(hour);
  this.notifyChange();
};
TimePicker.eventHandler.focusMinute = function () {
  this._editMinuteState();
  this.$minute.selectAll();
};
TimePicker.eventHandler.blurMinute = function () {
  var newText = this.$minute.innerHTML;
  var minute = parseFloat(newText) || 0;
  if (minute < 0 || minute >= 60) minute = this._preMinute;
  this.$minute.value = minute < 10 ? '0' + minute : minute;
  this._minute = minute;
  this._showSelectByMinuteText();
  this.notifyChange();
};
TimePicker.eventHandler.clickHourInput = function () {
  if (this._state != 'EDIT_HOUR') this.editHourInput();else {
    this.$hourInput.focus();
    this.$hourInput.select();
  }
};
TimePicker.eventHandler.clickMinuteInput = function () {
  if (this._state != 'EDIT_MINUTE_INPUT') this.editMinuteInput();else {
    this.$minuteInput.focus();
    this.$minuteInput.select();
  }
};
TimePicker.eventHandler.blurHourInput = function () {
  var hour = parseFloat(this.$hourInput.value) || 0;
  if (hour < 0 || hour >= 24) hour = this._preHour;
  this.hour = hour;
};
TimePicker.eventHandler.blurMinuteInput = function () {
  var minute = parseFloat(this.$minuteInput.value) || 0;
  if (minute < 0 || minute >= 60) minute = this._preMinute;
  this.minute = minute;
};
TimePicker.property = {};
TimePicker.property.hour = {
  set: function set(value) {
    value = value % 24 || 0;
    this._hour = value;
    var text = (value < 10 ? '0' : '') + value + '';
    this.$hour.clearChild().addChild(_({
      text: text
    }));
    this.$hourInput.value = text;
    this.updateSelectPosition();
  },
  get: function get() {
    return this._hour;
  }
};
TimePicker.property.minute = {
  set: function set(value) {
    value = value % 60 || 0;
    this._minute = value;
    var text = (value < 10 ? '0' : '') + value + '';
    this.$minute.value = text;
    this.$minuteInput.value = text;
    this.updateSelectPosition();
  },
  get: function get() {
    return this._minute;
  }
};
TimePicker.property.dayOffset = {
  set: function set(value) {
    value = value || 0;
    if (value.getTime) value = value.getTime() - (0, _datetime.beginOfDay)(value).getTime();else {
      value = value % _datetime.MILLIS_PER_DAY;
    }
    this.hour = Math.floor(value / _datetime.MILLIS_PER_HOUR);
    this.minute = Math.floor(value % _datetime.MILLIS_PER_HOUR / _datetime.MILLIS_PER_MINUTE);
  },
  get: function get() {
    return this._hour * _datetime.MILLIS_PER_HOUR + this._minute * _datetime.MILLIS_PER_MINUTE;
  }
};
TimePicker.prototype._showSelectHour = function (hour) {
  var radius;
  var angle = Math.PI * (hour - 3) / 6;
  if (hour < 24 && hour > 12 || hour == 0) {
    radius = this._clockRadiusInner;
  } else if (hour <= 12) {
    radius = this._clockRadius;
  } else {
    return;
  }
  this._drawSelect(radius, angle);
};
TimePicker.prototype._showSelectByHourText = function () {
  var hour = parseFloat(this.$hour.innerHTML) || 0;
  if (hour < 0 || hour >= 24) return;
  this._showSelectHour(hour);
};
TimePicker.prototype._showSelectMinute = function (minute) {
  var angle = Math.PI * (minute - 15) / 30;
  this._drawSelect(this._clockRadius, angle);
};
TimePicker.prototype._showSelectByMinuteText = function () {
  var minute = parseFloat(this.$minute.innerHTML) || 0;
  if (minute < 0 || minute >= 60) return;
  this._showSelectMinute(minute);
};

/***
 *
 * @param {KeyboardEvent} event
 */
TimePicker.eventHandler.keydownHour = function (event) {
  var thisPicker = this;
  if (event.key == 'Enter' || event.key == 'Tab') {
    event.preventDefault();
    this.$hour.blur();
    this._editMinuteState();
    setTimeout(function () {
      thisPicker.$minute.focus();
      thisPicker.$minute.selectAll();
    }, 30);
  } else {
    setTimeout(function () {
      var newText = thisPicker.$hour.value;
      var hour = parseFloat(newText) || 0;
      if (hour < 0 || hour >= 24) hour = thisPicker._preHour;else {
        thisPicker._hour = hour;
        thisPicker._showSelectHour(hour);
      }
    }, 30);
  }
};
TimePicker.eventHandler.keydownMinute = function (event) {
  var thisPicker = this;
  if (event.key == 'Enter') {
    this.$minute.blur();
    event.preventDefault();
    setTimeout(this.finishSelect.bind(this), 30);
  } else if (event.key == 'Tab') {
    this.$minute.selectNone();
    this.$finishBtn.focus();
    event.preventDefault();
  } else {
    setTimeout(function () {
      var newText = thisPicker.$minute.value;
      var minute = parseFloat(newText) || 0;
      if (minute < 0 || minute >= 60) minute = thisPicker._preMinute;else {
        thisPicker._minute = minute;
        thisPicker._showSelectMinute(minute);
      }
    }, 30);
  }
};
TimePicker.eventHandler.keydownHourInput = function (event) {
  var thisPicker = this;
  if (isTouchDevice && event.key == "Unidentified" || event.key && event.key.length == 1 && !event.ctrlKey && !event.altKey) {
    if (event.key.match(/[0-9]/)) {
      setTimeout(this.notifyChange.bind(this), 2);
    } else {
      event.preventDefault();
    }
  } else if (event.key == 'Enter') {
    event.preventDefault();
    this.$hourInput.blur();
    this.editMinuteInput();
  } else if (!event.key && !event.key.toLowerCase().match(/arrow|back/)) {
    var cText = this.$hourInput.value;
    setTimeout(function () {
      var newText = thisPicker.$hourInput.value;
      if (cText != newText) {
        var hour = parseFloat(newText) || 0;
        if (hour < 0 || hour >= 24) hour = thisPicker._preHour;
        thisPicker.hour = hour;
        thisPicker.$hourInput.blur();
        thisPicker.editMinuteInput();
        thisPicker.notifyChange();
      }
    }, 1);
  }
};
TimePicker.eventHandler.keydownMinuteInput = function (event) {
  var thisPicker = this;
  if (isTouchDevice && event.key == "Unidentified" || event.key.length == 1 && !event.ctrlKey && !event.altKey) {
    if (isTouchDevice && event.key == "Unidentified" || event.key.match(/[0-9]/)) {
      setTimeout(this.notifyChange.bind(this), 2);
    } else {
      event.preventDefault();
    }
  } else if (event.key == 'Enter') {
    this.$minute.blur();
    this.eventHandler.blurMinuteInput();
    event.preventDefault();
    setTimeout(this.finishSelect.bind(this), 100);
  } else if (event.key == "Backspace") {} else if (event.key != 'Enter') {
    var cText = this.$minuteInput.value;
    setTimeout(function () {
      var newText = thisPicker.$minuteInput.value;
      if (cText != newText) {
        var minute = parseFloat(newText) || 0;
        if (minute < 0 || minute >= 60) minute = thisPicker._preMinute;
        thisPicker.minute = minute;
        thisPicker.$minuteInput.focus();
        thisPicker.$minuteInput.select();
        thisPicker.notifyChange();
      }
    }, 1);
  }
};
TimePicker.eventHandler.dragOnClock = function (event) {
  event = event.changedTouches && event.changedTouches[0] || event;
  var cBound = this.$clock.getBoundingClientRect();
  var cx = (cBound.left + cBound.right) / 2;
  var cy = (cBound.top + cBound.bottom) / 2;
  var x = event.clientX - cx;
  var y = event.clientY - cy;
  var angle = Math.atan2(y, x);
  var radius = Math.sqrt(x * x + y * y);
  var index;
  if (this._state == "EDIT_HOUR") {
    angle += Math.PI * 2;
    index = Math.round(angle / (Math.PI / 6));
    var hour = (index + (12 + 3)) % 12;
    if (radius < (this._clockRadiusInner + this._clockRadius) / 2) {
      if (hour != 0) hour += 12;
    } else {
      if (hour == 0) hour = 12;
    }
    this._hour = hour;
    this._showSelectHour(hour);
    this.$hour.value = hour < 10 ? '0' + hour : hour;
    this.$hour.selectEnd();
  } else if (this._state == "EDIT_MINUTE") {
    radius = this._clockRadius;
    angle += Math.PI * 2;
    index = Math.round(angle / (Math.PI / 30));
    angle = index * (Math.PI / 30);
    var minute = (index + (60 + 15)) % 60;
    this._minute = minute;
    this.$minute.value = minute < 10 ? '0' + minute : minute;
    this._showSelectMinute(minute);
    this.$minute.selectEnd();
    this.notifyChange();
  } else {
    return;
  }
};
TimePicker.eventHandler.mousedownClock = function (event) {
  event.preventDefault();
  this.eventHandler.dragOnClock(event);
  document.body.addEventListener(isTouchDevice ? 'touchmove' : 'mousemove', this.eventHandler.mousemoveClock);
  document.body.addEventListener(isTouchDevice ? 'touchend' : 'mouseup', this.eventHandler.mousefinishClock);
  if (!isTouchDevice) document.body.addEventListener('mouseleave', this.eventHandler.mousefinishClock);
};
TimePicker.eventHandler.mousemoveClock = function (event) {
  event.preventDefault();
  this.eventHandler.dragOnClock(event);
};
TimePicker.eventHandler.mousefinishClock = function () {
  document.body.removeEventListener('mousemove', this.eventHandler.mousemoveClock);
  document.body.removeEventListener('mouseup', this.eventHandler.mousefinishClock);
  document.body.removeEventListener('mouseleave', this.eventHandler.mousefinishClock);
  if (this._state == 'EDIT_HOUR') {
    if (this.$minute.readOnly) {
      this._editMinuteState();
    } else {
      this.$minute.focus();
    }
  } else if (this._state == 'EDIT_MINUTE') {
    this.$minute.selectAll(); // refocus
  }
};

_ACore["default"].install('timepicker', TimePicker);
var _default = TimePicker;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _TimeInput = _interopRequireDefault(__webpack_require__(17019));
var _Time24Input = _interopRequireDefault(__webpack_require__(46255));
__webpack_require__(11554);
var _utils = __webpack_require__(84512);
var _datetime = __webpack_require__(58286);
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
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 _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); }
/***
 * @extends AElement
 * @constructor
 */
function TimeRange24Input() {
  var t = _LanguageSystem["default"].getText('txt_next_day');
  if (t) {
    t = '(' + t + ')';
    this.nextDateText = t;
  }

  /***
   *
   * @type {TimeInput}
   */
  this.$offset = (0, _ACore.$)(_TimeInput["default"].tag, this);
  this.$offset.on('change', this.eventHandler.offsetChange);
  /***
   *
   * @type {Time24Input}
   */
  this.$duration = (0, _ACore.$)(_Time24Input["default"].tag, this);
  this.$duration.on('change', this.eventHandler.durationChange);
  /***
   * @type {number}
   * @name dayOffset
   * @memberOf TimeRange24Input#
   */
  /***
   * @type {number}
   * @name duration
   * @memberOf TimeRange24Input#
   */
  /***
   * @type {string}
   * @name format
   * @memberOf TimeRange24Input#
   */
}

TimeRange24Input.tag = 'TimeRange24Input'.toLowerCase();
TimeRange24Input.render = function () {
  return (0, _ACore._)({
    extendEvent: ['change'],
    "class": 'as-time-range-24-input',
    child: [{
      tag: _TimeInput["default"].tag,
      props: {
        format: 'HH:mm'
      }
    }, _Time24Input["default"].tag]
  });
};
TimeRange24Input.prototype.nextDateText = '(Next day)';
TimeRange24Input.prototype.init = function (props) {
  props = props || {};
  var cpProps = Object.assign(props);
  if ('notNull' in props) {
    this.notNull = props.notNull;
    delete cpProps.notNull;
  }
  if ('dayOffset' in props) {
    this.dayOffset = props.dayOffset;
    delete cpProps.dayOffset;
  }
  Object.assign(this, cpProps);
};
TimeRange24Input.prototype._updateTextData = function () {
  var dayOffset = this.dayOffset;
  var duration = this.duration;
  var format = this.format;
  var bD = (0, _datetime.beginOfDay)(new Date()).getTime();
  var startD = new Date(bD + dayOffset);
  var text = (0, _datetime.formatDateTime)(startD, format || 'HH:mm');
  var endD = new Date(bD + dayOffset + duration);
  text += ' - ' + (0, _datetime.formatDateTime)(endD, format || 'HH:mm');
  if ((0, _datetime.compareDate)(endD, startD) > 0) {
    text += ' ' + this.nextDateText;
  }
  this.attr('data-text', text);
};
TimeRange24Input.property = {};
TimeRange24Input.property.notNull = {
  /***
   * @this TimeRange24Input
   * @param value
   */
  set: function set(value) {
    value = !!value;
    this.$offset.notNull = value;
    this.$duration.notNull = value;
    this._updateTextData();
  },
  get: function get() {
    return this.$offset.notNull;
  }
};
TimeRange24Input.property.disabled = {
  set: function set(value) {
    value = !!value;
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
    this.$offset.disabled = value;
    this.$duration.disabled = value;
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
TimeRange24Input.property.dayOffset = {
  set: function set(value) {
    var notNull = this.notNull;
    if ((0, _utils.isRealNumber)(value)) {
      value = (0, _utils.normalizeMinuteOfMillis)(value);
    } else {
      value = notNull ? 0 : null;
    }
    this.$offset.dayOffset = value;
    this.$duration.dayOffset = value;
    this._updateTextData();
  },
  get: function get() {
    return this.$offset.dayOffset;
  }
};
TimeRange24Input.property.duration = {
  /***
   * @this TimeRange24Input
   * @param value
   */
  set: function set(value) {
    var notNull = this.notNull;
    if ((0, _utils.isRealNumber)(value)) {
      value = Math.floor(Math.min(_datetime.MILLIS_PER_DAY, Math.max(0, value)));
      value = Math.floor(value / _datetime.MILLIS_PER_MINUTE) * _datetime.MILLIS_PER_MINUTE;
    } else {
      value = notNull ? 0 : null;
    }
    this.$duration.value = value;
    this._updateTextData();
  },
  get: function get() {
    return this.$duration.value;
  }
};
TimeRange24Input.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
      this.$offset.readOnly = true;
      this.$duration.readOnly = true;
    } else {
      this.removeClass('as-read-only');
      this.$offset.readOnly = false;
      this.$duration.readOnly = false;
    }
  },
  get: function get() {
    return this.containsClass('as-read-only');
  }
};
TimeRange24Input.property.value = {
  set: function set(value) {
    var rangeValue = null;
    if ((0, _utils.isRealNumber)(value)) rangeValue = {
      dayOffset: value,
      duration: 0
    };else if (!value) {} else if (_typeof(rangeValue) === "object") {
      if ((0, _utils.isRealNumber)(value.dayOffset)) {
        rangeValue = {
          dayOffset: value.dayOffset,
          duration: 0
        };
      } else {
        rangeValue = {
          dayOffset: 0,
          duration: 0
        };
      }
      if ((0, _utils.isRealNumber)(value.duration)) {
        rangeValue.duration = value.duration;
      }
    }
    if (rangeValue) {
      this.dayOffset = rangeValue.dayOffset;
      this.duration = rangeValue.duration;
    } else {
      this.dayOffset = null;
      this.duration = null;
    }
    return rangeValue;
  },
  get: function get() {
    if (!(0, _utils.isRealNumber)(this.dayOffset) && !(0, _utils.isRealNumber)(this.duration)) return null;
    return {
      dayOffset: this.dayOffset || 0,
      duration: this.duration || 0
    };
  }
};
TimeRange24Input.eventHandler = {};
TimeRange24Input.eventHandler.offsetChange = function (event) {
  var prevOffset = this.$duration.dayOffset;
  var preDuration = this.$duration.value;
  var prevEnd = prevOffset + preDuration;
  var newEnd;
  var newStart = this.$offset.dayOffset;
  if ((0, _utils.isRealNumber)(newStart)) {
    if ((0, _utils.isRealNumber)(prevEnd)) {
      newEnd = Math.max(newStart, Math.min(newStart + _datetime.MILLIS_PER_DAY - _datetime.MILLIS_PER_MINUTE, prevEnd));
    } else {
      newEnd = newStart;
    }
    this.$duration.dayOffset = newStart;
    this.$duration.value = newEnd - newStart;
  } else {
    this.$duration.dayOffset = 0;
    this.$duration.value = (0, _utils.isRealNumber)(prevEnd) ? Math.min(prevEnd, _datetime.MILLIS_PER_DAY - _datetime.MILLIS_PER_MINUTE) : null;
  }
  this._updateTextData();
  this.emit('change', {
    type: 'change',
    property: 'dayOffset',
    originalEvent: event.originalEvent || event.originEvent || event
  });
};
TimeRange24Input.eventHandler.durationChange = function (event) {
  if (!(0, _utils.isRealNumber)(this.$offset.dayOffset)) {
    this.$offset.dayOffset = this.$duration.dayOffset;
  }
  this._updateTextData();
  this.emit('change', {
    type: 'change',
    property: 'duration',
    originalEvent: event.originalEvent || event.originEvent || event
  });
};
_ACore["default"].install(TimeRange24Input);
var _default = TimeRange24Input;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(78093);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _datetime = __webpack_require__(58286);
var _TimeInput = _interopRequireDefault(__webpack_require__(17019));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _utils = __webpack_require__(84512);
var _Dom = __webpack_require__(64821);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function TimeSelectInput() {
  /***
   *
   * @type {SelectListBox}
   */
  this.$selectlistBox = _({
    tag: 'selectlistbox',
    props: {
      anchor: [1, 6, 2, 5]
    },
    on: {
      preupdateposition: this.eventHandler.preUpdateListPosition
    }
  });
  this.$text = $('.as-time-select-input-text', this).on('change', this.eventHandler.textChange).on('keyup', this.eventHandler.textKeyUp).on('keydown', this.eventHandler.textKeyDown);
  this.$toggleBtn = $('absol-selectmenu-btn', this);
  this.$selectlistBox.on('pressitem', this.eventHandler.selectListBoxPressItem);
  this.$selectlistBox.followTarget = this;
  this.$selectlistBox.sponsorElement = this;
  this._makeTimeList(0, _datetime.MILLIS_PER_DAY, _datetime.MILLIS_PER_MINUTE * 15);
  this._hour = 0;
  this._minute = 0;
  this._lastDayOffset = 0;
  this.dayOffset = 0;
  this.on('click', this.eventHandler.click);
}
TimeSelectInput.tag = 'TimeSelectInput'.toLowerCase();
TimeSelectInput.render = function () {
  return _({
    "class": 'as-time-select-input',
    extendEvent: 'change',
    attr: {
      tabindex: 0
    },
    child: [{
      tag: 'input',
      "class": 'as-time-select-input-text',
      attr: {
        type: 'text'
      }
    }, {
      tag: 'button',
      "class": 'absol-selectmenu-btn',
      child: ['dropdown-ico']
    }]
  });
};
TimeSelectInput.prototype._makeTimeList = function (start, end, step) {
  var items = [];
  for (var t = 0; t < end; t += step) {
    items.push({
      text: this._mil2Text(t),
      value: t
    });
  }
  this.$selectlistBox.items = items;
  this.addStyle('--list-min-width', this.$selectlistBox._estimateWidth / 14 + 'em');
};
TimeSelectInput.prototype.textRegx = /^((1[0-2])|[1-9]):([0-5][0-9]) (AM|PM)$/;
TimeSelectInput.prototype._mil2Text = function (mil) {
  if (mil < 0) {
    mil = mil + Math.ceil(-mil / _datetime.MILLIS_PER_DAY) * _datetime.MILLIS_PER_DAY;
  }
  var min = Math.floor(mil / _datetime.MILLIS_PER_MINUTE);
  var hour = Math.floor(min / 60) % 24;
  min = min % 60;
  return (hour % 12 == 0 ? 12 : hour % 12) + ':' + (min < 10 ? '0' : '') + min + ' ' + (hour < 12 ? 'AM' : 'PM');
};

/***
 *
 * @param {string} s
 * @private
 */
TimeSelectInput.prototype._text2mil = function (s) {
  s = s.toLowerCase();
  var nums = s.match(/[0-9]+/g) || [0, 0];
  while (nums.length < 2) {
    nums.push(0);
  }
  var h = (0, _utils.positiveIntMod)(parseInt(nums[0]), 24);
  var m = (0, _utils.positiveIntMod)(parseInt(nums[1]), 60);
  var pm = s.indexOf('pm') > 0 || h > 12;
  if (pm) {
    if (h < 12) h += 12;
  } else {
    if (h == 12) h = 0;
  }
  return h * _datetime.MILLIS_PER_HOUR + m * _datetime.MILLIS_PER_MINUTE;
};
TimeSelectInput.prototype.isActive = function () {
  return document.activeElement == this || _AElement["default"].prototype.isDescendantOf.call(document.activeElement, this) || _AElement["default"].prototype.isDescendantOf.call(document.activeElement, this.$selectlistBox);
};
TimeSelectInput.prototype._updateValueText = function () {
  this.$text.value = this._mil2Text(this.dayOffset);
};
TimeSelectInput.prototype.notifyCanBeChange = function () {
  var dayOffset = this.dayOffset;
  if (this._lastDayOffset !== dayOffset) {
    this.emit('change', {
      type: 'change',
      lastDayOffset: this._lastDayOffset,
      dayOffset: dayOffset,
      target: this
    }, this);
    this._lastDayOffset = dayOffset;
  }
};
TimeSelectInput.property = {};
TimeSelectInput.property.isFocus = {
  get: function get() {
    return this.hasClass('as-focus');
  },
  set: function set(value) {
    value = !!value;
    if (value && (this.disabled || this.readOnly)) return;
    if (this.isFocus == value) return;
    if (value) {
      this.addClass('as-focus');
    } else {
      this.removeClass('as-focus');
    }
    var thisI = this;
    if (value) {
      this.$selectlistBox.addTo(document.body);
      var bound = this.getBoundingClientRect();
      this.$selectlistBox.addStyle('min-width', bound.width + 'px');
      this.$selectlistBox.refollow();
      this.$selectlistBox.updatePosition();
      setTimeout(function () {
        if (thisI.enableSearch) {
          thisI.$selectlistBox.$searchInput.focus();
        }
        $(document.body).on('click', thisI.eventHandler.bodyClick);
      }, 1);
      this.$selectlistBox.viewListAtFirstSelected();
    } else {
      $(document.body).off('click', thisI.eventHandler.bodyClick);
      this.$selectlistBox.selfRemove();
      this.$selectlistBox.unfollow();
      this.$selectlistBox.resetSearchState();
    }
  }
};
TimeSelectInput.property.hour = {
  set: function set(value) {
    this._hour = (0, _utils.positiveIntMod)(value, 24);
    this._lastDayOffset = this.dayOffset;
    this._updateValueText();
  },
  get: function get() {
    return this._hour;
  }
};
TimeSelectInput.property.minute = {
  set: function set(value) {
    this._minute = (0, _utils.positiveIntMod)(value, 60);
    this._lastDayOffset = this.dayOffset;
    this._updateValueText();
  },
  get: function get() {
    return this._minute;
  }
};
TimeSelectInput.property.dayOffset = _TimeInput["default"].property.dayOffset;
TimeSelectInput.property.disabled = {
  set: function set(value) {
    this.$text.disabled = !!value;
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};

/***
 *
 * @type {{}|TimeSelectInput}
 */
TimeSelectInput.eventHandler = {};
TimeSelectInput.eventHandler.selectListBoxPressItem = function (event) {
  var lastValue = this._lastDayOffset;
  var value = event.value;
  var text = this._mil2Text(value);
  this.dayOffset = value;
  this.$selectlistBox.values = [value];
  this.focus();
  setTimeout(function () {
    this.isFocus = false;
  }.bind(this), 100);
  this._lastDayOffset = lastValue; // restore last value after set dayOffset
  this.notifyCanBeChange();
};
TimeSelectInput.eventHandler.preUpdateListPosition = function () {
  var bound = this.getBoundingClientRect();
  var screenSize = (0, _Dom.getScreenSize)();
  var availableTop = bound.top - 5;
  var availableBot = screenSize.height - 5 - bound.bottom;
  this.$selectlistBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px');
  var outBound = (0, _Dom.traceOutBoundingClientRect)(this);
  if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) {
    this.isFocus = false;
  }
};
TimeSelectInput.eventHandler.textChange = function () {
  setTimeout(function () {
    if (!this.textRegx.test(this.$text.value)) {
      this.$text.value = this._mil2Text(this.dayOffset);
    }
  }.bind(this), 10);
};

/***
 *
 * @param {KeyboardEvent} event
 */
TimeSelectInput.eventHandler.textKeyDown = function (event) {
  if (event.key == 'Enter') {
    this.isFocus = false;
    this.$text.blur();
    this.notifyCanBeChange();
  }
};
TimeSelectInput.eventHandler.textKeyUp = function (event) {
  var s = this.$text.value;
  var mil = this._text2mil(s);
  this._hour = Math.floor(mil / _datetime.MILLIS_PER_HOUR);
  this._minute = Math.floor(mil / _datetime.MILLIS_PER_MINUTE) % 60;
  this.$selectlistBox.values = [mil];
  this.$selectlistBox.viewListAtFirstSelected();
};
TimeSelectInput.eventHandler.click = function (event) {
  if (!_EventEmitter["default"].hitElement(this.$text, event)) {
    this.isFocus = !this.isFocus;
    setTimeout(function () {
      if (this.isFocus && this.$text != document.activeElement) {
        this.$text.select();
      }
    }.bind(this), 1);
  } else {
    if (!this.isFocus) this.isFocus = true;
  }
};
TimeSelectInput.eventHandler.bodyClick = function (event) {
  if (_EventEmitter["default"].hitElement(this, event) || _EventEmitter["default"].hitElement(this.$selectlistBox, event)) return;
  this.isFocus = false;
};
_ACore["default"].install(TimeSelectInput);
var _default = TimeSelectInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(15172);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _Element = _interopRequireDefault(__webpack_require__(55781));
var _VariantColors = _interopRequireDefault(__webpack_require__(97428));
var _utils = __webpack_require__(84512);
var _Dom = _interopRequireWildcard(__webpack_require__(64821));
var _Color = _interopRequireDefault(__webpack_require__(64974));
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 }; }
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var $ = _ACore["default"].$;
var _ = _ACore["default"]._;
var toastBg = {
  success: "#a4f3b6",
  info: "#67d5e7"
};
var toastTextColor = {
  success: '#454040',
  info: '#48433b'
};
(0, _utils.buildCss)(_VariantColors["default"].keys.reduce(function (ac, cr) {
  var color = _Color["default"].parse(toastBg[cr] || _VariantColors["default"].base[cr]);
  var textColor = color.getContrastYIQ();
  var headerColor = toastTextColor[cr] || _VariantColors["default"].mediumContract[cr] || color.getHightContrastColor();
  ac['.as-toast.as-variant-' + cr + ' .as-toast-variant-color'] = {
    'background-color': color.toString('hex6')
  };
  ac['.as-toast.as-variant-background.as-variant-' + cr] = {
    'background-color': color.toString('hex6'),
    color: textColor.toString('hex6')
  };
  ac['.as-toast.as-variant-background.as-variant-' + cr + ' .as-toast-header'] = {
    color: headerColor.toString('hex6')
  };
  return ac;
}, {}));

/***
 * @extends {AElement}
 * @constructor
 */
function Toast() {
  this._state = 0;
  this.$closeBtn = $('.as-toast-close-btn', this).on('click', this.disappear.bind(this));
  this.$title = $('.as-toast-title', this);
  this.$timeText = $('.as-toast-time-text', this);
  this.$body = $('.toast-body', this);
  this.$attachhook = $('attachhook', this).on('attached', this.appear.bind(this));
  _OOP["default"].drillProperty(this, this.$title.firstChild, 'htitle', 'data');
  this._message = null;
  this.$message = null;
  this.disappearTimeout = 0;
  this.htitle = 'Toast.htitle';
  this.timeText = new Date();
  this.message = null;
  this.variant = null;
}
Toast.tag = 'toast';
['addChild', 'removeChild', 'clearChild', 'addChildBefore', 'addChildAfter'].forEach(function (key) {
  Toast.prototype[key] = function () {
    this.$body[key].apply(this.$body, arguments);
  };
});
Toast.render = function () {
  return _({
    extendEvent: ['appeared', 'disappeared'],
    "class": ['as-toast', 'as-not-appeared'],
    child: [{
      "class": 'as-toast-header',
      child: ['.as-toast-variant-color', {
        tag: 'strong',
        "class": 'as-toast-title',
        child: {
          text: "Absol Js"
        }
      }, {
        tag: 'smal',
        "class": 'as-toast-time-text',
        child: {
          text: '20 mis ago'
        }
      }, {
        tag: 'button',
        "class": 'as-toast-close-btn',
        child: {
          tag: 'span',
          child: {
            text: '×'
          }
        }
      }]
    }, {
      "class": 'toast-body'
    }, 'attachhook']
  });
};
Toast.prototype.disappear = function () {
  if (this._state !== 2) return;
  this._state = 3;
  this.addClass('as-disappearing');
  setTimeout(function () {
    this.removeClass('as-disappeared').removeClass('as-disappearing').addClass('as-not-appeared');
    this.remove();
    this.emit('disappeared', {
      target: this,
      type: 'disappeared'
    }, this);
  }.bind(this), 500);
};
Toast.prototype.appear = function () {
  if (this._state !== 0) return;
  this._state = 1;
  this.addClass('as-appearing');
  setTimeout(function () {
    this.removeClass('as-not-appeared').addClass('as-appeared').removeClass('as-appearing');
    this._state = 2;
    this.emit('appeared', {
      target: this,
      type: 'appeared'
    }, this);
    if (this.disappearTimeout > 0 && this.disappearTimeout < Infinity) {
      setTimeout(this.disappear.bind(this), this.disappearTimeout);
    }
  }.bind(this), 100);
};
Toast.property = {};
Toast.property.variant = {
  set: function set(value) {
    if (this._variant && this._variant !== value) {
      this.removeClass('as-variant-' + this._variant);
    }
    if (_VariantColors["default"].has(value) || ['sticky-note'].indexOf(value) >= 0) {
      this._variant = value;
      this.addClass('as-variant-' + this._variant);
    }
  },
  get: function get() {
    return this._variant;
  }
};
Toast.property.message = {
  set: function set(value) {
    if (typeof value !== "string" || value.length === 0) {
      value = null;
    }
    if (value) {
      if (!this.$message) {
        this.$message = _({
          "class": 'as-toast-message',
          child: {
            text: ''
          }
        });
      }
      if (!this.$message.parentElement) this.$body.addChild(this.$message);
      this.$message.firstChild.data = value;
    } else {
      if (this.$message && this.$message.parentElement) {
        this.$message.remove();
      }
    }
    this._message = value;
  },
  get: function get() {
    return this._message;
  }
};
Toast.property.timeText = {
  set: function set(value) {
    if (value instanceof Date) {
      value = value.toLocaleTimeString();
    } else {
      value = value + '';
    }
    this.$timeText.firstChild.data = value;
  },
  get: function get() {
    return this.$timeText.firstChild.data;
  }
};
Toast.$toastList = _('.as-toast-list.as-se.as-bscroller');
Toast.$toastList4Pos = {
  se: Toast.$toastList,
  sw: _('.as-toast-list.as-sw.as-bscroller'),
  nw: _('.as-toast-list.as-nw.as-bscroller'),
  ne: _('.as-toast-list.as-ne.as-bscroller'),
  sc: _('.as-toast-list.as-sc.as-bscroller')
};
_Dom["default"].documentReady.then(function () {
  Toast.$toastList.addTo(document.body);
  Toast.$toastList4Pos.sw.addTo(document.body);
  Toast.$toastList4Pos.nw.addTo(document.body);
  Toast.$toastList4Pos.ne.addTo(document.body);
  Toast.$toastList4Pos.sc.addTo(document.body);
});

/***
 *
 * @param {AbsolConstructDescriptor|{}} aObject,
 * @param {"se"|"sw"|"ne"|"nw"|"sc" } [pos="se"]
 * @return {AElementNS|AElement|Text}
 */
Toast.make = function (aObject, pos) {
  if (!Toast.$toastList4Pos[pos]) pos = "se";
  aObject = aObject || {};
  if (_typeof(aObject) !== "object") throw new Error("param must be AbsolConstructDescriptor object!");
  if ((0, _Dom.isDomNode)(aObject)) {} else {
    aObject.tag = aObject.tag || 'toast';
  }
  var toastElt = _(aObject);
  var toastListElt = Toast.$toastList4Pos[pos] || Toast.$toastList;
  toastListElt.addChild(toastElt);
  return toastElt;
};
_ACore["default"].install(Toast);
var _default = Toast;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _SelectBoxItem = _interopRequireDefault(__webpack_require__(27233));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
__webpack_require__(12194);
var _utils = __webpack_require__(84512);
var _Vec = _interopRequireDefault(__webpack_require__(73316));
var _Text = __webpack_require__(35844);
var _Dom = __webpack_require__(64821);
var _EventEmitter = __webpack_require__(46833);
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; }
/***
 * @extends AElement
 * @constructor
 */
function TokenField() {
  this.on('click', this.eventHandler.click);
  this.$input = (0, _ACore.$)('input', this).on('keydown', this.eventHandler.inputKeyDown).on('focus', this.eventHandler.inputInteract).on('click', this.eventHandler.inputInteract).on('keydown', this.eventHandler.inputInteract);
  this.$attachhook = (0, _ACore.$)('attachhook', this).on('attached', function () {
    _ResizeSystem["default"].add(this);
    this.requestUpdateSize();
  });
  this.$attachhook.requestUpdateSize = this.updateSize.bind(this);

  /***
   *
   * @type {SelectListBox}
   */
  this.$selectlistBox = (0, _ACore._)({
    tag: 'selectlistbox',
    props: {
      anchor: [1, 6, 2, 5]
    },
    on: {
      preupdateposition: this.eventHandler.preUpdateListPosition
    }
  });
  this.$selectlistBox.on('pressitem', this.eventHandler.selectListBoxPressItem);
  this.$selectlistBox.sponsorElement = this;
  this.autocomplete = null;
  this.separator = ' ';
  this.placeHolder = '';
}
TokenField.tag = 'TokenField'.toLowerCase();
TokenField.render = function () {
  return (0, _ACore._)({
    "class": 'as-token-field',
    extendEvent: ['change'],
    child: [{
      tag: 'input',
      "class": 'as-token-field-input-text',
      attr: {
        type: 'text',
        tabindex: '1'
      }
    }, 'attachhook']
  });
};
TokenField.prototype._makeItem = function (text) {
  var itemElt = (0, _ACore._)({
    tag: _SelectBoxItem["default"].tag,
    "class": 'as-token-field-item',
    attr: {
      tabindex: 1
    },
    props: {
      data: {
        text: text,
        value: text
      }
    }
  });
  itemElt.on({
    keydown: this.eventHandler.itemKeyDown.bind(this, itemElt),
    close: this.eventHandler.itemClose.bind(this, itemElt),
    focus: this.eventHandler.itemFocus.bind(this, itemElt)
  });
  return itemElt;
};
TokenField.prototype._appendItem = function (itemElt) {
  this.addChildBefore(itemElt, this.$input);
};
TokenField.prototype._updateInputWidth = function () {
  var lastItem = this.findChildBefore(this.$input);
  if (lastItem) {
    var lastItemBound = lastItem.getBoundingClientRect();
    var bound = this.getBoundingClientRect();
    var aRight = bound.right - 4 - lastItemBound.right;
    if (aRight > 60) {
      this.$input.addStyle('width', aRight + 'px');
    } else {
      this.$input.addStyle('width', '100%');
    }
  } else {
    this.$input.addStyle('width', '100%');
  }
};
TokenField.prototype._isSeparatorKey = function (key) {
  if (key === 'Enter') return true;
  if (this.separator === ' ') return key === ' ';
  if (this.separator === '\n') return key === 'Enter';
  if (this.separator === '\t') return key === 'Tab';
  return key === this.separator;
};
TokenField.prototype.updateSize = function () {
  this._updateInputWidth();
};
TokenField.prototype._notifyChange = function (data) {
  this.emit('change', Object.assign({
    type: 'change',
    target: this
  }, data), this);
};
TokenField.prototype._searchInList = function () {
  if (this._searchTimeout > 0) {
    clearTimeout(this._searchTimeout);
  }
  this._searchTimeout = setTimeout(function () {
    var text = this.$input.value;
    if (this.$selectlistBox.isDescendantOf(document.body)) {
      this.$selectlistBox.$searchInput.value = text;
      this.$selectlistBox.eventHandler.searchModify();
      if (this.$selectlistBox._displayItems.length === 0) {
        this.$selectlistBox.addStyle('visibility', 'hidden');
      } else {
        this.$selectlistBox.removeStyle('visibility');
      }
    }
  }.bind(this), 100);
};
TokenField.eventHandler = {};
TokenField.property = {};
TokenField.property.separator = {
  set: function set(value) {
    if (typeof value !== "string") value = ' ';
    this._separator = value;
  },
  get: function get() {
    return this._separator;
  }
};
TokenField.property.placeHolder = {
  set: function set(value) {
    this.$input.attr('placeholder', value || '');
  },
  get: function get() {
    return this.$input.attr('placeholder');
  }
};
TokenField.property.items = {
  set: function set(items) {
    items = items || [];
    while (this.firstChild && this.firstChild && this.firstChild.hasClass('as-token-field-item')) {
      this.firstChild.remove();
    }
    for (var i = 0; i < items.length; ++i) {
      this._appendItem(this._makeItem(items[i]));
    }
  },
  get: function get() {
    return Array.prototype.slice.call(this.childNodes).filter(function (elt) {
      return elt.hasClass && elt.hasClass('as-token-field-item');
    }).map(function (elt) {
      return elt.data.value;
    });
  }
};
TokenField.property.autocomplete = {
  set: function set(value) {
    this._autocomplete = value || null;
    if (this._autocomplete) {
      this.$selectlistBox.items = this._autocomplete.map(function (it) {
        return {
          value: it + '',
          text: it + ''
        };
      });
    } else {
      this.$selectlistBox.items = [];
    }
  },
  get: function get() {
    return this._autocomplete;
  }
};
TokenField.eventHandler.inputKeyDown = function (event) {
  if (this._isSeparatorKey(event.key)) {
    var text = this.$input.value;
    if (text.length > 0) {
      this.$input.value = '';
      var newItem = this._makeItem(text);
      this._appendItem(newItem);
      this.updateSize();
      this._notifyChange({
        action: 'add',
        item: text,
        itemElt: newItem
      });
      this.eventHandler.inputOut();
    }
    event.preventDefault();
  } else if (event.key.startsWith('Arrow') || event.key === 'Backspace') {
    if (this.$input.selectionStart === 0 && this.$input.selectionEnd === 0) {
      if (event.key === 'ArrowLeft' || event.key === 'Backspace') {
        event.preventDefault();
        var prevChild = this.findChildBefore(this.$input);
        if (prevChild) prevChild.focus();
      } else if (event.key === 'ArrowUp') {
        var item, itemBound;
        var inputBound = this.$input.getBoundingClientRect();
        var anchorPos = new _Vec["default"](inputBound.left + 5, inputBound.top + inputBound.height / 2);
        var minDis = Infinity;
        var dis;
        var aboveItem;
        for (var i = 0; i < this.childNodes.length; ++i) {
          item = this.childNodes[i];
          if (item.hasClass && item.hasClass('as-token-field-item')) {
            itemBound = item.getBoundingClientRect();
            if (itemBound.bottom < inputBound.top) {
              dis = new _Vec["default"](itemBound.left + itemBound.width / 2, itemBound.top + itemBound.height / 2).sub(anchorPos).abs();
              if (dis < minDis) {
                minDis = dis;
                aboveItem = item;
              }
            }
          }
        }
        if (aboveItem) {
          aboveItem.focus();
          event.preventDefault();
        }
      }
    } else {
      this._searchInList();
    }
  } else {
    this._searchInList();
  }
};
TokenField.eventHandler.inputInteract = function (event) {
  var lt = this._lastInteractTime;
  this._lastInteractTime = new Date().getTime();
  if (lt && this._lastInteractTime - lt < 100) {
    return;
  }
  if (this.$selectlistBox.isDescendantOf(document.body)) return;
  this.$selectlistBox.addTo(document.body);
  this.$selectlistBox.followTarget = this;
  this._searchInList();
  var bound = this.getBoundingClientRect();
  this.$selectlistBox.addStyle('min-width', bound.width + 'px');
  this.$selectlistBox.refollow();
  this.$selectlistBox.updatePosition();
  setTimeout(document.addEventListener.bind(document, 'click', this.eventHandler.inputOut), 100);
};
TokenField.eventHandler.inputOut = function (event) {
  if (event && ((0, _EventEmitter.hitElement)(this.$selectlistBox, event) || (0, _EventEmitter.hitElement)(this.$input, event))) return;
  document.removeEventListener('click', this.eventHandler.inputOut);
  this.$selectlistBox.selfRemove();
  this.$selectlistBox.followTarget = null;
  this._lastInteractTime = new Date().getTime();
};
TokenField.eventHandler.itemKeyDown = function (itemElt, event) {
  var nextElt;
  if (event.key === 'Delete' || event.key === 'Backspace') {
    if (event.key === 'Delete') {
      nextElt = this.findChildAfter(itemElt);
    } else {
      nextElt = this.findChildBefore(itemElt) || this.$input;
    }
    itemElt.remove();
    this._notifyChange({
      item: itemElt.data.value,
      action: 'remove',
      itemElt: itemElt
    });
    if (nextElt === this.$input) {
      this.$input.focus();
      (0, _Text.setCaretPosition)(this.$input, 0);
    } else {
      nextElt.focus();
    }
  } else if (event.key === 'ArrowLeft') {
    nextElt = this.findChildBefore(itemElt);
    if (nextElt) nextElt.focus();
  } else if (event.key === 'ArrowRight') {
    nextElt = this.findChildAfter(itemElt);
    if (nextElt === this.$input) {
      this.$input.focus();
      (0, _Text.setCaretPosition)(this.$input, 0);
    } else {
      nextElt.focus();
    }
  } else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
    var currentItemBound = itemElt.getBoundingClientRect();
    var center = new _Vec["default"](currentItemBound.left + currentItemBound.width / 2, currentItemBound.top + currentItemBound.height / 2);
    var childElt, itemBound, dis;
    var minDis = Infinity;
    var i;
    if (event.key === 'ArrowUp') {
      for (i = 0; i < this.childNodes.length; ++i) {
        childElt = this.childNodes[i];
        if (childElt.hasClass && childElt.hasClass('as-token-field-item') || childElt === this.$input) {
          itemBound = childElt.getBoundingClientRect();
          if (itemBound.bottom < currentItemBound.top) {
            dis = new _Vec["default"](itemBound.left + itemBound.width / 2, itemBound.top + itemBound.height / 2).sub(center).abs();
            if (dis < minDis) {
              minDis = dis;
              nextElt = childElt;
            }
          }
        }
      }
    } else {
      for (i = 0; i < this.childNodes.length; ++i) {
        childElt = this.childNodes[i];
        if (childElt.hasClass && childElt.hasClass('as-token-field-item') || childElt === this.$input) {
          itemBound = childElt.getBoundingClientRect();
          if (itemBound.top > currentItemBound.bottom) {
            dis = new _Vec["default"](itemBound.left + itemBound.width / 2, itemBound.top + itemBound.height / 2).sub(center).abs();
            if (dis < minDis) {
              minDis = dis;
              nextElt = childElt;
            }
          }
        }
      }
    }
    if (nextElt) {
      nextElt.focus();
    }
  }
};
TokenField.eventHandler.itemFocus = function (itemElt) {
  this.eventHandler.inputOut();
};
TokenField.eventHandler.itemClose = function (itemElt) {
  itemElt.remove();
  this._notifyChange({
    action: 'remove',
    item: itemElt.data.value,
    itemElt: itemElt
  });
  this.$input.focus();
};
TokenField.eventHandler.click = function (event) {
  if (event.target === this) this.$input.focus();
};
TokenField.eventHandler.preUpdateListPosition = function () {
  var bound = this.getBoundingClientRect();
  var screenSize = (0, _Dom.getScreenSize)();
  var availableTop = bound.top - 5;
  var availableBot = screenSize.height - 5 - bound.bottom;
  this.$selectlistBox.addStyle('--max-height', Math.max(availableBot, availableTop) + 'px');
  var outBound = (0, _Dom.traceOutBoundingClientRect)(this);
  if (bound.bottom < outBound.top || bound.top > outBound.bottom || bound.right < outBound.left || bound.left > outBound.right) {
    // this.isFocus = false;
    //
  }
};
TokenField.eventHandler.selectListBoxPressItem = function (event) {
  var _this = this;
  var text = event.data.value;
  var newItem = this._makeItem(text);
  this._appendItem(newItem);
  this.updateSize();
  this._notifyChange({
    action: 'add',
    item: text,
    itemElt: newItem
  });
  this.eventHandler.inputOut();
  this.$input.value = '';
  setTimeout(function () {
    _this.$input.focus();
  }, 30);
};
_ACore["default"].install(TokenField);
var _default = TokenField;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.updateTooltipPosition = updateTooltipPosition;
__webpack_require__(59613);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireWildcard(__webpack_require__(64821));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
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 }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends AElement
 * @constructor
 */
function ToolTip() {
  this.$content = $('.absol-tooltip-content', this);
  this.$arrow = $('.absol-tooltip-arrow', this);
}
ToolTip.tag = 'ToolTip'.toLowerCase();
ToolTip.render = function () {
  return _({
    "class": 'absol-tooltip',
    child: [{
      "class": 'absol-tooltip-content'
    }, '.absol-tooltip-arrow']
  });
};
['addChild', 'addChildBefore', 'addChildAfter', 'clearChild'].forEach(function (key) {
  ToolTip.prototype[key] = function () {
    return this.$content[key].apply(this.$content, arguments);
  };
});
_ACore["default"].install(ToolTip);
function updateTooltipPosition(toolTipClass) {
  var element = toolTipClass.$element;
  if (!element) return;
  var orientation = toolTipClass._orientation;
  var tBound = toolTipClass.$tooltip.$content.getBoundingClientRect();
  var ebound = element.getBoundingClientRect();
  var screenSize = (0, _Dom.getScreenSize)();
  var sMargin = Math.round(Math.min(5, screenSize.width / 100, screenSize.height));
  screenSize.width = Math.min(screenSize.width, document.body.getBoundingClientRect().width);
  var fontSize = toolTipClass.$tooltip.getFontSize();
  var dx = 0;
  var dy = 0;
  var arrowPos = null;
  var aHCenter = ebound.left + ebound.width / 2 > tBound.width / 2 && screenSize.width - ebound.left - ebound.width / 2 > tBound.width / 2;
  var aVCenter = ebound.top + ebound.height / 2 > tBound.height / 2 && screenSize.height - ebound.top - ebound.height / 2 > tBound.height / 2;
  var aTop = tBound.height < ebound.top - sMargin;
  var aBottom = tBound.height < screenSize.height - sMargin - ebound.bottom;
  var aRight = tBound.width < screenSize.width - sMargin - ebound.right;
  var aLeft = tBound.width < ebound.left - sMargin;
  var aHLeft = ebound.left + ebound.width / 2 - tBound.width / 2 < sMargin && ebound.left + ebound.width / 2 >= sMargin + fontSize / 2;
  var aHRight = ebound.left + ebound.width / 2 + tBound.width / 2 > screenSize.width - sMargin && ebound.left + ebound.width / 2 < screenSize.width - sMargin - fontSize / 2;
  var aVTop = ebound.top + ebound.width / 2 - tBound.height / 2 < sMargin && ebound.top + ebound.height / 2 >= sMargin + fontSize / 2;
  var aVBottom = ebound.top + ebound.width / 2 + tBound.height / 2 <= screenSize.height - sMargin && ebound.top + ebound.height / 2 > screenSize.height - sMargin - fontSize / 2;
  if (orientation === 'auto' && aHCenter) {
    if (aTop) {
      orientation = 'top';
    } else if (aBottom) {
      orientation = 'bottom';
    }
  }
  if (orientation === 'auto' && aVCenter) {
    if (aRight) {
      orientation = 'right';
    } else if (aLeft) {
      orientation = 'left';
    }
  }
  if ((orientation === 'auto' || orientation === 'top' || orientation === 'bottom') && aHLeft) {
    if (aTop || orientation === 'auto') orientation = "top";else if (aBottom || orientation === 'auto') orientation = 'bottom';
    if (aTop || aBottom) {
      dx += tBound.width / 2 - (ebound.left + ebound.width / 2) + sMargin;
      arrowPos = tBound.width / 2 - dx + 'px';
    }
  }
  if ((orientation === 'auto' || orientation === 'top' || orientation === 'bottom') && aHRight) {
    if (aTop || orientation === 'auto') orientation = "top";else if (aBottom || orientation === 'auto') orientation = 'bottom';
    if (aTop || aBottom) {
      dx -= tBound.width / 2 - (screenSize.width - (ebound.left + ebound.width / 2)) + sMargin;
      arrowPos = tBound.width / 2 - dx + 'px';
    }
  }
  if ((orientation === 'auto' || orientation === 'left' || orientation === 'right') && aVTop) {
    if (aLeft || orientation === 'auto') orientation = "left";else if (aRight || orientation === 'auto') {
      orientation = 'right';
    }
    if (aLeft || aRight) {
      dy += tBound.height / 2 - (ebound.top + ebound.height / 2) + sMargin;
      arrowPos = tBound.height / 2 - dy + 'px';
    }
  }
  if ((orientation === 'auto' || orientation === 'left' || orientation === 'right') && aVBottom) {
    if (aLeft || orientation === 'auto') orientation = "left";else if (aRight || orientation === 'auto') {
      orientation = 'right';
    }
    if (aLeft || aRight) {
      dy -= tBound.height / 2 - (screenSize.height - (ebound.top + ebound.height / 2)) + sMargin;
      arrowPos = tBound.height / 2 - dx + 'px';
    }
  }
  if (orientation === 'auto') {
    if (aRight) {
      if (aTop) {
        orientation = 'ne';
      } else if (aBottom) {
        orientation = 'se';
      }
    } else if (aLeft) {
      if (aTop) {
        orientation = 'nw';
      } else if (aBottom) {
        orientation = 'sw';
      }
    }
  }
  if (orientation === 'auto') orientation = "error";
  toolTipClass.$tooltip.removeClass('top').removeClass('left').removeClass('right').removeClass('bottom').removeClass('ne').removeClass('nw').removeClass('se').removeClass('sw').addClass(orientation);
  tBound = toolTipClass.$tooltip.getBoundingClientRect();
  if (orientation == 'top') {
    dy += ebound.top - tBound.height;
    dx += ebound.left + ebound.width / 2 - tBound.width / 2;
  } else if (orientation == 'left') {
    dy += ebound.top + ebound.height / 2 - tBound.height / 2;
    dx += ebound.left - tBound.width;
  } else if (orientation == 'right') {
    dy += ebound.top + ebound.height / 2 - tBound.height / 2;
    dx += ebound.right;
  } else if (orientation == 'bottom') {
    dy += ebound.bottom;
    dx += ebound.left + ebound.width / 2 - tBound.width / 2;
  } else if (orientation === 'ne') {
    dy += ebound.top - tBound.height;
    dx += ebound.right;
  } else if (orientation === 'nw') {
    dy += ebound.top - tBound.height;
    dx += ebound.left - tBound.width;
  } else if (orientation === 'se') {
    dy += ebound.bottom;
    dx += ebound.right;
  } else if (orientation === 'sw') {
    dy += ebound.bottom;
    dx += ebound.left - tBound.width;
  } else {
    throw new Error("Invalid orientation, orientation: ['left', 'right', 'top', 'bottom', 'auto', 'nw', 'ne', 'sw', 'se']");
  }
  if (arrowPos) {
    toolTipClass.$tooltip.addStyle('--tool-tip-arrow-pos', arrowPos);
  } else {
    toolTipClass.$tooltip.removeStyle('--tool-tip-arrow-pos');
  }
  toolTipClass.$holder.addStyle({
    top: dy + 'px',
    left: dx + 'px'
  });
}
ToolTip.$holder = _('.absol-tooltip-root-holder');
ToolTip.$tooltip = _('tooltip.top').addTo(ToolTip.$holder);
ToolTip.$element = undefined;
ToolTip.$content = undefined;
ToolTip._orientation = 'top';
ToolTip._session = Math.random() * 10000000000 >> 0;
ToolTip.updatePosition = function () {
  if (!ToolTip.$element) return;
  updateTooltipPosition(ToolTip);
};
ToolTip.$tooltip.$arrow.updateSize = ToolTip.updatePosition.bind(ToolTip);
ToolTip.show = function (element, content, orientation) {
  orientation = orientation || 'auto';
  if (typeof content == 'string') {
    content = _({
      tag: 'span',
      style: {
        'white-space': 'nowrap'
      },
      props: {
        innerHTML: content
      }
    });
  }
  $('', content, function (elt) {
    if (elt.tagName == "IMG" && elt.src) {
      _Dom["default"].waitImageLoaded(elt).then(ToolTip.updatePosition.bind(ToolTip));
    } else if (elt.sync) {
      elt.sync.then(ToolTip.updatePosition.bind(ToolTip));
    }
  });
  var currentSession = Math.random() * 10000000000 >> 0;
  ToolTip.$holder.addTo(document.body);
  _Dom["default"].addToResizeSystem(ToolTip.$tooltip.$arrow);
  ToolTip.$element = element;
  ToolTip._session = currentSession;
  ToolTip.$content = content;
  ToolTip._orientation = orientation;
  ToolTip.$tooltip.clearChild().addChild(content);
  ToolTip.$holder.removeStyle('visibility');
  ToolTip.$tooltip.removeClass('top').removeClass('left').removeClass('right').removeClass('bottom').removeClass('ne').removeClass('nw').removeClass('auto');
  ToolTip.$tooltip.addClass(orientation);
  ToolTip.updatePosition();
  return currentSession;
};
ToolTip.close = function (session) {
  if (session === true || session === this._session) {
    ToolTip.$holder.addStyle('visibility', 'hidden');
    ToolTip.$tooltip.clearChild();
    ToolTip.$holder.addStyle({
      top: false,
      left: false
    });
  }
};
ToolTip.closeTooltip = ToolTip.close;
ToolTip.showWhenClick = function (element, content, orientation) {
  var mSession = undefined;
  element.addEventListener('click', function () {
    if (mSession !== undefined) return;
    mSession = ToolTip.show(element, content, orientation);
    var finish = function finish(event) {
      if (!_EventEmitter["default"].hitElement(content, event)) {
        $(document.body).off('click', finish);
        ToolTip.closeTooltip(mSession);
        mSession = undefined;
      }
    };
    setTimeout(function () {
      $(document.body).on('click', finish);
    }, 100);
  });
};
var _default = ToolTip;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(5092);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
var _int = __webpack_require__(65909);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @extends Hanger
 * @constructor
 */
function TrackBar() {
  this.$bar = $('.absol-trackbar', this);
  this.$button = $('.absol-trackbar-button', this);
  this.$line = $('.absol-trackbar-line', this);
  this.on('predrag', this.eventHandler.predrag).on('drag', this.eventHandler.drag);
  this.leftValue = 0;
  this.rightValue = 1;
  this._dragValue = 0;
}
TrackBar.tag = 'trackbar';
TrackBar.render = function () {
  return _({
    tag: 'hanger',
    extendEvent: 'change',
    "class": 'absol-trackbar',
    child: [{
      "class": 'absol-trackbar-line',
      child: '.absol-trackbar-button'
    }, 'attachhook']
  });
};
TrackBar.prototype._updateValue = function () {
  var left = (0, _int.map)(this.value, this.leftValue, this.rightValue, 0, 100);
  this.$button.addStyle('left', left + '%');
};
TrackBar.eventHandler = {};
TrackBar.eventHandler.predrag = function (event) {
  if (event.target === this || this.readOnly) {
    event.cancel();
  } else {
    event.preventDefault();
    var lineBound = this.$line.getBoundingClientRect();
    var newValue = this.leftValue + (this.rightValue - this.leftValue) * (event.clientX - lineBound.left) / lineBound.width;
    newValue = Math.max(this.leftValue, Math.min(this.rightValue, newValue));
    if (newValue !== this.value) {
      this.value = newValue;
      event.trackbarValue = this.value;
      this._dragValue = this.value;
      this.emit('change', event);
    }
  }
};
TrackBar.eventHandler.drag = function (event) {
  var lineWidth = this.$line.getBoundingClientRect().width;
  var d = event.currentPoint.sub(event.startingPoint);
  var delta = d.x / lineWidth * (this.rightValue - this.leftValue);
  var newValue = Math.max(this.leftValue, Math.min(this.rightValue, this._dragValue + delta));
  if (newValue != this.value) {
    this.value = newValue;
    event.trackbarValue = this.value;
    this.emit('change', event);
  }
};
TrackBar.property = {};
TrackBar.property.value = {
  set: function set(value) {
    value = parseFloat(value + '');
    if (isNaN(value)) value = 0;
    this._value = value;
    this._updateValue();
  },
  get: function get() {
    return Math.max(this.leftValue, Math.min(this.rightValue, this._value));
  }
};
TrackBar.property.leftValue = {
  set: function set(value) {
    value = parseFloat(value + '');
    if (isNaN(value)) value = 0;
    this._leftValue = value;
    this._updateValue();
  },
  get: function get() {
    return this._leftValue || 0;
  }
};
TrackBar.property.rightValue = {
  set: function set(value) {
    value = parseFloat(value + '');
    if (isNaN(value)) value = 1;
    this._rightValue = value;
    this._updateValue();
  },
  get: function get() {
    return this._rightValue || 1;
  }
};
TrackBar.property.disabled = {
  get: function get() {
    return this.hasClass('as-disabled');
  },
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  }
};
TrackBar.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
_ACore["default"].install(TrackBar);
var _default = TrackBar;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(74231);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 *
 * @extends {AElement}
 * @constructor
 */
function TrackBarInput() {
  var thisTI = this;
  this.$trackbar = $('trackbar', this);
  this.$input = $('flexiconinput', this);
  absol.OOP.drillProperty(this, this.$input, ['unit', 'icon']);
  this.$trackbar.on('change', function () {
    thisTI.$input.value = thisTI.value + '';
    thisTI.emit('change', thisTI.value);
  });
  this.$input.on('keyup', this.eventHandler.inputChange);
  this.inputTextWidth = 2;
  this.valueFixed = undefined;
  return this;
}
TrackBarInput.tag = 'TrackBarInput'.toLowerCase();
TrackBarInput.render = function () {
  return _({
    "class": 'absol-trackbar-input',
    extendEvent: 'change',
    child: ['trackbar', 'flexiconinput']
  });
};
TrackBarInput.prototype.init = function (props) {
  props = props || {};
  props.leftValue = props.leftValue || 0;
  props.value = props.value || props.leftValue;
  Object.assign(this, props);
  this.value = props.value;
};
TrackBarInput.prototype._calInputTextWidth = function () {
  var l = Math.max(this.leftValue.toFixed(this.valueFixed || 0).length, this.rightValue.toFixed(this.valueFixed || 0).length, 2);
  if (this.valueFixed > 0) {
    l -= 0.8;
  }
  this.inputTextWidth = l;
};
TrackBarInput.prototype.addStyle = function (arg0, arg1) {
  if (arg0 === 'textAlign' || arg0 === 'text-align') {
    this.$input.addStyle('text-align', arg1);
    return this;
  } else {
    _AElement["default"].prototype.addStyle.apply(this, arguments);
    return this;
  }
};

// absol.OOP.drillProperty(this, this.$trackbar, ['leftValue', 'rightValue']);

TrackBarInput.property = {};
TrackBarInput.property.leftValue = {
  set: function set(value) {
    this.$trackbar.leftValue = value;
    this._calInputTextWidth();
  },
  get: function get() {
    return this.$trackbar.leftValue;
  }
};
TrackBarInput.property.rightValue = {
  set: function set(value) {
    this.$trackbar.rightValue = value;
    this._calInputTextWidth();
  },
  get: function get() {
    return this.$trackbar.rightValue;
  }
};
TrackBarInput.property.value = {
  set: function set(value) {
    this.$trackbar.value = value || 0;
    this.$input.value = this.value + '';
  },
  get: function get() {
    return parseFloat((this.valueFixed === undefined ? this.$trackbar.value : this.$trackbar.value.toFixed(this.valueFixed)) + '');
  }
};
TrackBarInput.property.valueFixed = {
  set: function set(value) {
    if (value === undefined || value === null) value = undefined;
    this._valueFixed = value;
    this.$input.value = this.value + '';
    this._calInputTextWidth();
  },
  get: function get() {
    return this._valueFixed;
  }
};
TrackBarInput.property.inputTextWidth = {
  set: function set(value) {
    if (typeof value == 'number') {
      this._inputTextWidth = value;
      this.addStyle('--input-width', 3 + (value - 2) * 0.42 + 0.3 + 'em');
    } else {
      this._inputTextWidth = value;
      this.addStyle('--input-width', value);
    }
  },
  get: function get() {
    return this._inputTextWidth;
  }
};
TrackBarInput.property.disabled = {
  get: function get() {
    return this.hasClass('as-disabled');
  },
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
    this.$input.disabled = !!value;
    this.$trackbar.disabled = !!value;
  }
};
TrackBarInput.property.readOnly = {
  set: function set(value) {
    value = !!value;
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
    this.$input.readOnly = value;
    this.$trackbar.readOnly = value;
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
TrackBarInput.eventHandler = {};
TrackBarInput.eventHandler.inputChange = function (event) {
  var newValue = parseFloat(this.$input.value);
  if (!isNaN(newValue)) {
    newValue = Math.max(this.leftValue, Math.min(this.rightValue, newValue));
    this.$trackbar.value = newValue;
    this.emit('change', this.value);
  }
};
var _default = TrackBarInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


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;
__webpack_require__(56817);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _generator = __webpack_require__(18528);
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _utils = __webpack_require__(84512);
var _Color = _interopRequireDefault(__webpack_require__(64974));
var _DomSignal = _interopRequireDefault(__webpack_require__(47341));
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 autoThemeVariable(viewElt) {
  var cp = getComputedStyle(document.body);
  var color = cp.getPropertyValue('--menu-background-color') || cp.getPropertyValue('--variant-color-primary') || 'blue';
  color = _Color["default"].parse(color.trim());
  var hsla = color.toHSLA();
  hsla[2] = (hsla[2] + 1) / 2;
  hsla[1] = (hsla[1] + 0.2) / 2;
  var nColor = _Color["default"].fromHSLA(hsla[0], hsla[1], hsla[2], hsla[3]);
  viewElt.addStyle('--vert-node-background-color', nColor.toString('rgba'));
  nColor = nColor.getContrastYIQ();
  viewElt.addStyle('--vert-node-text-color', nColor.toString('rgba'));
  hsla[0] += 0.1;
  if (hsla[0] > 1) hsla[0] -= 1;
  nColor = _Color["default"].fromHSLA(hsla[0], hsla[1], hsla[2], hsla[3]);
  viewElt.addStyle('--horz-node-background-color', nColor.toString('rgba'));
  nColor = nColor.getContrastYIQ();
  viewElt.addStyle('--horz-node-text-color', nColor.toString('rgba'));
  hsla[0] -= 0.2;
  if (hsla[0] < 0) hsla[0] += 1;
  nColor = _Color["default"].fromHSLA(hsla[0], hsla[1], hsla[2], hsla[3]);
  viewElt.addStyle('--root-background-color', nColor.toString('rgba'));
  nColor = nColor.getContrastYIQ();
  viewElt.addStyle('--root-text-color', nColor.toString('rgba'));
}

/***
 * @extends AElement
 * @constructor
 */
function TreeChart() {
  // autoThemeVariable(this);
  this.$domSignal = (0, _ACore._)('attachhook').addTo(this);
  this.domSignal = new _DomSignal["default"](this.$domSignal);
  this.domSignal.on('formatSize', this._formatSize.bind(this));
  this.domSignal.on('fixWidth', this._fixWidth.bind(this));
  this.$root = null;
  this._maxHorizonLevel = 2;
  /***
   * @name data
   * @type {any}
   * @memberOf TreeChart#
   */
  /***
   * @name maxHorizonLevel
   * @type {number}
   * @memberOf TreeChart#
   */
}

TreeChart.tag = 'TreeChart';
TreeChart.render = function () {
  return (0, _ACore._)({
    "class": 'as-tree-chart'
  });
};
TreeChart.prototype._updateContent = function () {
  var _this = this;
  if (this.$root) {
    this.$root.remove();
    this.$root = null;
  }
  var data = this.data;
  if (!data) return;
  var makeTree = function makeTree(nodeData, level) {
    var textChildren = [];
    if (nodeData.icon) {
      textChildren.push((0, _ACore._)(nodeData.icon).addClass('as-tree-chart-icon'));
    }
    textChildren.push({
      tag: 'span',
      "class": 'as-tree-chart-text',
      child: {
        text: nodeData.text || nodeData.name
      }
    });
    var elt = (0, _ACore._)({
      "class": 'as-tree-chart-node',
      attr: {
        "data-level": level + ''
      },
      child: [{
        "class": 'as-tree-chart-content-ctn',
        child: {
          "class": 'as-tree-chart-content',
          child: textChildren
        }
      }, {
        "class": 'as-tree-chart-child-ctn'
      }]
    });
    elt.$content = (0, _ACore.$)('.as-tree-chart-content', elt);
    elt.$childCtn = (0, _ACore.$)('.as-tree-chart-child-ctn', elt);
    var fillColor, textColor;
    if (typeof nodeData.fill === "string") {
      fillColor = _Color["default"].parse(nodeData.fill);
    } else if (nodeData.fill instanceof _Color["default"]) {
      fillColor = nodeData.fill;
    }
    if (fillColor) {
      textColor = fillColor.getContrastYIQ();
      elt.$content.addStyle({
        color: textColor.toString('hex8'),
        backgroundColor: fillColor.toString('hex8')
      });
    }
    if (level === _this.maxHorizonLevel) elt.addClass('as-horizontal');
    if (nodeData.isLeaf) elt.addClass('as-is-leaf');
    if (nodeData.items && nodeData.items.length > 0) {
      elt.addClass('as-has-children');
      /***
       * @type {AElement[]}
       */
      elt.$children = nodeData.items.map(function (it) {
        return makeTree(it, level + 1);
      });
      elt.$childCtn.addChild(elt.$children);
    }
    return elt;
  };
  this.$root = makeTree(data, 0).addTo(this);
  this.domSignal.emit('formatSize');
};
TreeChart.prototype._formatSize = function () {
  if (!this.$root) return;
  var cBound = this.getBoundingClientRect();
  var maxHorizonLevel = this.maxHorizonLevel;
  var visit = function visit(elt, level) {
    if (!elt.$children) return;
    var sArr, maxS;
    if (level < maxHorizonLevel) {
      sArr = elt.$children.map(function (e) {
        return e.$content.getBoundingClientRect().height;
      });
      maxS = Math.max.apply(Math, sArr);
      elt.$children.forEach(function (elt, i) {
        if (sArr[i] < maxS) {
          elt.$content.addStyle('height', maxS + 'px');
        }
      });
    } else {
      sArr = elt.$children.map(function (e) {
        return e.$content.getBoundingClientRect().width;
      });
      maxS = Math.max.apply(Math, sArr);
      elt.$children.forEach(function (elt, i) {
        if (sArr[i] < maxS) {
          elt.$content.addStyle('width', maxS + 'px');
        }
      });
    }
    elt.$children.forEach(function (c) {
      return visit(c, level + 1);
    });
  };
  visit(this.$root, 0);
  var newBound = this.getBoundingClientRect();
  if (cBound.width !== newBound.width || cBound.height !== newBound.height) {
    _ResizeSystem["default"].update();
  }
  this.domSignal.emit('fixWidth');
};
TreeChart.prototype._fixWidth = function () {
  if (!this.$root) return;
  var cBound = this.getBoundingClientRect();
  var maxHorizonLevel = this.maxHorizonLevel;
  var visit = function visit(elt) {
    if (!elt.$children) return;
    elt.$children.forEach(function (c) {
      return visit(c);
    });
    var bound, cBound;
    bound = elt.$childCtn.getBoundingClientRect();
    cBound = elt.$childCtn.getBoundingRecursiveRect(100);
    if (cBound.width > bound.width) {
      elt.$childCtn.addStyle('width', cBound.width + 'px');
    }
  };
  visit(this.$root);
  var newBound = this.getBoundingClientRect();
  if (cBound.width !== newBound.width || cBound.height !== newBound.height) {
    _ResizeSystem["default"].update();
  }
};
TreeChart.property = {};
TreeChart.property.data = {
  set: function set(data) {
    data = (0, _generator.copyJSVariable)(data || null);
    this._data = data;
    this._updateContent();
  },
  get: function get() {
    return this._data;
  }
};
TreeChart.property.maxHorizonLevel = {
  set: function set(value) {
    if (!(0, _utils.isNaturalNumber)(value)) value = 2; //default
    this._maxHorizonLevel = value;
    this._updateContent();
  },
  get: function get() {
    return this._maxHorizonLevel;
  }
};
_ACore["default"].install(TreeChart);
var _default = TreeChart;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(24266);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _TreeListItem = _interopRequireDefault(__webpack_require__(72229));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function TreeList() {}
TreeList.tag = 'treelist';
TreeList.render = function () {
  return _({
    "class": 'absol-tree-list',
    extendEvent: 'press'
  });
};
TreeList.prototype.realignDescription = function (extMarginLeft) {
  extMarginLeft = extMarginLeft || 0;
  var maxWidth = 0;
  var ctns = [];
  $('.absol-tree-list-item-desc-container', this, function (elt) {
    ctns.push(elt);
    var bound = elt.getBoundingClientRect();
    maxWidth = Math.max(maxWidth, bound.width);
  });
  var fontSize = this.getFontSize();
  var cntWidth = maxWidth / fontSize + 'em';
  var extMarginRight = maxWidth / fontSize + extMarginLeft + 'em';
  ctns.forEach(function (e) {
    e.addStyle('width', cntWidth);
  });
  $('span.absol-tree-list-item-text', this, function (elt) {
    elt.addStyle('margin-right', extMarginRight);
  });
  return this;
};
TreeList.prototype.clearItems = function () {
  this._items = [];
  this.clearChild();
};
TreeList.prototype.getAllItem = function () {
  return this._items || [];
};
TreeList.prototype.getAllItemElement = function () {
  return Array.apply(null, this.childNodes);
};
TreeList.prototype.addItem = function (item) {
  var self = this;
  var props = {
    level: this.level,
    data: item
  };
  if (typeof item == 'string') {
    props.text = item;
  } else {
    props.text = item.text;
    if (item.items) {
      props.items = item.items;
    }
    if (item.desc) {
      props.desc = item.desc;
    }
    if (item.extendClasses) {
      props.extendClasses = item.extendClasses;
    }
    if (item.extendStyle) {
      props.extendStyle = item.extendStyle;
    }
  }
  var elt = _({
    tag: 'treelistitem',
    props: props,
    on: {
      press: function press(event) {
        self.emit('press', event, this);
      }
    }
  });
  this.addChild(elt);
  this._items.push(item);
  return this;
};
TreeList.property = {};
TreeList.property.items = {
  set: function set(value) {
    this.clearItems();
    (value || []).forEach(this.addItem.bind(this));
  },
  get: function get() {
    return this.getAllItem();
  }
};
TreeList.property.level = {
  set: function set(value) {
    value = value || 0;
    if (this.level == value) return;
    this._level = value;
    this.getAllItemElement().forEach(function (e) {
      e.level = value;
    });
  },
  get: function get() {
    return this._level || 0;
  }
};
_ACore["default"].install(TreeList);
var _default = TreeList;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(24266);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function TreeListItem() {
  var thisTI = this;
  this.$list = $('treelist', this).on('press', function (event, sender) {
    thisTI.emit('press', event, this);
  });
  this.$parent = $('.absol-tree-list-item-parent', this).on('mousedown', this.eventHandler.clickParent);
  this.$text = $('span.absol-tree-list-item-text', this);
  this.$desc = $('span.absol-tree-list-item-desc', this);
  this.$descCtn = $('.absol-tree-list-item-desc-container', this);
  this.$list.level = 1;
  _OOP["default"].drillProperty(this, this.$list, 'items');
}
TreeListItem.tag = 'TreeListItem'.toLowerCase();
TreeListItem.render = function () {
  return _({
    extendEvent: ['press', 'clickparent'],
    "class": 'absol-tree-list-item',
    child: [{
      "class": 'absol-tree-list-item-parent',
      child: ['span.absol-tree-list-item-text', {
        "class": 'absol-tree-list-item-desc-container',
        child: 'span.absol-tree-list-item-desc'
      }]
    }, 'treelist']
  });
};
TreeListItem.eventHandler = {};
TreeListItem.eventHandler.clickParent = function (event) {
  event.preventDefault();
  var prevented = false;
  var self = this;
  this.emit('press', {
    target: self,
    preventDefault: function preventDefault() {
      prevented = true;
    },
    isPrevented: function isPrevented() {
      return prevented;
    },
    data: this.data
  }, this);
  if (!prevented) {
    var top = self.getTopLevelElt();
    $('treelistitem', top, function (e) {
      if (e != self) e.active = false;
    });
    self.active = true;
  }
};
TreeListItem.prototype.getTopLevelElt = function () {
  var current = this;
  while (current) {
    var parent = current.parentNode;
    if (!parent || !parent.classList.contains('absol-tree-list') && !parent.classList.contains('absol-tree-list-item')) break;
    current = current.parentNode;
  }
  return current;
};
TreeListItem.property = {
  text: {
    set: function set(value) {
      value = value + '';
      this.$text.innerHTML = value;
    },
    get: function get() {
      return this.$text.innerHTML;
    }
  },
  desc: {
    set: function set(value) {
      value = value + '';
      this.$desc.innerHTML = value;
    },
    get: function get() {
      return this.$desc.innerHTML;
    }
  },
  level: {
    set: function set(value) {
      value = value || 0;
      if (value == this.level) return;
      this._level = value;
      this.$parent.addStyle('padding-left', this._level * 0.4 * 3 + 'em');
      this.$list.level = value + 1;
    },
    get: function get() {
      return this._level || 0;
    }
  },
  active: {
    set: function set(value) {
      if (value) {
        this.addClass('active');
      } else {
        this.removeClass('active');
      }
    },
    get: function get() {
      return this.hasClass('active');
    }
  },
  data: {
    set: function set(value) {
      this._data = value;
    },
    get: function get() {
      return this._data;
    }
  },
  value: {
    get: function get() {
      var data = this.data;
      if (typeof data == 'string') return data;
      if (typeof data.value == "undefined") {
        return data.text;
      } else {
        return data.value;
      }
    }
  }
};
TreeListItem.property.extendClasses = {
  set: function set(value) {
    var self = this;
    this.extendClasses.forEach(function (className) {
      self.$parent.removeClass(className);
    });
    this._extendClass = [];
    if (!value) return;
    if (typeof value == 'string') {
      value = value.split(/\s+/).filter(function (c) {
        return c.length > 0;
      });
    }
    if (value instanceof Array) {
      this._extendClass = value;
      this._extendClass.forEach(function (className) {
        self.$parent.addClass(className);
      });
    } else {
      throw new Error('Invalid extendClasses');
    }
  },
  get: function get() {
    return this._extendClass || [];
  }
};
TreeListItem.property.extendStyle = {
  set: function set(value) {
    this.$parent.removeStyle(this._extendStyle || {});
    this._extendStyle = value || {};
    this.$parent.addStyle(this.extendStyle);
  },
  get: function get() {
    return this._extendStyle || {};
  }
};
_ACore["default"].install(TreeListItem);
var _default = TreeListItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(90081);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _utils = __webpack_require__(84512);
var _noop = _interopRequireDefault(__webpack_require__(5025));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/**
 * @extends AElement
 * @constructor
 */
function VRuler() {
  var self = this;
  this.$attachHook = _('attachhook').on('error', function () {
    this.updateSize = self.update.bind(self);
    _Dom["default"].addToResizeSystem(this);
    this.updateSize();
  }).addTo(this);
  this.$lines = [];
  this.$numbers = [];
  this.$measureTarget = undefined;
  this._viewingNumberCount = 0;
  this._viewingLineCount = 0;
  this._spacing = 10;
  this._major = 10;
  this._valueFloat = 'top';

  /**
   * @type {number}
   * @name major
   * @memberof VRuler#
   */
  /**
   * @type {number}
   * @name spacing
   * @memberof VRuler#
   */

  /**
   * @type {boolean}
   * @name inverse
   * @memberof VRuler#
   */
}

VRuler.tag = 'vruler';
VRuler.render = function () {
  return _({
    "class": 'as-vruler'
  });
};
VRuler.prototype.revokeResource = function () {
  this.$measureTarget = null;
  this.$attachHook.cancelWaiting();
  (0, _utils.revokeResource)(this.$lines);
  (0, _utils.revokeResource)(this.$numbers);
  this.clearChild();
  this.revokeResource = _noop["default"];
};
VRuler.prototype.measureElement = function (elt) {
  if (typeof elt == "string") elt = $(elt);
  this.$measureTarget = elt;
  this.update();
};
VRuler.prototype.update = function () {
  var fontSize = this.getFontSize() || 14;
  var measureBound;
  var bound = this.getBoundingClientRect();
  if (!bound.width || !bound.height) return;
  var contentBound = {
    left: bound.left + 1,
    right: bound.right - 1,
    top: bound.top + 1,
    bottom: bound.bottom - 1,
    width: bound.width - 2,
    height: bound.height - 2
  };
  if (this.$measureTarget) {
    measureBound = this.$measureTarget.getBoundingClientRect();
  } else {
    measureBound = contentBound;
  }
  var startOffset = (measureBound[this._valueFloat] - contentBound[this._valueFloat]) * (this.inverse ? -1 : 1) % this._spacing;
  if (startOffset < 0) startOffset += this._spacing;
  var lineIndexOffset = Math.round(((contentBound[this._valueFloat] - measureBound[this._valueFloat]) * (this.inverse ? -1 : 1) + startOffset) / this._spacing);
  var lineCount = Math.floor((contentBound.height - startOffset) / this._spacing) + 1;
  while (this.$lines.length < lineCount) {
    this.$lines.push(_('.as-vruler-line'));
  }
  var i;
  var lineElt;
  for (i = 0; i < lineCount; ++i) {
    lineElt = this.$lines[i];
    if ((i + lineIndexOffset) % this._major == 0) {
      lineElt.addClass('major');
    } else {
      lineElt.removeClass('major');
    }
    lineElt.addStyle(this._valueFloat, startOffset + this._spacing * i - 0.5 + 'px');
  }
  try {
    while (this._viewingLineCount < lineCount) {
      this.$lines[this._viewingLineCount++].addTo(this);
    }
    while (this._viewingLineCount > lineCount) {
      this.$lines[--this._viewingLineCount].remove();
    }
  } catch (e) {}
  var numberCount = Math.floor((lineCount + lineIndexOffset - 1) / this._major) - Math.ceil(lineIndexOffset / this._major) + 1;
  while (this.$numbers.length < numberCount) {
    this.$numbers.push(_('.as-vruler-major-number'));
  }
  var numberElt;
  var number;
  var majorStartOfset = startOffset;
  if (lineIndexOffset > 0) {
    majorStartOfset += (this._major - lineIndexOffset % this._spacing) * this._spacing;
  } else {
    majorStartOfset += (this._major - (this._spacing + lineIndexOffset % this._spacing)) * this._spacing;
  }
  for (i = 0; i < numberCount; ++i) {
    number = (Math.ceil(lineIndexOffset / this._major) + i) * this._spacing * this._major;
    numberElt = this.$numbers[i];
    if (numberElt.__cacheNumber__ != number) {
      numberElt.__cacheNumber__ = number;
      numberElt.innerHTML = number + '';
    }
    numberElt.addStyle(this._valueFloat, majorStartOfset + this._major * i * this._spacing - 0.7 * 0.5 * fontSize + 'px');
  }
  while (this._viewingNumberCount < numberCount) {
    this.$numbers[this._viewingNumberCount++].addTo(this);
  }
  try {
    while (this._viewingNumberCount > numberCount) {
      this.$numbers[--this._viewingNumberCount].remove();
    }
  } catch (e) {}
};
VRuler.property = {};
VRuler.property.major = {
  set: function set(value) {
    if (value > 0) {
      this._major = value;
      this.update();
    }
  },
  get: function get() {
    return this._major;
  }
};
VRuler.property.spacing = {
  set: function set(value) {
    if (value > 0) {
      this._spacing = value;
      this.update();
    }
  },
  get: function get() {
    return this._spacing;
  }
};
VRuler.property.inverse = {
  set: function set(value) {
    this._valueFloat = value ? 'bottom' : 'top';
    this.update();
  },
  get: function get() {
    return this._valueFloat === 'bottom';
  }
};
_ACore["default"].install(VRuler);
var _default = VRuler;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(3972);
var _Dom = _interopRequireDefault(__webpack_require__(64821));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function VariantColor() {
  this.keys = ['primary', 'secondary', 'success', 'info', 'warning', 'error', 'danger', 'light', 'dark', 'link', 'note'];
  this.base = {
    primary: "#007bff",
    secondary: "#6c757d",
    success: "#28a745",
    info: "#17a2b8",
    warning: "#ffc107",
    error: "#ff4052",
    danger: "#dc3545",
    light: "#f8f9fa",
    dark: "#343a40",
    link: "#007bff",
    note: '#ffff88'
  };
  this.mediumContract = {
    primary: '#e2edd5',
    secondary: '#fca75b',
    success: '#fce8e8',
    info: '#fcf5e8',
    warning: '#5e5a75',
    error: '#e0dfce',
    danger: "#e5e8d5",
    light: '#7a5b3c',
    dark: "#bf7d3b",
    link: "#dde8c9",
    note: '#1e1ec8'
  };
  _Dom["default"].documentReady.then(this.loadFromCss.bind(this));
}
VariantColor.prototype.has = function (name) {
  return this.keys.indexOf(name) >= 0;
};
VariantColor.prototype.loadFromCss = function () {
  this.base = this.keys.reduce(function (ac, name) {
    var style = window.getComputedStyle(document.body);
    ac[name] = style.getPropertyValue('--variant-color-' + name);
    return ac;
  }, {});
  this.mediumContract = this.keys.reduce(function (ac, name) {
    var style = window.getComputedStyle(document.body);
    ac[name] = style.getPropertyValue('--variant-medium-contract-color-' + name);
    return ac;
  }, {});
};
var _default = new VariantColor();
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(70431);
var _utils = __webpack_require__(84512);
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; }
/***
 * @extends AElement
 * @constructor
 */
function VerticalTimeline() {
  this._current = 0;
  this._items = [];
  this.$items = [];
  this.current = 0;
}
VerticalTimeline.tag = 'VerticalTimeline'.toLowerCase();
VerticalTimeline.render = function () {
  return (0, _ACore._)({
    "class": 'as-vertical-timeline',
    child: []
  });
};
VerticalTimeline.prototype._makeItem = function (item, i) {
  var iconElt = (0, _ACore._)('span.mdi.mdi-circle');
  return (0, _ACore._)({
    "class": 'as-vertical-timeline-item',
    props: {
      $icon: iconElt
    },
    child: [{
      "class": 'as-vertical-timeline-icon-ctn',
      child: iconElt
    }, {
      "class": 'as-vertical-timeline-tile',
      child: {
        tag: 'span',
        child: {
          text: item.text
        }
      }
    }]
  });
};
VerticalTimeline.property = {};
VerticalTimeline.property.items = {
  /***
   * @this VerticalTimeline
   * @param items
   */
  set: function set(items) {
    items = items || [];
    this._items = items;
    this.clearChild();
    this.$items = items.map(function (item, i) {
      return this._makeItem(item, i);
    }.bind(this));
    this.addChild(this.$items);
    this.current = this._current; //update
  },

  get: function get() {}
};
VerticalTimeline.property.current = {
  set: function set(value) {
    value = (0, _utils.isRealNumber)(value) ? value >> 0 : -1;
    this._current = value;
    var itemElt;
    for (var i = 0; i < this.$items.length; ++i) {
      itemElt = this.$items[i]; //.$icon.removeClass('');
      if (i < value) {
        itemElt.$icon.removeClass('mdi-numeric-' + (i + 1) + '-circle').removeClass('mdi-circle').addClass('mdi-check-circle');
        itemElt.removeClass('as-inactive').removeClass('as-active');
      } else if (i === value) {
        itemElt.$icon.addClass('mdi-numeric-' + (i + 1) + '-circle').removeClass('mdi-circle').removeClass('mdi-check-circle');
        itemElt.removeClass('as-inactive').addClass('as-active');
      } else {
        itemElt.addClass('as-inactive').removeClass('as-active');
        itemElt.$icon.removeClass('mdi-numeric-' + (i + 1) + '-circle').addClass('mdi-circle').removeClass('mdi-check-circle');
      }
    }
  },
  get: function get() {
    return Math.max(-1, Math.min(this._current, this._items.length));
  }
};
_ACore["default"].install(VerticalTimeline);
var _default = VerticalTimeline;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.VerticalTreeDiagramNode = VerticalTreeDiagramNode;
exports["default"] = void 0;
__webpack_require__(3378);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
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 VerticalTreeDiagramNode() {
  this.$childCtn = (0, _ACore.$)('.as-vertical-tree-diagram-child-ctn', this);
  this.$name = (0, _ACore.$)('.as-vertical-tree-diagram-node-name', this);
  _OOP["default"].drillProperty(this, this.$name.firstChild, 'name', 'data');
  this.name = "UndefinedNodeName";
}
VerticalTreeDiagramNode.tag = 'VerticalTreeDiagramNode'.toLowerCase();
VerticalTreeDiagramNode.render = function () {
  return (0, _ACore._)({
    "class": 'as-vertical-tree-diagram-node',
    child: [{
      "class": 'as-vertical-tree-diagram-node-name-ctn',
      child: {
        "class": 'as-vertical-tree-diagram-node-name',
        child: {
          text: ""
        }
      }
    }, {
      "class": 'as-vertical-tree-diagram-child-ctn'
    }]
  });
};
['addChild', 'removeChild', 'clearChild', 'addChildBefore', 'addChildAfter', 'findChildBefore', 'findChildAfter'].forEach(function (name) {
  VerticalTreeDiagramNode.prototype[name] = function () {
    this.$childCtn[name].apply(this.$childCtn, arguments);
    if (this.$childCtn.childNodes.length > 0) {
      this.addClass('as-has-child');
      if (this.$childCtn.childNodes.length === 1) {
        this.addClass('as-has-1-child');
      } else {
        this.removeClass('as-has-1-child');
      }
    } else {
      this.removeClass('as-has-child');
      this.removeClass('as-has-1-child');
    }
  };
});
function VerticalTreeDiagram(data) {
  this.data = data || {};
}
VerticalTreeDiagram.tag = 'VerticalTreeDiagram'.toLowerCase();
VerticalTreeDiagram.render = function () {
  return (0, _ACore._)(VerticalTreeDiagramNode.tag, true);
};
VerticalTreeDiagram.property = {};
VerticalTreeDiagram.property.data = {
  set: function set(data) {
    data = data || {};
    this._data = data;
    function makeNode(nodeData) {
      return (0, _ACore._)({
        tag: VerticalTreeDiagramNode.tag,
        props: {
          name: nodeData.name
        },
        child: nodeData.child && nodeData.child.length > 0 && nodeData.child.map(makeNode) || []
      });
    }
    this.name = data.name + '';
    this.clearChild();
    if (data.child) this.addChild(data.child.map(makeNode));
  },
  get: function get() {
    return this._data;
  }
};
_ACore["default"].install(VerticalTreeDiagramNode);
_ACore["default"].install(VerticalTreeDiagram);
var _default = VerticalTreeDiagram;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(65756);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Draggable = _interopRequireDefault(__webpack_require__(39891));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
//can replace with other module
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
function WidthHeightResizer() {
  var res = _({
    extendEvent: 'sizechange',
    "class": 'absol-width-height-resizer',
    child: ['.absol-width-height-resizer-content', '.absol-width-height-resizer-anchor-bot-right', '.absol-width-height-resizer-anchor-bot-left', '.absol-width-height-resizer-anchor-top-right', '.absol-width-height-resizer-anchor-top-left']
  });
  res.eventHandler = _OOP["default"].bindFunctions(res, WidthHeightResizer.eventHandler);
  res.$anchorBotRight = $('.absol-width-height-resizer-anchor-bot-right', res);
  res.$anchorTopRight = $('.absol-width-height-resizer-anchor-top-right', res);
  res.$anchorBotLeft = $('.absol-width-height-resizer-anchor-bot-left', res);
  res.$anchorTopLeft = $('.absol-width-height-resizer-anchor-top-left', res);
  res.$content = $('.absol-width-height-resizer-content', res);
  (0, _Draggable["default"])(res.$anchorBotRight).on('drag', res.eventHandler.dragBotRight).on('predrag', res.eventHandler.preDrag);
  (0, _Draggable["default"])(res.$anchorTopRight).on('drag', res.eventHandler.dragTopRight).on('predrag', res.eventHandler.preDrag);
  (0, _Draggable["default"])(res.$anchorBotLeft).on('drag', res.eventHandler.dragBotLeft).on('predrag', res.eventHandler.preDrag);
  (0, _Draggable["default"])(res.$anchorTopLeft).on('drag', res.eventHandler.dragTopLeft).on('predrag', res.eventHandler.preDrag);
  return res;
}
['addChild', 'addChildBefore', 'addChildAfter', 'clearChild'].forEach(function (key) {
  WidthHeightResizer.prototype[key] = function () {
    return this.$content[key].apply(this.$content, arguments);
  };
});
WidthHeightResizer.tag = 'WidthHeightResizer'.toLowerCase();
WidthHeightResizer.eventHandler = {};
WidthHeightResizer.eventHandler.preDrag = function (event) {
  this._whrWidth = parseFloat(this.getComputedStyleValue('width').replace('px', ''));
  this._whrHeight = parseFloat(this.getComputedStyleValue('height').replace('px', ''));
};
WidthHeightResizer.eventHandler.dragBotRight = function (event) {
  var newEvent = {
    target: this,
    data: {}
  };
  if (event.moveDX != 0) {
    this.addStyle('width', this._whrWidth + event.moveDX + 'px');
    newEvent.data.changeWidth = true;
  }
  if (event.moveDY != 0) {
    this.addStyle('height', this._whrHeight + event.moveDY + 'px');
    newEvent.data.changeHeight = true;
  }
  newEvent.data.height = this.getComputedStyleValue('height');
  newEvent.data.width = this.getComputedStyleValue('width');
  this.emit('sizechange', newEvent);
};
WidthHeightResizer.eventHandler.dragTopRight = function (event) {
  var newEvent = {
    target: this,
    data: {}
  };
  if (event.moveDX != 0) {
    this.addStyle('width', this._whrWidth + event.moveDX + 'px');
    newEvent.data.changeWidth = true;
  }
  if (event.moveDY != 0) {
    this.addStyle('height', this._whrHeight - event.moveDY + 'px');
    newEvent.data.changeHeight = true;
  }
  newEvent.data.height = this.getComputedStyleValue('height');
  newEvent.data.width = this.getComputedStyleValue('width');
  this.emit('sizechange', newEvent);
};
WidthHeightResizer.eventHandler.dragBotLeft = function (event) {
  var newEvent = {
    target: this,
    data: {}
  };
  if (event.moveDX != 0) {
    this.addStyle('width', this._whrWidth - event.moveDX + 'px');
    newEvent.data.changeWidth = true;
  }
  if (event.moveDY != 0) {
    this.addStyle('height', this._whrHeight + event.moveDY + 'px');
    newEvent.data.changeHeight = true;
  }
  newEvent.data.height = this.getComputedStyleValue('height');
  newEvent.data.width = this.getComputedStyleValue('width');
  this.emit('sizechange', newEvent);
};
WidthHeightResizer.eventHandler.dragTopLeft = function (event) {
  var newEvent = {
    target: this,
    data: {}
  };
  if (event.moveDX != 0) {
    this.addStyle('width', this._whrWidth - event.moveDX + 'px');
    newEvent.data.changeWidth = true;
  }
  if (event.moveDY != 0) {
    this.addStyle('height', this._whrHeight - event.moveDY + 'px');
    newEvent.data.changeHeight = true;
  }
  newEvent.data.height = this.getComputedStyleValue('height');
  newEvent.data.width = this.getComputedStyleValue('width');
  this.emit('sizechange', newEvent);
};
_ACore["default"].creator.widthheightresizer = WidthHeightResizer;
var _default = WidthHeightResizer;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
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; }
/**
 * @typedef WindowBoxAction
 * @property icon
 * @property name
 *
 */

/***
 * @extends AElement
 * @constructor
 */
function WindowBox() {
  this.$header = (0, _ACore.$)('.as-window-box-header', this);
  /***
   *
   * @type {WindowBoxAction[]}
   * @private
   */
  this._windowActions = [];
  this.$windowActionButtonCtn = (0, _ACore.$)('.as-window-box-header-button-ctn', this);
  this._windowIcon = null;
  this.$windowIconCtn = (0, _ACore.$)('.as-window-box-header-icon-ctn', this);

  /**
   *
   * @type {Text}
   */
  this.$windowTitleText = (0, _ACore.$)('.as-window-box-header-title', this).firstChild;
  this.$body = (0, _ACore.$)('.as-window-box-body', this);

  /***
   * @type {WindowBoxAction[]}
   * @name windowActions
   */
}

WindowBox.tag = 'WindowBox'.toLowerCase();
WindowBox.render = function () {
  return (0, _ACore._)({
    "class": 'as-window-box',
    extendEvent: ['action'],
    child: [{
      "class": 'as-window-box-header',
      child: [{
        "class": 'as-window-box-header-icon-ctn'
      }, {
        "class": 'as-window-box-header-title',
        child: {
          text: ''
        }
      }, {
        "class": "as-window-box-header-button-ctn"
      }]
    }, {
      "class": 'as-window-box-body'
    }]
  });
};
['addChild', 'addChildBefore', 'addChildAfter', 'clearChild', 'findChildBefore', 'findChildAfter'].forEach(function (key) {
  WindowBox.prototype[key] = function () {
    return this.$body[key].apply(this.$body, arguments);
  };
});
WindowBox.property = {};
WindowBox.property.windowTitle = {
  set: function set(value) {
    this.$windowTitleText.data = (value || '') + '';
  },
  get: function get() {
    return this.$windowTitleText.data;
  },
  enumerable: true
};
WindowBox.property.windowIcon = {
  /***
   * @this WindowBox
   * @param value
   */
  set: function set(value) {
    value = value || null;
    this.$windowIconCtn.clearChild();
    if (value) {
      this.$windowIconCtn.addChild((0, _ACore._)(value));
    }
    this._windowIcon = value;
  },
  get: function get() {
    return this._windowIcon;
  },
  enumerable: true
};
WindowBox.property.windowActions = {
  set: function set(actions) {
    var self = this;
    this._windowActions = actions || [];
    this.$windowActionButtonCtn.clearChild();
    var buttons = this._windowActions.map(function (action) {
      return (0, _ACore._)({
        tag: 'button',
        "class": action["class"] || [],
        child: action.icon,
        on: {
          click: function click(event) {
            var eventData = {
              type: 'action',
              target: self,
              action: action,
              originalEvent: event
            };
            _OOP["default"].drillProperty(eventData, eventData, 'actionData', 'action');
            self.emit('action', eventData, self);
          }
        }
      });
    });
    this.$windowActionButtonCtn.addChild(buttons);
  },
  get: function get() {
    return this._windowActions;
  }
};
_ACore["default"].install(WindowBox);
var _default = WindowBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(40210);
var _MessageDialog = _interopRequireDefault(__webpack_require__(11674));
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; }
/***
 * @extends MessageDialog
 * @constructor
 */
function YesNoQuestionDialog() {
  this.dialogActions = [{
    "class": 'secondary',
    text: 'No',
    name: 'no'
  }, {
    "class": 'primary',
    text: 'Yes',
    name: 'yes'
  }];
  this.$yesBtn = this.$actionBtns[1];
  this.$noBtn = this.$actionBtns[0];
  this.$message = (0, _ACore.$)('.as-message-dialog-message', this);
  /*{
          class: 'as-message-dialog-footer',
          child: [
              {
                  tag: FlexiconButton.tag,
                  class: ['as-message-dialog-no-btn', 'secondary'],
                  props: {
                      text: 'No'
                  }
              },
              {
                  tag: FlexiconButton.tag,
                  class: ['as-message-dialog-yes-btn', 'primary'],
                  props: {
                      text: 'Yes'
                  }
              }
          ]
      }*/
}

YesNoQuestionDialog.tag = 'YesNoQuestionDialog'.toLowerCase();
YesNoQuestionDialog.render = function () {
  return (0, _ACore._)({
    tag: _MessageDialog["default"].tag,
    child: [{
      tag: 'span',
      "class": 'as-message-dialog-message',
      child: {
        text: ''
      }
    }]
  });
};
YesNoQuestionDialog.eventHandler = {};
YesNoQuestionDialog.property = {};
YesNoQuestionDialog.property.message = {
  set: function set(value) {
    value = (value || '') + '';
    this.$message.firstChild.data = value;
  },
  get: function get() {
    return this.$message.firstChild.data;
  }
};
YesNoQuestionDialog.property.textYes = {
  set: function set(value) {
    value = (value || 'Yes') + '';
    this.$yesBtn.text = value;
    this.dialogActions[1].text = value;
  },
  get: function get() {
    return this.$yesBtn.text;
  }
};
YesNoQuestionDialog.property.textNo = {
  set: function set(value) {
    value = (value || 'No') + '';
    this.$noBtn.text = value;
    this.dialogActions[0].text = value;
  },
  get: function get() {
    return this.$noBtn.text;
  }
};
_ACore["default"].install(YesNoQuestionDialog);
var _default = YesNoQuestionDialog;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
/***
 *
 * @param {PlaceSearchAutoCompleteInput} inputElt
 * @constructor
 */
function PlaceSearchAutoCompleteAdapter(inputElt) {
  this.inputElt = inputElt;
  this.service = new google.maps.places.AutocompleteService(this.inputElt.$service);
}
PlaceSearchAutoCompleteAdapter.prototype.queryItems = function (query, mInput) {
  var request = {
    input: query
  };
  return new Promise(function (resolve) {
    this.service.getPlacePredictions(request, function (results, status) {
      if (status === google.maps.places.PlacesServiceStatus.OK) {
        resolve(results);
      } else resolve([]);
    });
  }.bind(this));
};
PlaceSearchAutoCompleteAdapter.prototype.getItemText = function (item, mInput) {
  return item.description;
};
PlaceSearchAutoCompleteAdapter.prototype.getItemView = function (item, index, _, $, query, reuseItem, refParent, mInput) {
  return _({
    "class": 'as-place-search-auto-complete-item',
    child: [{
      "class": 'as-place-search-auto-complete-item-desc',
      child: {
        text: item.description
      }
    }]
  });
};
var _default = PlaceSearchAutoCompleteAdapter;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
/**
 * @typedef {Object} SearchObjectArrayAdapter
 * @property {function} getItemText
 * 
 * 
 * 
 * @param {Array<Object>} arr 
 * @param {SearchArrayAdapterOption} options
 */
function SearchObjectArrayAdapter(objects, options) {
  if (!this.queryItems) return new SearchObjectArrayAdapter(texts, options);
  this.objects = objects;
  this.options = options;
}
SearchObjectArrayAdapter.prototype.queryItems = function (query, mInput) {
  var query = query.toLocaleLowerCase();
  return this.objects.map(function (object) {
    var text = this.getItemText(object);
    var start = text.toLocaleLowerCase().indexOf(query);
    if (start >= 0) {
      var hightlightedText = text.substr(0, start) + '<strong style="color:red">' + text.substr(start, query.length) + '</strong>' + text.substr(start + query.length);
      return Object.assign(object, {
        __hightlightedText__: hightlightedText
      });
    } else return null;
  }.bind(this)).filter(function (it) {
    return it !== null;
  });
};
SearchObjectArrayAdapter.prototype.onAttached = function (parent) {
  this.parent = parent;
  parent.getSelectedObject = function () {
    if (this._selectedIndex >= 0) {
      return this.$poolItems[this._selectedIndex]._holderItem;
    } else {
      return null;
    }
  };
};
SearchObjectArrayAdapter.prototype.getItemText = function (item, mInput) {
  if (this.options && this.options.getItemText) return this.options.getItemText.call(this, item, mInput);else if (typeof item.text == 'string') {
    return item.text;
  } else return item.toString();
};
SearchObjectArrayAdapter.prototype.getItemView = function (item, index, _, $, query, reuseItem, refParent, mInput) {
  if (reuseItem) {
    reuseItem.childNodes[0].innerHTML = item.__hightlightedText__;
    return reuseItem;
  } else return _({
    tag: 'div',
    child: {
      tag: 'span',
      props: {
        innerHTML: item.__hightlightedText__
      }
    }
  });
};
var _default = SearchObjectArrayAdapter;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
/**
 * @typedef {Object} SearchArrayAdapterOption
 * @property {function} searchFuntion
 * 
 * 
 * 
 * @param {Array<String>} arr 
 * @param {SearchArrayAdapterOption} options not implement yet
 */
function SearchStringArrayAdapter(texts, options) {
  if (!this.queryItems) return new SearchStringArrayAdapter(texts, options);
  this.texts = texts;
}
SearchStringArrayAdapter.prototype.queryItems = function (query, mInput) {
  var query = query.toLocaleLowerCase();
  return this.texts.map(function (text) {
    var start = text.toLocaleLowerCase().indexOf(query);
    if (start >= 0) {
      var hightlightedText = text.substr(0, start) + '<strong style="color:red">' + text.substr(start, query.length) + '</strong>' + text.substr(start + query.length);
      return {
        text: text,
        hightlightedText: hightlightedText
      };
    } else return null;
  }).filter(function (it) {
    return it !== null;
  });
};
SearchStringArrayAdapter.onAttached = function (parent) {
  this.parent = parent;
};
SearchStringArrayAdapter.prototype.getItemText = function (item, mInput) {
  return item.text;
};
SearchStringArrayAdapter.prototype.getItemView = function (item, index, _, $, query, reuseItem, refParent, mInput) {
  if (reuseItem) {
    reuseItem.childNodes[0].innerHTML = item.hightlightedText;
    return reuseItem;
  } else return _({
    tag: 'div',
    child: {
      tag: 'span',
      "class": 'absol-autocomplete-input-item-text',
      props: {
        innerHTML: item.hightlightedText
      }
    }
  });
};
var _default = SearchStringArrayAdapter;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.CTBModeNormal = CTBModeNormal;
exports.CTBModeSearch = CTBModeSearch;
var _utils = __webpack_require__(84512);
/***
 *
 * @param {MCheckTreeBox} elt
 * @param {[]} items
 * @constructor
 */
function CTBModeNormal(elt, items) {
  var _this = this;
  this.level = -1;
  this.selected = 'none';
  this.elt = elt;
  this.$list = this.elt.$list;
  /***
   *
   * @type {MCTBItemHolder[]}
   */
  this.children = items.map(function (item) {
    return new _this.elt.classes.ItemHolder(elt, _this, item);
  });
  this.hasLeaf = this.children.some(function (holder) {
    return holder.hasLeaf;
  });
  this.hasNoSelect = this.children.some(function (holder) {
    return holder.hasNoSelect;
  });
  this.hasDesc = this.children.some(function (holder) {
    return holder.hasDesc;
  });
  this.hasIcon = this.children.some(function (holder) {
    return holder.hasIcon;
  });
  if (this.hasLeaf) {
    this.elt.addClass('as-has-leaf');
  } else {
    this.elt.removeClass('as-has-leaf');
  }
  if (this.hasNoSelect) {
    this.elt.addClass('as-has-no-select');
    this.elt.$chekAll.disabled = true;
  } else {
    this.elt.removeClass('as-has-no-select');
    this.elt.$chekAll.disabled = false;
  }
  this.dict = this.children.reduce(function visit(ac, child) {
    var key = (0, _utils.keyStringOf)(child.data.value);
    if (ac[key]) {
      console.error('Duplicate value:', ac[key].data, child.data);
    }
    ac[key] = child;
    if (child.children) {
      child.children.reduce(visit, ac);
    }
    return ac;
  }, {});
}
CTBModeNormal.prototype.onStart = function () {
  this.$list.clearChild();
  var rootHolders = this.children;
  var viewElements = [];
  rootHolders.forEach(function (holder) {
    holder.getViewElements(viewElements);
  }, []);
  this.$list.addChild(viewElements);
};
CTBModeNormal.prototype.onStop = function () {};
CTBModeNormal.prototype.updateUp = function () {
  var selected = {
    child: 0,
    all: 0,
    none: 0 /*dont: 0*/
  };
  var childN = this.children.length;
  this.children.reduce(function (ac, child) {
    ac[child.selected]++;
    return ac;
  }, selected);
  if (childN === selected.all) {
    this.selected = 'all';
  } else if (childN === selected.none) {
    this.selected = "none";
  } else {
    this.selected = 'child';
  }
  this.elt.$chekAll.checked = this.selected === 'all';
};
CTBModeNormal.prototype.select = function (flag) {
  this.children.forEach(function (child) {
    return child.select(flag, true);
  });
  this.updateUp();
};
CTBModeNormal.prototype.getHolderByValue = function (value) {
  return this.dict[(0, _utils.keyStringOf)(value)] || null;
};
CTBModeNormal.prototype.setValues = function (values) {
  var _this2 = this;
  this.children.forEach(function (node) {
    return node.select(false);
  });
  values.forEach(function (value) {
    var holder = _this2.getHolderByValue(value);
    if (holder) holder.select(true);
  });
};
CTBModeNormal.prototype.getValues = function () {
  var values = [];
  var leafOnly = this.elt.leafOnly;
  this.children.forEach(function visit(node) {
    if (node.selected === 'all' && !node.hasNoSelect) {
      if (leafOnly) {
        if (node.data.isLeaf) {
          values.push(node.data.value);
        } else if (node.data.items) {
          node.data.items.forEach(function visitLeaf(item) {
            if (item.isLeaf) {
              values.push(item.value);
            } else if (item.items) {
              item.items.forEach(visitLeaf);
            }
          });
        }
      } else {
        values.push(node.data.value);
      }
    } else if (node.children) {
      node.children.forEach(visit);
    }
  });
  return values;
};
CTBModeNormal.prototype.getViewValues = function () {
  var values = [];
  this.children.forEach(function visit(node) {
    if (node.selected === 'all' && !node.hasNoSelect) {
      values.push(node.data.value);
    } else if (node.children) {
      node.children.forEach(visit);
    }
  });
  return values;
};

/***
 *
 * @param {MCheckTreeBox} elt
 * @param {[]} items
 * @constructor
 */
function CTBModeSearch(elt, items) {
  var _this3 = this;
  this.level = -1;
  this.selected = 'none';
  this.elt = elt;
  this.$list = this.elt.$list;
  this.children = items.map(function (item) {
    return new _this3.elt.classes.ItemHolder(elt, _this3, item);
  });
}
CTBModeSearch.prototype.onStart = function () {
  CTBModeNormal.prototype.onStart.call(this);
  this.updateSelectedFromRef();
};
CTBModeSearch.prototype.onStop = function () {};
CTBModeSearch.prototype.updateSelectedFromRef = function () {
  var normalMode = this.elt.modes.normal;
  this.children.forEach(function visit(holder) {
    holder.selected = holder.ref.selected;
    if (holder._elt) {
      holder._elt.selected = holder.selected;
    }
    if (holder.children) holder.children.forEach(visit);
  });
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var CTBPropHandlers = {};
CTBPropHandlers.items = {
  /***
   * @this MCheckTreeBox
   * @param items
   */
  set: function set(items) {
    this.itemListCtrl.setItems(items);
    var values = this.pendingValues || this.values;
    this.modes.normal.setValues(values);
    if (this.mode !== this.modes.normal) {
      this.mode.updateSelectedFromRef();
    }
  },
  get: function get() {
    return this.itemListCtrl.getItems();
  }
};
CTBPropHandlers.values = {
  /***
   * @this CheckTreeBox|MCheckTreeBox
   * @param values
   */
  set: function set(values) {
    this.pendingValues = values || [];
    this.modes.normal.setValues(values);
    if (this.mode !== this.modes.normal) {
      this.mode.updateSelectedFromRef();
    }
  },
  get: function get() {
    return this.modes.normal.getValues();
  }
};
CTBPropHandlers.viewValues = {
  get: function get() {
    return this.modes.normal.getViewValues();
  }
};
CTBPropHandlers.enableSearch = {
  /***
   * @this CheckTreeBox|MCheckTreeBox
   * @param value
   */
  set: function set(value) {
    if (value) {
      this.$box.addClass('as-enable-search');
    } else {
      this.$box.removeClass('as-enable-search');
    }
  },
  get: function get() {
    return this.$box.hasClass('as-enable-search');
  }
};
CTBPropHandlers.leafOnly = {
  /***
   * @this CheckTreeBox|MCheckTreeBox
   * @param value
   */
  set: function set(value) {
    if (value) {
      this.$box.addClass('as-leaf-only');
    } else {
      this.$box.removeClass('as-leaf-only');
    }
    var values = this.pendingValues || this.values;
    this.modes.normal.setValues(values);
  },
  get: function get() {
    return this.$box.hasClass('as-leaf-only');
  }
};
var _default = CTBPropHandlers;
/***
 *
 * @type {boolean}
 * @name enableSearch
 * @memberOf MCheckTreeBox#
 */
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _utils = __webpack_require__(84512);
var CTIPropHandlers = {};
CTIPropHandlers.data = {
  /***
   * @this MCheckTreeItem|CheckTreeItem
   * @param data
   */
  set: function set(data) {
    this._data = data;
    this._updateData();
  },
  get: function get() {
    return this._data;
  }
};
CTIPropHandlers.text = {
  get: function get() {
    if (!this._data) return '';
    if (this._data.charAt) return this._data;
    var text = this._data.text;
    if (text === undefined || text === null) return '';
    return this._data.text + '';
  }
};
CTIPropHandlers.value = {
  get: function get() {
    if (!this._data) return null;
    if (this._data.charAt) return this._data;
    return this._data.value;
  }
};
CTIPropHandlers.desc = {
  get: function get() {
    if (!this._data) return '';
    var desc = this._data.desc;
    if (desc === undefined || desc === null) return '';
    return desc + '';
  }
};
CTIPropHandlers.level = {
  set: function set(value) {
    if (!(0, _utils.isNaturalNumber)(value)) value = 0;
    this._level = value;
    this.addStyle('--level', value + '');
  },
  get: function get() {
    return this._level;
  }
};
CTIPropHandlers.status = {
  set: function set(value) {
    value = value === 'open' || value === 'close' ? value : 'none';
    this._status = value;
    this.removeClass('as-status-open').removeClass('as-status-close');
    if (value !== "none") {
      this.addClass('as-status-' + value);
    }
  },
  get: function get() {
    return this._status || 'none';
  }
};
CTIPropHandlers.selected = {
  set: function set(value) {
    if (value === 'all') {
      this.$checkbox.checked = true;
      this.$checkbox.removeClass('as-has-minus');
    } else if (value === 'child') {
      this.$checkbox.checked = false;
      this.$checkbox.addClass('as-has-minus');
    } else {
      this.$checkbox.checked = false;
      this.$checkbox.removeClass('as-has-minus');
    }
  },
  get: function get() {
    if (this.$checkbox.checked) {
      return 'all';
    } else {
      if (this.$checkbox.hasClass('as-has-minus')) {
        return 'child';
      } else {
        return 'none';
      }
    }
  }
};
CTIPropHandlers.hasLeaf = {
  set: function set(value) {
    if (value) {
      this.addClass('as-has-leaf');
    } else {
      this.removeClass('as-has-leaf');
    }
  },
  get: function get() {
    return this.hasClass('as-has-leaf');
  }
};
CTIPropHandlers.noSelect = {
  set: function set(value) {
    if (value) {
      this.addClass('as-no-select');
    } else {
      this.removeClass('as-no-select');
    }
    this.$checkbox.disabled = !!value;
  },
  get: function get() {
    return this.hasClass('as-no-select');
  }
};
var _default = CTIPropHandlers;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.MCTBItemHolder = MCTBItemHolder;
exports.MCheckTreeItem = MCheckTreeItem;
exports["default"] = void 0;
__webpack_require__(26795);
var _ACore = __webpack_require__(34093);
var _CTBPropHandlers = _interopRequireDefault(__webpack_require__(17489));
var _Searcher = _interopRequireDefault(__webpack_require__(47106));
var _CTBModes = __webpack_require__(48819);
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
var _EventEmitter = __webpack_require__(46833);
var _utils = __webpack_require__(84512);
var _CTIPropHandlers = _interopRequireDefault(__webpack_require__(51972));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ListDictionary = _interopRequireDefault(__webpack_require__(50218));
var _search = _interopRequireWildcard(__webpack_require__(67858));
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 }; }
/***
 * not optimize
 * @param {MCheckTreeBox} elt
 * @constructor
 */
function MCTBItemListController(elt) {
  this.elt = elt;
  this.items = [];
}
_OOP["default"].mixClass(MCTBItemListController, _ListDictionary["default"]);
MCTBItemListController.prototype.setItems = function (items) {
  items = items || [];
  if (!items.forEach || !items.map) items = [];
  this.items = (0, _utils.copySelectionItemArray)(items, {
    removeNoView: true
  });
  this.update();
};
MCTBItemListController.prototype.update = function () {
  var mode = new this.elt.classes.ModeNormal(this.elt, this.items);
  this.elt.modes.normal = mode;
  if (mode.hasDesc) {
    this.elt.$list.addClass('as-has-desc');
  } else {
    this.elt.$list.removeClass('as-has-desc');
  }
  if (mode.hasIcon) {
    this.elt.$list.addClass('as-has-icon');
  } else {
    this.elt.$list.removeClass('as-has-icon');
  }
  this.elt.mode = mode;
  mode.onStart();
  this._searchItems = (0, _search.prepareSearchForList)((0, _utils.copySelectionItemArray)(this.items));
  this._searchCache = {};
};
MCTBItemListController.prototype.getItems = function () {
  return (0, _utils.copySelectionItemArray)(this.items || []);
};
MCTBItemListController.prototype.makeSearch = function (query) {
  if (this._searchCache[query]) return this._searchCache[query].resetAndGet();
  var searchItem = (0, _search["default"])({
    text: query
  });
  var minScore = Infinity;
  var maxScore = -Infinity;
  var scoredHolders = this._searchItems.map(function visit(item) {
    var holder = {
      item: item,
      score: (0, _search.calcItemMatchScore)(searchItem, item),
      childMaxScore: -Infinity
    };
    minScore = Math.min(minScore, holder.score);
    maxScore = Math.max(maxScore, holder.score);
    if (item.items && item.items.length > 0) {
      holder.children = item.items.map(visit);
      holder.childMaxScore = holder.children.reduce(function (ac, cr) {
        return Math.max(ac, cr.score, cr.childMaxScore);
      }, 0);
    }
    return holder;
  });
  var threshHold = maxScore - (maxScore - minScore) / 3;
  var result = scoredHolders.reduce(function filterVisit(ac, cr) {
    var subItems;
    if (Math.max(cr.score, cr.childMaxScore) >= threshHold) {
      ac.items.push(cr.item);
      if (cr.children && cr.childMaxScore >= cr.score) {
        ac.status[(0, _utils.keyStringOf)(cr.item.value)] = 'open';
        subItems = cr.children.reduce(filterVisit, {
          items: [],
          status: ac.status
        }).items;
        cr.item.items = subItems;
      } else {
        if (cr.children && cr.children.length > 0) {
          ac.status[(0, _utils.keyStringOf)(cr.item.value)] = 'open';
        }
      }
    }
    return ac;
  }, {
    items: [],
    status: {}
  });
  var normalMode = this.elt.modes.normal;
  result.mode = new this.elt.classes.ModeSearch(this.elt, result.items);
  result.resetAndGet = function () {
    this.mode.children && this.mode.children.forEach(function resetVisit(holder) {
      var key = (0, _utils.keyStringOf)(holder.data.value);
      holder.ref = normalMode.getHolderByValue(holder.data.value);
      if (holder.status === 'open' && result.status[key] !== 'open') {
        holder.status = 'close';
        if (holder._elt) {
          holder._elt.status = 'close';
        }
      } else if (holder.status === 'close' && result.status[key] === 'open') {
        holder.status = 'open';
        if (holder._elt) {
          holder._elt.status = 'open';
        }
      }
      if (holder.children) holder.children.forEach(resetVisit);
    });
    return this.mode;
  };
  this._searchCache[query] = result;
  return result.resetAndGet();
};

/***
 * @extends AElement
 * @constructor
 */
function MCheckTreeItem() {
  this._data = null;
  this._status = 'none';
  this.$text = (0, _ACore.$)('.am-check-tree-item-text', this).firstChild;
  this.$desc = (0, _ACore.$)('.am-check-tree-item-desc', this).firstChild;
  this.$iconCtn = (0, _ACore.$)('.am-check-tree-item-icon-ctn', this);
  this.$checkbox = (0, _ACore.$)('checkboxinput', this).on('change', this.eventHandler.checkboxChange);
  this.addEventListener('click', this.eventHandler.click);
}
MCheckTreeItem.tag = 'MCheckTreeItem'.toLowerCase();
MCheckTreeItem.render = function () {
  return (0, _ACore._)({
    extendEvent: ['checkedchange', 'click', 'statuschange'],
    "class": ['am-check-tree-item', 'am-dropdown-box-item'],
    child: [{
      "class": 'am-check-tree-item-toggle-ctn',
      child: 'toggler-ico'
    }, {
      "class": 'am-check-tree-item-icon-ctn'
    }, {
      "class": 'am-check-tree-item-checkbox-ctn',
      child: 'checkboxinput'
    }, {
      "class": 'am-check-tree-item-text',
      child: {
        text: ''
      }
    }, {
      "class": 'am-check-tree-item-desc',
      child: {
        text: ''
      }
    }]
  });
};
MCheckTreeItem.prototype._updateData = function () {
  this.$text.data = this.text;
  this.$desc.data = this.desc;
  this.$iconCtn.clearChild();
  this.$icon = null;
  this.attr('data-key', (0, _utils.keyStringOf)(this.value));
  if (this._data && this._data.icon) {
    this.$icon = (0, _ACore._)(this._data.icon);
    if (this.$icon.parentElement) {
      this.$icon = this.$icon.cloneNode(true);
    }
    this.$iconCtn.addChild(this.$icon);
    this.addClass('as-has-icon');
  } else {
    this.removeClass('as-has-icon');
  }
  if (this._data && this._data.isLeaf) {
    this.addClass('as-is-leaf');
  } else {
    this.removeClass('as-is-leaf');
  }
};
MCheckTreeItem.eventHandler = {};
MCheckTreeItem.eventHandler.click = function (event) {
  if ((0, _EventEmitter.hitElement)(this.$checkbox, event)) return;
  var checkboxBound = this.$checkbox.getBoundingClientRect();
  var canCheck = this.$checkbox.getComputedStyleValue('pointer-events') !== 'none' && !this.$checkbox.disabled && checkboxBound.width > 0;
  if (this.status === 'none' && canCheck) {
    this.$checkbox.checked = !this.$checkbox.checked;
    this.$checkbox.notifyChange();
  } else if (this.status !== 'none') {
    if (!checkboxBound.width) {
      checkboxBound = this.$iconCtn.getBoundingClientRect();
    }
    if (!checkboxBound.width) {
      checkboxBound = {
        left: this.getBoundingClientRect().left + parseFloat(this.$text.parentElement.getComputedStyleValue('padding-left').replace('px'))
      };
    }
    if (event.clientX < checkboxBound.left || !canCheck) {
      this.status = this.status === 'open' ? 'close' : 'open';
      this.emit('statuschange', {
        type: 'statuschange',
        target: this
      }, this);
    } else if (canCheck) {
      this.$checkbox.checked = !this.$checkbox.checked;
      this.$checkbox.notifyChange();
    }
  }
};
MCheckTreeItem.eventHandler.checkboxChange = function () {
  this.emit('checkedchange', {
    type: 'checkedchange'
  }, this);
};
MCheckTreeItem.property = _CTIPropHandlers["default"];

/***
 * @name data
 * @memberOf MCheckTreeItem#
 */

/***
 * @name text
 * @type {string}
 * @memberOf MCheckTreeItem#
 */

/***
 * @name desc
 * @type {string}
 * @memberOf MCheckTreeItem#
 */

/***
 * @name value
 * @memberOf MCheckTreeItem#
 */

/***
 * @extends AElement
 * @constructor
 */
function MCheckTreeBox() {
  this.$box = (0, _ACore.$)('.am-check-tree-box', this);
  this.$body = (0, _ACore.$)('.am-check-tree-box-body', this);
  this.$list = (0, _ACore.$)('.am-check-tree-box-list', this);
  this.$chekAll = (0, _ACore.$)('.as-select-list-box-check-all', this).on('change', function () {
    this.modes.normal.select(this.$chekAll.checked);
    if (this.mode.updateSelectedFromRef) this.mode.updateSelectedFromRef();
    this.notifyChange();
  }.bind(this));
  this.$searchInput = (0, _ACore.$)(_Searcher["default"].tag, this).on('stoptyping', this.eventHandler.searchTextInputModify);
  this.$cancelBtn = (0, _ACore.$)('.as-select-list-box-cancel-btn', this).on('click', function () {
    this.emit('cancel', {
      type: 'cancel',
      target: this
    }, this);
  }.bind(this));
  this.$closeBtn = (0, _ACore.$)('.as-select-list-box-close-btn', this);
  this.$boxCloseBtn = (0, _ACore.$)('.am-dropdown-box-close-btn', this);
  this.on('click', function (event) {
    if (event.target === this || (0, _EventEmitter.hitElement)(this.$closeBtn, event) || (0, _EventEmitter.hitElement)(this.$boxCloseBtn, event)) {
      this.emit('close', {
        type: 'close',
        target: this
      }, this);
    }
  }.bind(this));
  this.pendingValues = null;
  this.modes = {
    normal: new this.classes.ModeNormal(this, [])
  };
  /***
   *
   * @type {CTBModeNormal | CTBModeSearch}
   */
  this.mode = this.modes.normal;
  this.itemListCtrl = new this.classes.ListController(this);
}
MCheckTreeBox.prototype.classes = {
  ListController: MCTBItemListController,
  ModeSearch: _CTBModes.CTBModeSearch,
  ModeNormal: _CTBModes.CTBModeNormal,
  ItemHolder: MCTBItemHolder,
  ItemElement: MCheckTreeItem
};
MCheckTreeBox.tag = 'MCheckTreeBox'.toLowerCase();
MCheckTreeBox.render = function () {
  return (0, _ACore._)({
    extendEvent: ['change', 'close', 'cancel'],
    "class": ['am-modal', 'am-dropdown-box-modal'],
    child: {
      "class": ['am-check-tree-box', 'am-dropdown-box', 'as-dropdown-box-common-style'],
      child: [{
        "class": 'am-dropdown-box-header',
        child: [{
          tag: _Searcher["default"].tag
        }, {
          tag: 'button',
          "class": 'am-dropdown-box-close-btn',
          child: 'span.mdi.mdi-close'
        }]
      }, {
        "class": ['am-dropdown-box-body', 'am-check-tree-box-body'],
        child: {
          "class": 'am-check-tree-box-list'
        }
      }, {
        "class": 'as-dropdown-box-footer',
        child: [{
          tag: 'checkbox',
          "class": 'as-select-list-box-check-all',
          props: {
            checked: false,
            text: _LanguageSystem["default"].getText('txt_check_all') || _LanguageSystem["default"].getText('txt_all') || 'Check All'
          }
        }, {
          "class": 'as-dropdown-box-footer-right',
          child: [{
            tag: 'a',
            "class": 'as-select-list-box-cancel-btn',
            attr: {
              "data-ml-key": 'txt_cancel'
            }
          }, {
            tag: 'a',
            "class": 'as-select-list-box-close-btn',
            attr: {
              "data-ml-key": 'txt_close'
            }
          }]
        }]
      }]
    }
  });
};
MCheckTreeBox.prototype.getHolderByValue = function (value) {
  return this.modes.normal.getHolderByValue(value);
};
MCheckTreeBox.prototype.select = function (value, flag) {
  var holder = this.modes.normal.getHolderByValue(value);
  if (holder) {
    holder.select(flag);
    if (this.mode !== this.modes.normal) {
      this.mode.updateSelectedFromRef();
    }
    return true;
  }
  return false;
};
MCheckTreeBox.prototype.getItemByValue = function (value) {
  var holder = this.modes.normal.getHolderByValue(value);
  if (holder) return holder.data;
  return null;
};
MCheckTreeBox.prototype.focus = function () {
  if (this.enableSearch) {
    this.$searchInput.focus();
  }
};
MCheckTreeBox.prototype.resetSearchState = function () {
  this.$searchInput.value = '';
  this.eventHandler.searchTextInputModify();
};
MCheckTreeBox.prototype.notifyChange = function () {
  this.pendingValues = null;
  this.emit('change', {
    type: 'change',
    target: this
  }, this);
};

/***
 * @name eventHandler
 * @type {{}}
 * @memberOf MCheckTreeBox#
 */
MCheckTreeBox.eventHandler = {};
MCheckTreeBox.eventHandler.searchTextInputModify = function () {
  var query = this.$searchInput.value.trim().replace(/\s+/g, ' ');
  if (query.length > 0) {
    if (this.mode === this.modes.normal) {
      this.mode.onStop();
    }
    this.mode.search = this.itemListCtrl.makeSearch(query);
    this.mode = this.mode.search;
    this.mode.onStart();
  } else {
    if (this.mode !== this.modes.normal) {
      this.mode.onStop();
      this.mode = this.modes.normal;
      this.mode.onStart();
    }
  }
};
MCheckTreeBox.property = _CTBPropHandlers["default"];
var _default = MCheckTreeBox;
/*********************************** ADAPT OLD VERSION ***************************************************************/
exports["default"] = _default;
MCheckTreeBox.prototype.findItemHoldersByValue = function (value) {
  var holder = this.getHolderByValue(value);
  if (holder) {
    return [holder];
  } else {
    return [];
  }
};

/***
 *
 * @param {MCheckTreeBox} boxElt
 * @param {MCTBItemHolder|CTBModeNormal|CTBModeSearch}parent
 * @param data
 * @constructor
 */
function MCTBItemHolder(boxElt, parent, data) {
  var _this = this;
  this.ref = null;
  this.boxElt = boxElt;
  this.$list = this.boxElt.$list;
  this.data = data;
  this.parent = parent;
  this.level = parent ? parent.level + 1 : 0;
  this._elt = null;
  this.children = null;
  this.hasIcon = !!data.icon;
  this.hasDesc = !!data.desc;
  this.status = 'none';
  this.selected = 'none';
  this.hasLeaf = data.isLeaf;
  this.noSelect = data.noSelect;
  this.hasNoSelect = this.noSelect;
  if (data.items && data.items.map && data.items.length > 0) {
    this.children = data.items.map(function (it) {
      return new MCTBItemHolder(boxElt, _this, it);
    });
    this.hasIcon = this.hasIcon || this.children.some(function (child) {
      return child.hasIcon;
    });
    this.hasDesc = this.hasDesc || this.children.some(function (child) {
      return child.hasDesc;
    });
    this.hasLeaf = this.hasLeaf || this.children.some(function (child) {
      return child.hasLeaf;
    });
    this.hasNoSelect = this.hasNoSelect || this.children.some(function (child) {
      return child.hasNoSelect;
    });
    this.status = 'close';
  }
}
MCTBItemHolder.prototype.getViewElements = function (ac) {
  ac = ac || [];
  ac.push(this.elt);
  if (this.status === 'open' && this.children) {
    this.children.forEach(function (child) {
      return child.getViewElements(ac);
    });
  }
  return ac;
};
Object.defineProperty(MCTBItemHolder.prototype, 'elt', {
  get: function get() {
    if (!this._elt) {
      this._elt = (0, _ACore._)({
        tag: this.boxElt.classes.ItemElement,
        props: {
          data: this.data,
          level: this.level,
          status: this.status,
          selected: this.selected,
          hasLeaf: this.hasLeaf,
          noSelect: this.hasNoSelect
        },
        on: {
          checkedchange: this.ev_checkedChange.bind(this),
          statuschange: this.ev_statusChange.bind(this)
        }
      });
    }
    return this._elt;
  }
});
MCTBItemHolder.prototype.ev_checkedChange = function () {
  var selected = this._elt.selected;
  if (this.ref) {
    if (selected === 'all') {
      this.ref.select(true);
    } else {
      this.ref.select(false);
    }
    this.getRoot().updateSelectedFromRef();
  } else {
    if (selected === 'all') {
      this.select(true);
    } else {
      this.select(false);
    }
  }
  this.boxElt.notifyChange();
};
MCTBItemHolder.prototype.ev_statusChange = function () {
  if (this._elt.status === this.status) return;
  var viewElements;
  if (this.status === 'open') {
    viewElements = this.getViewElements();
    viewElements.shift();
    viewElements.forEach(function (elt) {
      elt.remove();
    });
    this.status = this._elt.status;
  } else if (this.status === 'close') {
    this.status = this._elt.status;
    viewElements = this.getViewElements();
    viewElements.shift();
    (0, _utils.addElementAfter)(this.$list, viewElements, this._elt);
  }
};
MCTBItemHolder.prototype.updateUp = function () {
  var selected = {
    child: 0,
    all: 0,
    none: 0 /*dont: 0*/
  };
  var childN = this.children.length;
  this.children.reduce(function (ac, child) {
    ac[child.selected]++;
    return ac;
  }, selected);
  if (childN === selected.all) {
    this.selected = 'all';
  } else if (childN === selected.none) {
    this.selected = "none";
  } else {
    this.selected = 'child';
  }
  if (this._elt) {
    this._elt.selected = this.selected;
  }
  if (this.parent) this.parent.updateUp();
};
MCTBItemHolder.prototype.select = function (flag, isDownUpdate) {
  var leafOnly = this.boxElt.leafOnly;
  if (flag && leafOnly && !this.hasLeaf) return;
  var selected = {
    child: 0,
    all: 0,
    none: 0,
    exclude: 0 /*dont: 0*/
  };
  var childN = 0;
  if (this.children && this.children.length > 0) {
    childN = this.children.length;
    this.children.reduce(function (ac, child) {
      child.select(flag, true);
      if (leafOnly && !child.hasLeaf) {
        ac.exclude++;
      } else {
        ac[child.selected]++;
      }
      return ac;
    }, selected);
    if (leafOnly) {
      if (this.hasLeaf) {
        if (childN === selected.all + selected.exclude) {
          this.selected = 'all';
        } else if (selected.all + selected.child > 0) {
          this.selected = 'child';
        } else {
          this.selected = 'none';
        }
      } else {
        this.selected = "none";
      }
    } else {
      if (childN === selected.all) {
        this.selected = 'all';
      } else if (childN === selected.none) {
        this.selected = "none";
      } else {
        this.selected = 'child';
      }
    }
  } else {
    if (flag && (!leafOnly || this.hasLeaf)) {
      this.selected = 'all';
    } else {
      this.selected = 'none';
    }
  }
  if (this._elt) {
    this._elt.selected = this.selected;
  }
  if (!isDownUpdate && this.parent) {
    this.parent.updateUp();
  }
};
MCTBItemHolder.prototype.getRoot = function () {
  var c = this;
  while (c.parent) {
    c = c.parent;
  }
  return c;
};

/*********************************** ADAPT OLD VERSION ***************************************************************/

Object.defineProperty(MCTBItemHolder.prototype, 'item', {
  get: function get() {
    return this.data;
  }
});

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.CTLBModeNormal = CTLBModeNormal;
var _CTBModes = __webpack_require__(48819);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends CTBModeNormal
 * @param {MCheckTreeBox} elt
 * @param {[]} items
 * @constructor
 */
function CTLBModeNormal(elt, items) {
  _CTBModes.CTBModeNormal.apply(this, arguments);
}
_OOP["default"].mixClass(CTLBModeNormal, _CTBModes.CTBModeNormal);
CTLBModeNormal.prototype.getViewValues = function () {
  var values = [];
  this.children.forEach(function visit(node) {
    if (node.selected === 'all' && node.data.isLeaf) {
      values.push(node.data.value);
    } else if (node.children) {
      node.children.forEach(visit);
    }
  });
  return values;
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _CTBPropHandlers = _interopRequireDefault(__webpack_require__(17489));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var CTLBPropHandlers = Object.keys(_CTBPropHandlers["default"]).reduce(function (ac, key) {
  ac[key] = Object.assign({}, _CTBPropHandlers["default"][key]);
  return ac;
}, {});
CTLBPropHandlers.leafOnly = {
  enumerable: true,
  value: true
};
var _default = CTLBPropHandlers;
/***
 *
 * @type {boolean}
 * @name enableSearch
 * @memberOf MCheckTreeBox#
 */
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _CTIPropHandlers = _interopRequireDefault(__webpack_require__(51972));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var CTLIPropHandlers = Object.keys(_CTIPropHandlers["default"]).reduce(function (ac, key) {
  ac[key] = Object.assign({}, _CTIPropHandlers["default"][key]);
  return ac;
}, {});
var _default = CTLIPropHandlers;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _CTLIPropHandlers = _interopRequireDefault(__webpack_require__(4636));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _MCheckTreeBox = __webpack_require__(82822);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends AElement
 * @constructor
 */
function CheckTreeLeafItem() {
  this._data = null;
  this._status = 'none';
  this.$text = (0, _ACore.$)('.am-check-tree-item-text', this).firstChild;
  this.$desc = (0, _ACore.$)('.am-check-tree-item-desc', this).firstChild;
  this.$iconCtn = (0, _ACore.$)('.am-check-tree-item-icon-ctn', this);
  this.$checkbox = (0, _ACore.$)('checkboxinput', this).on('change', this.eventHandler.checkboxChange);
  this.addEventListener('click', this.eventHandler.click);
}
_OOP["default"].mixClass(CheckTreeLeafItem, _MCheckTreeBox.MCheckTreeItem);
CheckTreeLeafItem.tag = 'CheckTreeLeafItem'.toLowerCase();
CheckTreeLeafItem.render = function () {
  return (0, _ACore._)({
    extendEvent: ['checkedchange', 'click', 'statuschange'],
    "class": ['am-check-tree-leaf-item', 'am-check-tree-item', 'am-dropdown-box-item'],
    child: [{
      "class": 'am-check-tree-item-toggle-ctn',
      child: 'toggler-ico'
    }, {
      "class": 'am-check-tree-item-icon-ctn'
    }, {
      "class": 'am-check-tree-item-checkbox-ctn',
      child: 'checkboxinput'
    }, {
      "class": 'am-check-tree-item-text',
      child: {
        text: ''
      }
    }, {
      "class": 'am-check-tree-item-desc',
      child: {
        text: ''
      }
    }]
  });
};
CheckTreeLeafItem.eventHandler = Object.assign({}, _MCheckTreeBox.MCheckTreeItem.eventHandler);
CheckTreeLeafItem.property = _CTLIPropHandlers["default"];

/***
 * @name data
 * @memberOf CheckTreeLeafItem#
 */

/***.
 * @name text
 * @type {string}
 * @memberOf CheckTreeLeafItem#
 */

/***
 * @name desc
 * @type {string}
 * @memberOf CheckTreeLeafItem#
 */

/***
 * @name value
 * @memberOf CheckTreeLeafItem#
 */
var _default = CheckTreeLeafItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _MCheckTreeBox = _interopRequireDefault(__webpack_require__(82822));
var _CTLBPropHandlers = _interopRequireDefault(__webpack_require__(32130));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _CheckTreeLeafItem = _interopRequireDefault(__webpack_require__(4363));
var _CTLBModes = __webpack_require__(7787);
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; }
/***
 * @extends MCheckTreeBox
 * @constructor
 */
function MCheckTreeLeafBox() {
  _MCheckTreeBox["default"].apply(this, arguments);
  this.$box.addClass('as-check-tree-leaf-box');
}
_OOP["default"].mixClass(MCheckTreeLeafBox, _MCheckTreeBox["default"]);
MCheckTreeLeafBox.tag = 'MCheckTreeLeafBox'.toLowerCase();
MCheckTreeLeafBox.prototype.classes = Object.assign({}, _MCheckTreeBox["default"].prototype.classes, {
  ItemElement: _CheckTreeLeafItem["default"],
  ModeNormal: _CTLBModes.CTLBModeNormal
});
MCheckTreeLeafBox.render = function () {
  return _MCheckTreeBox["default"].render();
};
MCheckTreeLeafBox.property = _CTLBPropHandlers["default"];
MCheckTreeLeafBox.eventHandler = Object.assign({}, _MCheckTreeBox["default"].eventHandler);
_ACore["default"].install(MCheckTreeLeafBox);
var _default = MCheckTreeLeafBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _CKPlaceholder = _interopRequireDefault(__webpack_require__(24471));
var _Array = __webpack_require__(40411);
var _plugins = __webpack_require__(69117);
var _Dom = _interopRequireWildcard(__webpack_require__(64821));
var _file = __webpack_require__(54134);
var _stringGenerate = __webpack_require__(10713);
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; }
/***
 * @extends CKPlaceholder
 * @constructor
 */
function CKInlineShortText() {
  _CKPlaceholder["default"].call(this);
  this.once('editorcreated', this.eventHandler.afterEditorCreated).on('paste', this.eventHandler.paste, true).once('editorready', this.eventHandler.afterEditorReady);
}
_OOP["default"].mixClass(CKInlineShortText, _CKPlaceholder["default"]);
CKInlineShortText.tag = 'CKInlineShortText'.toLowerCase();
CKInlineShortText.property = Object.assign({}, _CKPlaceholder["default"].property);
CKInlineShortText.eventHandler = Object.assign({}, _CKPlaceholder["default"].eventHandler);
CKInlineShortText.render = function () {
  return (0, _ACore._)({
    "class": 'as-ck-inline-short-text',
    extendEvent: ['editorcreated', 'editorready', 'change', 'command'],
    id: (0, _stringGenerate.randomIdent)(8),
    attr: {
      contenteditable: 'true'
    }
  });
};
CKInlineShortText.prototype.mode = 'inline';
CKInlineShortText.prototype._makeInitConfig = function () {
  var config = {
    toolbar: [{
      name: 'extension',
      items: (0, _Array.arrayRemoveNone)(this._extensions.map(function (eName) {
        if (_plugins.CKExtensionDict[eName] && _plugins.CKExtensionDict[eName].command) {
          return _plugins.CKExtensionDict[eName].command;
        }
      }))
    }],
    keystrokes: [[13 /* Enter */, 'blur'], [CKEDITOR.SHIFT + 13 /* Shift + Enter */, 'blur']]
  };
  return config;
};
CKInlineShortText.property.extensions = Object.assign({}, _CKPlaceholder["default"].property.extensions, {
  set: function set(value) {
    value = value || [];
    value.push('simple_text');
    value = (0, _Array.arrayUnique)(value);
    _CKPlaceholder["default"].property.extensions.set.call(this, value);
    this._config = this._makeInitConfig();
  }
});
CKInlineShortText.prototype._hookScroll = function () {
  this.$scrollers = [];
  var c = this.parentElement;
  while (c) {
    this.$scrollers.push(c);
    c = c.parentElement;
  }
  this.$scrollers.push(document);
  this.$scrollers.forEach(function (elt) {
    elt.addEventListener('scroll', this.eventHandler.scroll);
  }.bind(this));
};
CKInlineShortText.prototype._unhookScroll = function () {
  this.$scrollers.forEach(function (elt) {
    elt.removeEventListener('scroll', this.eventHandler.scroll);
  }.bind(this));
};
CKInlineShortText.eventHandler.afterEditorCreated = function () {
  this.editor.on('paste', function (evt) {
    evt.cancel();
  });
};
CKInlineShortText.eventHandler.afterEditorReady = function () {
  this.$toolbarElt = this.$toolbarElt || (0, _ACore.$)('#cke_' + this.attr('id'));
  this['removeToolbar'] = this.removeToolbar;
  this._hookScroll();
  setTimeout(this.eventHandler.tick, 5000);
};
CKInlineShortText.eventHandler.paste = function (event) {
  var self = this;
  var clipboardData = event.clipboardData || window.clipboardData;
  /**Safari bug */
  event.preventDefault();
  if (clipboardData) {
    if (clipboardData.items) {
      var items = Array.prototype.slice.call(clipboardData.items);
      var plainTextItems = items.filter(function (item) {
        return item.type.indexOf('text/plain') >= 0;
      });
      if (plainTextItems.length > 0) {
        var plainTextItem = plainTextItems[0]; //only one item
        plainTextItem.getAsString(function (text) {
          self.editor.insertHtml(self._implicit(text));
        });
      }
    } else {
      var text = event.clipboardData.getData('text/plain');
      if (text) {
        self.editor.insertHtml(self._implicit(text));
      }
    }
  }
};
CKInlineShortText.eventHandler.tick = function () {
  if (!this.isDescendantOf(document.body)) {
    this._unhookScroll();
    return;
  }
  setTimeout(this.eventHandler.tick, 5000);
};

/***
 * @this CKInlineShortText
 */
CKInlineShortText.eventHandler.scroll = function () {
  // If we don't have any active instance of CKEDITOR - return
  if (!CKEDITOR.currentInstance) {
    return;
  }
  if (CKEDITOR.currentInstance.element.$ !== this) return;
  // Save the elements we need to work with
  if (!this.isDescendantOf(document.body)) {
    this._unhookScroll();
    return;
  }
  this.$toolbarElt = this.$toolbarElt || (0, _ACore.$)('#cke_' + this.attr('id'));
  var toolbarElt = this.$toolbarElt;
  if (!toolbarElt) return;
  var bound = this.getBoundingClientRect();
  var toolBound = toolbarElt.getBoundingClientRect();
  var outbound = (0, _Dom.traceOutBoundingClientRect)(this);
  var left = Math.max(0, bound.left);
  var top = bound.top - toolBound.height;
  if (outbound.top > bound.bottom || outbound.bottom < bound.top) {
    top = -1000;
  } else if (bound.top < toolBound.height) {
    top = bound.bottom;
  }
  toolbarElt.addStyle({
    top: top + 'px',
    left: left + 'px'
  });
};
CKInlineShortText.property.removeToolbar = {
  set: function set(value) {
    this._removeToolbar = !!value;
    if (this.$toolbarElt) {
      if (this._removeToolbar) {
        this.$toolbarElt.addClass('as-hidden');
      } else {
        this.$toolbarElt.removeClass('as-hidden');
      }
    }
  },
  get: function get() {
    return this._removeToolbar;
  }
};
_ACore["default"].install(CKInlineShortText);
var _default = CKInlineShortText;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(49538);
var _plugins = __webpack_require__(69117);
var _CKStickyToolbarController = _interopRequireDefault(__webpack_require__(88214));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
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; }
_Dom["default"].documentReady.then(function () {
  setTimeout(_plugins.ckInit, 100);
});

/***
 * @extends AElement
 * @constructor
 */
function CKPlaceholder() {
  var _this = this;
  (0, _plugins.ckInit)();
  this.$attachhook = (0, _ACore._)('attachhook').addTo(this);
  this.$attachhook.once('attached', this.eventHandler.attached);
  this._pendingData = '';
  this.isReady = false;
  this.editor = null;
  this._extensions = [];
  this._config = this._makeInitConfig();
  this.afterReady = new Promise(function (rs) {
    _this.on('editorready', rs);
  });
  this.stickyToolbarCtrl = null;
  /***
   * @type {{}}
   * @name config
   * @memberOf CKPlaceholder#
   */
  /***
   * @type {string[]}
   * @name extensions
   * @memberOf CKPlaceholder#
   */
  /***
   *
   * @type {boolean}
   */
  this.stickyToolbar = true;
}
CKPlaceholder.tag = 'CKPlaceholder'.toLowerCase();
CKPlaceholder.render = function () {
  return (0, _ACore._)({
    extendEvent: ['editorcreated', 'editorready', 'change', 'command', 'focus'],
    "class": 'as-ck-placeholder'
  });
};
CKPlaceholder.prototype.mode = 'replace';

/**
 *
 * @param {string}data
 * @private
 * @returns {string}
 */
CKPlaceholder.prototype._implicit = function (data) {
  if (typeof data !== "string") data = '';
  var self = this;
  return this._extensions.reverse().reduce(function (ac, cr) {
    var extension = _plugins.CKExtensionDict[cr];
    if (extension.implicit) {
      ac = extension.implicit(ac, self);
    }
    return ac;
  }, data);
};

/**
 *
 * @param {string}data
 * @private
 * @returns {string}
 */
CKPlaceholder.prototype._explicit = function (data) {
  var self = this;
  return this._extensions.reduce(function (ac, cr) {
    var extension = _plugins.CKExtensionDict[cr];
    if (extension && extension.explicit) {
      ac = extension.explicit(ac, self);
    }
    return ac;
  }, data);
};

/***
 * @returns {{}}
 * @protected
 */
CKPlaceholder.prototype._makeInitConfig = function () {
  return {};
};
CKPlaceholder.prototype.selectNext = function () {
  var editor = this.editor;
  if (!editor) return;
  var ranges = editor.getSelection().getRanges();
  // var startIndex = editor.element.getHtml().indexOf(findString);
  // if (startIndex != -1)  {
  //     ranges[0].setStart(element.getFirst(), startIndex);
  //     ranges[0].setEnd(element.getFirst(), startIndex + findString.length);
  //     sel.selectRanges([ranges[0]]);
  // }
};

/***
 * @memberOf CKPlaceholder#
 * @type {{}}
 */
CKPlaceholder.eventHandler = {};

/***
 * @this CKPlaceholder
 */
CKPlaceholder.eventHandler.attached = function () {
  this.$attachhook.remove();
  this.editor = this.mode === 'replace' ? CKEDITOR.replace(this, (0, _plugins.ckMakeDefaultConfig)(this.config, this.extensions, this)) : CKEDITOR.inline(this, (0, _plugins.ckMakeDefaultConfig)(this.config, this.extensions, this));
  this.editor.placeHolderElt = this;
  this.editor.on('instanceReady', this.eventHandler.instanceReady);
  this.editor.on('change', this.eventHandler.change);
  if (this.mode === 'replace') {
    this.editor.on('focus', function (event) {
      this.emit('focus', {
        target: this,
        type: 'focus',
        originalEvent: event
      });
    }.bind(this));
  }
  this._extensions.forEach(function (name) {
    var e = _plugins.CKExtensionDict[name];
    if (e && e.extendMethods) {
      Object.assign(this, e.extendMethods);
    }
  }.bind(this));
  this.emit('editorcreated', {
    type: 'editorcreated',
    target: this,
    editor: this.editor
  }, this);
};
CKPlaceholder.eventHandler.instanceReady = function () {
  this.isReady = true;
  if (this._pendingData && this._pendingData.length > 0) {
    this.editor.setData(this._implicit(this._pendingData));
    this._pendingData = null;
  }
  this.emit('editorready', {
    type: 'editorready',
    target: this,
    editor: this.editor
  }, this);
};
CKPlaceholder.eventHandler.change = function () {
  this.emit('change', {
    type: 'change',
    target: this,
    editor: this.editor
  }, this);
};
CKPlaceholder.property = {};
CKPlaceholder.property.data = {
  /***
   * @this CKPlaceholder
   * @param data
   */
  set: function set(data) {
    if (typeof data !== "string") data = '';
    if (this.isReady) {
      this.editor.setData(this._implicit(data));
    } else {
      this._pendingData = data;
    }
  },
  /***
   * @this CKPlaceholder
   * @returns {string}
   */
  get: function get() {
    if (this.isReady) return this._explicit(this.editor.getData());
    return this._pendingData;
  }
};
CKPlaceholder.property.rawData = {
  get: function get() {
    if (this.editor) this.editor.getData();else return this._implicit(this._pendingData);
  }
};
CKPlaceholder.property.config = {
  set: function set(value) {
    if (this.editor) {
      throw new Error("Can not set config after the CKEditor created");
    }
    this._config = Object.assign(this._makeInitConfig(), value);
  },
  get: function get() {
    return this._config;
  }
};
CKPlaceholder.property.extensions = {
  set: function set(value) {
    if (this.editor) {
      throw new Error("Can not set extensions after the CKEditor created");
    }
    value = value || [];
    if (typeof value === "string") value = [value];
    if (!(value instanceof Array)) value = [];
    this._extensions = value.filter(function (c) {
      return typeof c === "string" && c.length > 0 && _plugins.CKExtensionDict[c];
    });
    this._extensions = value;
  },
  get: function get() {
    return this._extensions;
  }
};
CKPlaceholder.property.stickyToolbar = {
  set: function set(value) {
    var _this2 = this;
    if (value) {
      this.addClass('as-has-sticky-toolbar');
    } else {
      return this.removeClass('as-has-sticky-toolbar');
    }
    this.afterReady.then(function () {
      if (_this2.mode !== 'replace') return;
      if (_this2.stickyToolbar) {
        if (!_this2.stickyToolbarCtrl) {
          _this2.stickyToolbarCtrl = new _CKStickyToolbarController["default"](_this2);
        }
        _this2.stickyToolbarCtrl.start();
      } else {
        _this2.editor.container.$.classList.remove('as-has-sticky-toolbar');
        if (_this2.stickyToolbarCtrl) _this2.stickyToolbarCtrl.stop();
      }
    });
  },
  get: function get() {
    return this.hasClass('as-has-sticky-toolbar');
  }
};
_ACore["default"].install(CKPlaceholder);
var _default = CKPlaceholder;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _Dom = __webpack_require__(64821);
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function CKStickyToolbarController(holderElt) {
  this.editor = holderElt.editor;
  this.$elt = this.editor.container.$;
  this.activated = false;
  this['onScroll'] = this.onScroll.bind(this);
  this.trackedScroller = [];
}
CKStickyToolbarController.prototype.start = function () {
  if (this.activated) return;
  var c = this.$elt.parentElement;
  while (c) {
    c.addEventListener('scroll', this.onScroll);
    c = c.parentElement;
  }
};
CKStickyToolbarController.prototype.stop = function () {
  if (!this.activated) return;
  while (this.trackedScroller.length > 0) {
    this.trackedScroller.pop().removeEventListener('scroll', this.onScroll);
  }
};
CKStickyToolbarController.prototype.onScroll = function (event) {
  if (!_AElement["default"].prototype.isDescendantOf.call(this.$elt, document.body)) {
    this.stop();
    return;
  }
  this.$toolbar = this.$toolbar || (0, _ACore.$)('.cke_top', this.$elt);
  if (!this.$toolbar) return;
  var oBound = (0, _Dom.traceOutBoundingClientRect)(this.$elt.parentElement);
  var bound = this.$elt.getBoundingClientRect();
  var tBound = this.$toolbar.getBoundingClientRect();
  if (bound.top < oBound.top && oBound.top + tBound.height + 30 < bound.bottom) {
    this.$toolbar.addStyle('transform', 'translate(0, ' + (oBound.top - bound.top) + 'px)');
  } else {
    this.$toolbar.removeStyle('transform');
  }
};
var _default = CKStickyToolbarController;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var name = 'dynamic_link';
var command = 'insert_dynamic_link';
function init(editor) {
  editor.widgets.add(name, {
    button: 'Create Dynamic Link',
    template: '<a class="as-ck-widget-dynamic-link" data-link-id="1234" href="https://absol.cf">absol.cf</a>',
    allowedContent: 'a(!as-ck-widget-dynamic-link)',
    requiredContent: 'a(as-ck-widget-dynamic-link)',
    upcast: function upcast(element) {
      return element.name === 'a' && element.hasClass('as-ck-widget-dynamic-link');
    }
  });
  editor.ui.addButton(command, {
    label: 'Insert Dynamic Link',
    command: command
  });
  editor.addCommand(command, {
    exec: function exec(editor) {
      if (editor.placeHolderElt) {
        editor.placeHolderElt.emit('command', {
          command: command,
          target: editor,
          type: 'command'
        });
      }
    }
  });
}
var parserDiv = (0, _ACore._)('div');
function explicit(data, placeHolderElt) {
  parserDiv.innerHTML = data;
  (0, _ACore.$$)('.as-ck-widget-dynamic-link', parserDiv).forEach(function (elt) {});
  return parserDiv.innerHTML;
}
function implicit(data, placeHolderElt) {
  parserDiv.innerHTML = data;
  (0, _ACore.$$)('.as-ck-widget-dynamic-link', parserDiv).forEach(function (elt) {
    var id = elt.getAttribute('data-link-id');
    var info = placeHolderElt.dynamicLinks && placeHolderElt.dynamicLinks[id];
    if (info) {
      elt.setAttribute('href', info.href);
      elt.innerHTML = info.text || info.href;
    }
  });
  return parserDiv.innerHTML;
}
var _default = {
  name: name,
  command: command,
  implicit: implicit,
  explicit: explicit,
  plugin: {
    requires: 'widget',
    init: init
  },
  extendMethods: {
    /***
     * @this CKPlaceholder
     * @memberOf CKPlaceholder#
     * @param {string} id
     * @param {string=} href
     * @param {string=} text
     *
     */
    insertDynamicLink: function insertDynamicLink(id, href, text) {
      var info = this.dynamicLinks && this.dynamicLinks[id] || {
        href: '.',
        text: 'undefined'
      };
      if (!href) {
        href = info.href;
      }
      if (!text) {
        text = info.text;
      }
      this.editor.insertHtml('<a class="as-ck-widget-dynamic-link" data-link-id="' + id + '" href="' + href + '">' + text + '</a>');
    },
    getSelectedDynamicLink: function getSelectedDynamicLink() {
      var sel = this.editor.getSelection();
      if (!sel) return null;
      var elt = sel.getSelectedElement();
      if (!elt) return null;
      if (!elt.hasClass('cke_widget_wrapper_as-ck-widget-dynamic-link')) return null;
      return elt.$.firstChild && elt.$.firstChild.getAttribute('data-link-id') || null;
    }
  }
};
/***
 * @name dynamicLinks
 * @type {{}}
 * @memberOf CKPlaceholder#
 */
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _TemplateString = _interopRequireDefault(__webpack_require__(73021));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var name = 'expression';
var command = 'insert_expression';
function init(editor) {
  editor.widgets.add(name, {
    button: 'Create Expression',
    template: '<span class="as-ck-widget-expression">&#0123;&#0123; expression &#0125;&#0125;</span>',
    allowedContent: 'span(!as-ck-widget-expression)',
    requiredContent: 'span(as-ck-widget-expression)',
    upcast: function upcast(element) {
      return element.name === 'span' && element.hasClass('as-ck-widget-expression');
    }
  });
  editor.ui.addButton(command, {
    label: 'Insert expression',
    command: command
  });
  editor.addCommand(command, {
    exec: function exec(editor) {
      if (editor.placeHolderElt) {
        editor.placeHolderElt.emit('command', {
          command: command,
          target: editor,
          type: 'command'
        });
      }
    }
  });
}
var parserDiv = (0, _ACore._)('div');
function explicit(data, placeHolderElt) {
  parserDiv.innerHTML = data;
  (0, _ACore.$$)('.as-ck-widget-expression', parserDiv).forEach(function (elt) {
    var text = elt.innerHTML;
    text.replace(/&#0123;/g, '{').replace(/&#0125;/g, '}');
    elt.parentElement.replaceChild((0, _ACore._)({
      text: text
    }), elt);
  });
  return parserDiv.innerHTML;
}
function implicit(data, placeHolderElt) {
  var template = _TemplateString["default"].parse(data);
  return template.parts.slice().map(function (part) {
    if (part.type === 1) {
      return '<span class="as-ck-widget-expression">&#0123;&#0123; ' + part.data.trim() + ' &#0125;&#0125;</span>';
    } else return part.data;
  }).join('');
}
var _default = {
  name: name,
  command: command,
  implicit: implicit,
  explicit: explicit,
  plugin: {
    requires: 'widget',
    init: init
  },
  extendMethods: {
    /***
     * @this CKPlaceholder
     * @memberOf CKPlaceholder#
     * @param expression
     *
     */
    insertExpression: function insertExpression(expression) {
      this.editor.insertHtml('<span class="as-ck-widget-expression">&#0123;&#0123; ' + expression.trim() + ' &#0125;&#0125;</span>');
    },
    getSelectedExpression: function getSelectedExpression() {
      var sel = this.editor.getSelection();
      if (!sel) return null;
      var elt = sel.getSelectedElement();
      if (!elt) return null;
      if (!elt.hasClass('cke_widget_wrapper_as-ck-widget-expression')) return null;
      var exp = elt.getText();
      exp = exp.replace(/&#0123;|&#0125;|\{|\}/g, '').trim();
      return exp;
    }
  }
};
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var name = 'image_mgn';
var command = 'image_mgn_dialog';
function init(editor) {
  editor.ui.addButton(command, {
    label: 'Insert Image',
    command: command
  });
  editor.addCommand(command, {
    exec: function exec(editor) {
      if (window.contentModule && window.contentModule.chooseFile) {
        window.contentModule.chooseFile({
          type: "image_file"
        }).then(function (result) {
          if (result instanceof Array) result = result[0];
          if (result) {
            editor.insertHtml('<img alt="' + (result.title || result.name) + '" src="' + result.url + '"  style="max-width: 100%; border-width: 1px; border-style: solid;"/>');
          }
        }.bind(this));
      }
    }
  });
}
function explicit(data, placeHolderElt) {
  return data;
}
var tokenRgx = /("([^\\"]|(\\.))*")|([a-zA-Z_$A-Z]([a-zA-Z_$A-Z0-9]*))/g;
function implicit(data, placeHolderElt) {
  return data;
}
var _default = {
  name: name,
  command: command,
  // implicit: implicit,
  // explicit: explicit,
  plugin: {
    init: init
  }
};
/***
 * @name variables
 * @type {{}}
 * @memberOf CKPlaceholder#
 */
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var name = 'simple_text';
var parserDiv = (0, _ACore._)('div');
function explicit(data, placeHolderElt) {
  parserDiv.innerHTML = data.replace(/&nbsp;/g, ' ');
  return parserDiv.innerText;
}
function implicit(data, placeHolderElt) {
  return data
  //.replace(/</g, '&lt;').replace(/</g, '&gt;').replace(/"/g, '&quot;').replace(/&/g, '&amp;')
  .replace(/[\r\n]/g, '');
}
var _default = {
  name: name,
  implicit: implicit,
  explicit: explicit
};
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _TemplateString = _interopRequireDefault(__webpack_require__(73021));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var name = 'variable';
var command = 'insert_variable';
function init(editor) {
  editor.widgets.add(name, {
    button: 'Create Variable',
    template: '<span class="as-ck-widget-variable" title="variable">variable</span>',
    allowedContent: 'span(!as-ck-widget-variable)',
    requiredContent: 'span(as-ck-widget-variable)',
    upcast: function upcast(element) {
      return element.name === 'span' && element.hasClass('as-ck-widget-variable');
    }
  });
  editor.ui.addButton(command, {
    label: 'Insert Variable',
    command: command
  });
  editor.addCommand(command, {
    exec: function exec(editor) {
      if (editor.placeHolderElt) {
        editor.placeHolderElt.emit('command', {
          command: command,
          target: editor,
          type: 'command'
        });
      }
    }
  });
}
var parserDiv = (0, _ACore._)('div');
function explicit(data, placeHolderElt) {
  parserDiv.innerHTML = data;
  (0, _ACore.$$)('.as-ck-widget-variable', parserDiv).forEach(function (elt) {
    var text = elt.innerHTML;
    elt.parentElement.replaceChild((0, _ACore._)({
      text: text
    }), elt);
  });
  return parserDiv.innerHTML;
}
var tokenRgx = /("([^\\"]|(\\.))*")|([a-zA-Z_$A-Z]([a-zA-Z_$A-Z0-9]*))/g;
function implicit(data, placeHolderElt) {
  data = (data || '') + '';
  data = data.replace(tokenRgx, function (full, isString, u1, u2, isIdent) {
    if (isIdent && placeHolderElt.variables && placeHolderElt.variables[isIdent]) {
      return placeHolderElt.makeVariableHtml(isIdent);
    } else return full;
  });
  return data;
}
var _default = {
  name: name,
  command: command,
  implicit: implicit,
  explicit: explicit,
  plugin: {
    requires: 'widget',
    init: init
  },
  extendMethods: {
    makeVariableHtml: function makeVariableHtml(variable, text) {
      variable = variable.trim();
      if (this.variables && this.variables[variable]) {
        text = this.variables[variable].text;
      }
      text = text || variable;
      return '<span class="as-ck-widget-variable"  title="' + text + '">' + variable.trim() + '</span>';
    },
    /***
     * @this CKPlaceholder
     * @memberOf CKPlaceholder#
     * @param variable
     *
     */
    insertVariable: function insertVariable(variable, text) {
      this.editor.insertHtml(this.makeVariableHtml(variable, text));
    },
    getSelectedVariable: function getSelectedVariable() {
      var sel = this.editor.getSelection();
      if (!sel) return null;
      var elt = sel.getSelectedElement();
      if (!elt) return null;
      if (!elt.hasClass('cke_widget_wrapper_as-ck-widget-variable')) return null;
      var exp = elt.getText();
      exp = exp.trim();
      return exp;
    }
  }
};
/***
 * @name variables
 * @type {{}}
 * @memberOf CKPlaceholder#
 */
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _VideoUrlDialog = __webpack_require__(12772);
var _ACore = __webpack_require__(34093);
var _base = __webpack_require__(6954);
var name = 'video';
var command = 'insert_video';
function getInfoFromCKImage(elt) {
  var initInfo = null;
  if (elt.getAttribute('data-node-type') === 'video') {
    initInfo = JSON.parse((0, _base.base64DecodeUnicode)(elt.getAttribute('data-info')));
    initInfo.embedUrl = elt.getAttribute('data-embed-url');
    initInfo.image = elt.getAttribute('src');
    initInfo.image = elt.getAttribute('src');
  }
  return initInfo;
}
function init(editor) {
  editor.ui.addButton(command, {
    label: 'Insert Video',
    command: command
  });
  editor.on('doubleclick', function (event) {
    var info;
    if (event.data && event.data.element) {
      info = getInfoFromCKImage(event.data.element);
      if (info) {
        event.cancel();
        editor.execCommand(command);
      }
    }
  });
  editor.addCommand(command, {
    exec: function exec(editor) {
      var initInfo;
      var sel = editor.getSelection();
      var elt;
      if (sel) {
        elt = sel.getSelectedElement();
      }
      if (elt) {
        initInfo = getInfoFromCKImage(elt);
      }
      (0, _VideoUrlDialog.openVideUrlDialog)(initInfo).then(function (result) {
        var savedInfo = Object.assign({}, result);
        delete savedInfo.image;
        delete savedInfo.embedUrl;
        if (result) {
          var html = "<img src=\"".concat(result.image, "\" data-type=\"").concat(result.type, "\"                         onload=\"window.ckeditorVideoInit && window.ckeditorVideoInit(this)\"                         data-embed-url=\"").concat(result.embedUrl, "\"                         width=\"").concat(result.displayWidth, "px\"  height=\"").concat(result.displayHeight, "px\"                          data-node-type=\"video\"                           data-info=\"").concat((0, _base.base64EncodeUnicode)(JSON.stringify(savedInfo)), "\"\n                          \n                         >");
          editor.insertHtml(html);
        }
      });
    }
  });
}
window.ckeditorVideoInit = function (elt) {
  (0, _ACore.$)(elt);
  if (!elt.isDescendantOf(document.body)) return;
  var newElt;
  var type = elt.attr('data-type');
  if (type.startsWith('video/')) {
    newElt = (0, _ACore._)({
      tag: 'video',
      attr: {
        crossorigin: "anonymous",
        crossOrigin: "anonymous",
        preload: 'auto',
        src: elt.attr('data-embed-url'),
        width: elt.attr('width'),
        height: elt.attr('height'),
        controls: true
      }
    });
  } else {
    newElt = (0, _ACore._)({
      tag: 'iframe',
      attr: {
        src: elt.attr('data-embed-url'),
        width: elt.attr('width'),
        height: elt.attr('height')
      }
    });
  }
  elt.selfReplace(newElt);
};
var _default = {
  name: name,
  command: command,
  plugin: {
    init: init
  },
  extendMethods: {}
};
/***
 * @name variables
 * @type {{}}
 * @memberOf CKPlaceholder#
 */
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.CKStylesSetDefault = exports.CKExtensions = exports.CKExtensionDict = void 0;
exports.ckAddDefaultStyleSet = ckAddDefaultStyleSet;
exports.ckInit = ckInit;
exports.ckMakeDefaultConfig = ckMakeDefaultConfig;
var _ckcontentstyleCss = _interopRequireDefault(__webpack_require__(37828));
var _file = __webpack_require__(54134);
var _ACore = __webpack_require__(34093);
var _Array = __webpack_require__(40411);
var _ExpressionExtension = _interopRequireDefault(__webpack_require__(23194));
var _SimpleTextExtension = _interopRequireDefault(__webpack_require__(80023));
var _VariableExtension = _interopRequireDefault(__webpack_require__(73888));
var _DynamicLinkExtension = _interopRequireDefault(__webpack_require__(95637));
var _ImageFileExtension = _interopRequireDefault(__webpack_require__(69534));
var _VideoExtension = _interopRequireDefault(__webpack_require__(88829));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var ckContentStyleUrl;
var ckPluginInitialized = false;
var CKExtensions = [_ExpressionExtension["default"], _SimpleTextExtension["default"], _VariableExtension["default"], _DynamicLinkExtension["default"], _ImageFileExtension["default"], _VideoExtension["default"]];
exports.CKExtensions = CKExtensions;
var CKExtensionDict = CKExtensions.reduce(function (ac, cr) {
  ac[cr.name] = cr;
  return ac;
}, {});
exports.CKExtensionDict = CKExtensionDict;
var CKStylesSetDefault = [{
  name: 'Notice',
  element: 'p',
  attributes: {
    "class": 'as-ck-alert as-variant-notice'
  }
}, {
  name: 'Warning',
  element: 'p',
  attributes: {
    "class": 'as-ck-alert as-variant-warning'
  }
}, {
  name: 'Tip',
  element: 'p',
  attributes: {
    "class": 'as-ck-alert as-variant-info'
  }
}, {
  name: 'Success',
  element: 'p',
  attributes: {
    "class": 'as-ck-alert as-variant-success'
  }
}];
exports.CKStylesSetDefault = CKStylesSetDefault;
function ckInit() {
  if (!window.CKEDITOR) return;
  if (ckPluginInitialized) return;
  var styleCode = _ckcontentstyleCss["default"].replace(/\$basePath/g, CKEDITOR.basePath);
  ckContentStyleUrl = URL.createObjectURL((0, _file.stringToBlob)(styleCode, 'css'));
  ckPluginInitialized = true;
  document.head.appendChild((0, _ACore._)('<link rel="stylesheet" href="' + ckContentStyleUrl + '">'));
  if (!CKEDITOR.stylesSet.get('as_styles_set_default')) {
    CKEDITOR.stylesSet.add('as_styles_set_default', CKStylesSetDefault);
  }
  CKExtensions.forEach(function (e) {
    if (e.plugin) {
      CKEDITOR.plugins.add(e.name, e.plugin);
    }
  });
}
function ckMakeDefaultConfig(config, extensions, holderElt) {
  ckInit();
  var userImageFileDialog = !!(window.contentModule && window.contentModule.chooseFile);

  /*
  * if (!this.attributes.directUpload && window.contentModule && window.contentModule.chooseFile) {
      window.contentModule.chooseFile({ type: "image_file" }).then(function (result) {
          if (result) {
              this.attributes.value = result;
          }
      }.bind(this));
  }
  * */
  config = config || {};
  //disable special chars encode
  config.entities = false;
  config.stylesSet = ['as_styles_set_default'].concat((0, _Array.arrayUnique)((config.stylesSet || '').trim().split(/\s*,\s*/))).filter(function (c) {
    return !!c;
  }).join(',');
  if (extensions) extensions.push('video');
  if (extensions && extensions.indexOf(_VariableExtension["default"].name) >= 0) {
    config.title = false;
  }
  if (config.toolbar === 'SIMPLE') {
    config.toolbar = [{
      name: 'basicstyles',
      items: ['Bold', 'Italic', 'Underline', 'TextColor', 'BGColor', 'NumberedList', 'BulletedList', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', userImageFileDialog ? 'image_mgn_dialog' : 'Image']
    },
    // { name: 'styles', items: ['Styles', 'Format', 'Font', 'FontSize'] },
    {
      name: "extensions",
      items: extensions.map(function (eName) {
        if (CKExtensionDict[eName] && CKExtensionDict[eName].command) {
          return CKExtensionDict[eName].command;
        }
      }).filter(function (u) {
        return !!u;
      })
    }, {
      name: 'tools',
      items: ['Maximize']
    }];
  } else if (!config.toolbar || config.toolbar === "ADVANCED") {
    config.toolbar = [{
      name: 'basicstyles',
      items: ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript']
    }, {
      name: 'colors',
      items: ['TextColor', 'BGColor']
    }, {
      name: "format",
      items: ['CopyFormatting', 'RemoveFormat']
    }, {
      name: 'paragraph',
      items: ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock']
    }, {
      name: 'styles',
      items: ['Styles', 'Format', 'Font', 'FontSize']
    }, {
      name: 'links',
      items: ['Link', 'Unlink', 'Anchor']
    }, {
      name: 'insert',
      items: [userImageFileDialog ? 'image_mgn_dialog' : 'Image', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe']
    }, {
      name: 'tools',
      items: ['Maximize', 'ShowBlocks']
    }, {
      name: 'editing',
      items: ['Find', 'Replace']
    }, {
      name: "extensions",
      items: extensions.map(function (eName) {
        if (CKExtensionDict[eName] && CKExtensionDict[eName].command) {
          return CKExtensionDict[eName].command;
        }
      }).filter(function (u) {
        return !!u;
      })
    }, {
      name: 'document',
      items: ['Source']
    }];
  }
  config.toolbar = config.toolbar.filter(function (i) {
    return i.items && i.items.length > 0;
  });
  config.toolbar = [config.toolbar.reduce(function (ac, cr) {
    // if (ac.items.length > 0)
    //     ac.items.push('-');
    var items = cr.items.filter(function (it) {
      return it !== '-';
    });
    ac.items.push.apply(ac.items, items);
    return ac;
  }, {
    name: 'nogroup',
    items: []
  })];
  if (!config.height) {
    config.height = '500px';
  }
  var contentsCss = [ckContentStyleUrl];
  if (typeof config.contentsCss === "string") {
    contentsCss.push(config.contentsCss);
  } else if (config.contentsCss instanceof Array) {
    contentsCss.push.apply(contentsCss, config.contentsCss);
  }
  var has = contentsCss.some(function (url) {
    return url.indexOf('family=Material+Icons') >= 0;
  });
  if (!has) {
    contentsCss.push('https://fonts.googleapis.com/icon?family=Material+Icons');
  }
  has = contentsCss.some(function (url) {
    return url.indexOf(CKEDITOR.basePath + 'contents.css') >= 0;
  });
  if (!has) {
    contentsCss.push(CKEDITOR.basePath + 'contents.css?time=' + Math.random());
  }
  config.contentsCss = contentsCss;
  var extraPlugins = ['image_mgn'];
  if (holderElt.stickyToolbar) {
    extraPlugins.push('autogrow');
    config.autoGrow_minHeight = 400;
  }
  if (typeof config.extraPlugins === 'string') {
    extraPlugins.push.apply(extraPlugins, config.extraPlugins.trim().split(/\s*,\s*/));
  } else if (extraPlugins instanceof Array) {
    extraPlugins.push.apply(extraPlugins, config.extraPlugins);
  }
  extraPlugins = extraPlugins.filter(function (c) {
    return typeof c === 'string' && !!c;
  });
  CKExtensions.forEach(function (e) {
    if (extensions.indexOf(e.name) >= 0 && e.plugin) extraPlugins.push(e.name);
  });
  extraPlugins = (0, _Array.arrayUnique)(extraPlugins);
  config.extraPlugins = extraPlugins.join(',');
  config.allowedContent = true; //false: you must add button ui => bug

  Object.assign(config, {
    //style

    // htmlEncodeOutput: false,
    // entities: false,
    // basicEntities: false,
    // // config.cloudServices_uploadUrl: 'DDFFE2739B83A73DDF16AB641ECA2',
    // // config.cloudServices_tokenUrl: 'https://lab.daithangminh.vn/hr_system_settings/php/uploadMedia.php',
    // extraPlugins: 'LinkDB, Note',
    // filebrowserBrowseUrl: 'js/ckfinder/ckfinder.html',
    // filebrowserImageBrowseUrl: 'js/ckfinder/ckfinder.html?type=Images',
    // filebrowserFlashBrowseUrl: 'js/ckfinder/ckfinder.html?type=Flash',
    // filebrowserUploadUrl: 'js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
    // filebrowserImageUploadUrl: 'js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
    // filebrowserFlashUploadUrl: 'js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
  });
  return config;
}
function ckAddDefaultStyleSet(ckEditor) {}

/***/ }),

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

"use strict";


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 _OOP = _interopRequireDefault(__webpack_require__(38608));
var _Color = _interopRequireDefault(__webpack_require__(64974));
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(41693);
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 }; }
function ColorPicker() {
  var res = (0, _ACore._)(['<div class="absol-color-picker">', '    <div class="absol-color-picker-color">', '        <div class="absol-color-picker-sat">', '            <div class="absol-color-picker-val">', '                <div class="absol-color-dragger"></div>', '            </div>', '        </div>', '    </div>', '    <div class="absol-color-picker-hue-range">', '        <div class="absol-color-picker-hue">', '            <div class="absol-color-dragger"></div>', '        </div>', '    </div>', '    <div class="absol-color-picker-alpha-range">', '        <div class="absol-color-picker-alpha">', '            <div class="absol-color-dragger"></div>', '        </div>', '    </div>', '    <div class="absol-color-picker-input">', " <div class=\"absol-color-picker-text-container\">\n            <span class=\"f-mode\">hsba(</span>\n            <span class=\"absol-editabe-text num0\">0</span><span class=\"separator0\">deg, </span>\n            <span class=\"absol-editabe-text num1\">0</span><span class=\"separator1\">%, </span>\n            <span class=\"absol-editabe-text num2\">0</span><span class=\"separator2\">%, </span>\n            <span class=\"absol-editabe-text num3\">0</span><span>)</span>\n        </div>", '    </div>', '    <button class="absol-color-picker-mode">HSB</button>', '</div>'].join(''));
  res.$fMode = (0, _ACore.$)('.f-mode', res);
  res.$sep0 = (0, _ACore.$)('.separator0', res);
  res.$sep1 = (0, _ACore.$)('.separator1', res);
  res.$sep2 = (0, _ACore.$)('.separator2', res);
  res.$num0 = (0, _ACore._)('editabletext.num0');
  res.$num1 = (0, _ACore._)('editabletext.num1');
  res.$num2 = (0, _ACore._)('editabletext.num2');
  res.$num3 = (0, _ACore._)('editabletext.num3');
  ColorPicker.defaultNumberInputHandle(res.$num0);
  ColorPicker.defaultNumberInputHandle(res.$num1);
  ColorPicker.defaultNumberInputHandle(res.$num2);
  ColorPicker.defaultNumberInputHandle(res.$num3);
  res._num0LimitOption = ColorPicker.numberInputHandleLimit(res.$num0, 0, 360);
  res._num1LimitOption = ColorPicker.numberInputHandleLimit(res.$num1, 0, 100, 0);
  res._num2LimitOption = ColorPicker.numberInputHandleLimit(res.$num2, 0, 100, 0);
  res._num3LimitOption = ColorPicker.numberInputHandleLimit(res.$num3, 0, 1, 3);
  (0, _ACore.$)(".absol-editabe-text.num0", res).selfReplace(res.$num0);
  (0, _ACore.$)(".absol-editabe-text.num1", res).selfReplace(res.$num1);
  (0, _ACore.$)(".absol-editabe-text.num2", res).selfReplace(res.$num2);
  (0, _ACore.$)(".absol-editabe-text.num3", res).selfReplace(res.$num3);
  res.$num0.text = '0';
  res.$num1.text = '0';
  res.$num2.text = '0';
  res.$num3.text = '0';
  res.switchMode = {
    RGBA: 'HSBA',
    HSBA: 'HSLA',
    HSLA: 'RGBA',
    RGB: 'HSB',
    HSB: 'HSL',
    HSL: 'RGB'
  };
  res.toggleAlpha = {
    RGBA: 'RGB',
    HSBA: 'HSB',
    HSLA: 'HSL',
    RGB: 'RGBA',
    HSB: 'HSBA',
    HSL: 'HSLA'
  };
  res.defineEvent(['change']);
  res._saturation = 0;
  res._brightness = 0;
  res._hue = 0;
  res._alpha = 1;
  res.$color = (0, _ACore.$)('.absol-color-picker-color', res);
  res.$colorVal = (0, _ACore.$)('.absol-color-picker-val', res);
  res.$draggerVal = (0, _ACore.$)('.absol-color-dragger', res.$colorVal);
  res.eventHandler = _OOP["default"].bindFunctions(res, ColorPicker.eventHandler);
  res.$colorVal.on('pointerdown', res.eventHandler.colorPointerDown, true);
  res.$hue = (0, _ACore.$)('.absol-color-picker-hue', res);
  res.$draggerHue = (0, _ACore.$)('.absol-color-dragger', res.$hue);
  res.$hue.on('pointerdown', res.eventHandler.huePointerDown);
  res.$alpha = (0, _ACore.$)('.absol-color-picker-alpha', res);
  res.$alpha.on('pointerdown', res.eventHandler.alphaPointerDown);
  res.$draggerAlpha = (0, _ACore.$)('.absol-color-dragger', res.$alpha);
  res.$textContainer = (0, _ACore.$)('.absol-color-picker-text-container', res);
  res.$mode = (0, _ACore.$)('.absol-color-picker-mode', res);
  res.$mode.on('click', res.eventHandler.modeClick);
  //todo

  res.$num0.on('blur', res.eventHandler.inputBlur);
  res.$num1.on('blur', res.eventHandler.inputBlur);
  res.$num2.on('blur', res.eventHandler.inputBlur);
  res.$num3.on('blur', res.eventHandler.inputBlur);
  return res;
}
ColorPicker.defaultNumberInputHandle = function (element) {
  element.on('keydown', function (event) {
    if (!event.key.match(/^[0-9\.]$/) && event.key.length == 1) {
      event.preventDefault();
    }
    if (event.key == 'Tab') {
      event.preventDefault();
    }
    if (event.key == 'Enter') {
      this.edit(false);
    }
    if (event.key == '.' && this.text.indexOf('.') >= 0) {
      event.preventDefault();
    }
    if (this.text.length >= 6 && event.key.length == 1) event.preventDefault();
  }).on('click', function (event) {
    element.edit(true, true);
  }).on('keydown', function (event) {
    if (event.key == 'Tab') {
      var parent = element.parentNode;
      var firstFriend;
      var found = false;
      var nextFriend = (0, _ACore.$)('editabletext', parent, function (elt) {
        if (elt.getComputedStyleValue('display') == "none") return;
        if (!firstFriend) {
          firstFriend = elt;
        }
        if (elt == element) {
          found = true;
        } else if (found) {
          return true;
        }
      });
      nextFriend = nextFriend || firstFriend;
      if (nextFriend) {
        nextFriend.edit(true, true);
      }
    }
  });
};
ColorPicker.numberInputHandleLimit = function (element, min, max, fixed) {
  var option = {
    min: min,
    max: max,
    fixed: fixed || 0,
    enable: true
  };
  element.on('blur', function (event) {
    if (!option.enable) return;
    var number = parseFloat(element.text);
    if (isNaN(number)) {
      number = min;
    }
    if (option.fixed == 0) {
      number = Math.round(number);
    }
    number = Math.max(min, Math.min(option.max, number));
    element.text = number.toFixed(option.fixed) + '';
  });
  return option;
};
ColorPicker.property = {};
ColorPicker.property.withAlpha = {
  set: function set(value) {
    if (value) {
      this.addClass('with-alpha');
    } else {
      this.removeClass('with-alpha');
    }
  },
  get: function get() {
    return this.containClass('with-alpha');
  }
};
ColorPicker.property.saturation = {
  set: function set(value) {
    value = value || 0;
    value = Math.max(0, Math.min(1, value));
    this._saturation = value;
    this.$draggerVal.addStyle('left', value * 100 + '%');
    this._update();
  },
  get: function get() {
    return this._saturation;
  }
};
ColorPicker.property.brightness = {
  set: function set(value) {
    value = value || 0;
    value = Math.max(0, Math.min(1, value));
    this._brightness = value;
    this.$draggerVal.addStyle('bottom', value * 100 + '%');
    this._update();
  },
  get: function get() {
    return this._brightness;
  }
};
ColorPicker.property.mode = {
  set: function set(value) {
    value = (value + '').toUpperCase();
    if (value.indexOf('A') >= 0) {
      this.addClass('with-alpha');
    } else {
      this.removeClass('with-alpha');
      this.alpha = 1;
    }
    if (value.match(/^H/)) {
      this._num0LimitOption.max = 360;
      this._num1LimitOption.max = 100;
      this._num2LimitOption.max = 100;
    } else if (value.match(/^RGB/)) {
      this._num0LimitOption.max = 255;
      this._num1LimitOption.max = 255;
      this._num2LimitOption.max = 255;
    }
    if (value.match(/^(HSB|HSL|RGB|RGBA|HSBA|HSLA)$/)) {
      this.$mode.innerHTML = value;
      this._updateColorText();
    }
  },
  get: function get() {
    return this.$mode.innerHTML;
  }
};
ColorPicker.property.hue = {
  set: function set(value) {
    value = value || 0;
    value = Math.max(0, Math.min(1, value));
    this._hue = value;
    this.$draggerHue.addStyle('top', value * 100 + '%');
    this._update();
  },
  get: function get() {
    return this._hue;
  }
};
ColorPicker.property.alpha = {
  set: function set(value) {
    value = value || 0;
    value = Math.max(0, Math.min(1, value));
    this._alpha = value;
    this.$draggerAlpha.addStyle('top', (1 - value) * 100 + '%');
    this._update();
  },
  get: function get() {
    return this._alpha;
  }
};
ColorPicker.property.value = {
  set: function set(value) {
    if (typeof value == 'string') {
      value = _Color["default"].parse(value);
    }
    if (!value || !value.toHSBA) throw new Error('Invalid color type');
    var hsba = value.toHSBA();
    this.hue = hsba[0];
    this.saturation = hsba[1];
    this.brightness = hsba[2];
    this.alpha = hsba[3];
  },
  get: function get() {
    return _Color["default"].fromHSBA(this.hue, this.saturation, this.brightness, this.alpha);
  }
};
ColorPicker.property.RGBA = {
  set: function set(value) {
    var hsba = _Color["default"].rgbaToHSBA(value || [0, 0, 0, 0]);
    this.hue = hsba[0];
    this.saturation = hsba[1];
    this.brightness = hsba[2];
    this.alpha = hsba[3];
  },
  get: function get() {
    var rgba = _Color["default"].hsbaToRGBA([this.hue, this.saturation, this.brightness, this.alpha]);
    return rgba;
  }
};
ColorPicker.prototype._getSVOfEvent = function (event) {
  var valBound = this.$colorVal.getBoundingClientRect();
  var dx = event.clientX - valBound.left;
  var dy = event.clientY - valBound.top;
  var s = Math.max(0, Math.min(1, dx / valBound.width));
  var b = Math.max(0, Math.min(1, 1 - dy / valBound.height));
  return {
    s: s,
    b: b
  };
};
ColorPicker.prototype._getHOfEvent = function (event) {
  var hueBound = this.$hue.getBoundingClientRect();
  var h = event.clientY - hueBound.top;
  h = h / hueBound.height;
  h = Math.max(0, Math.min(1, h));
  return h;
};
ColorPicker.prototype._getAOfEvent = function (event) {
  var alphaBound = this.$alpha.getBoundingClientRect();
  var a = alphaBound.bottom - event.clientY;
  a = a / alphaBound.height;
  a = Math.max(0, Math.min(1, a));
  return a;
};
ColorPicker.prototype._getTextColorCode = function () {
  var h = this.hue + 0.5;
  if (h > 1) h -= 1;
  var s = this.saturation > 0.5 ? 0 : 1;
  var b = this.brightness > 0.5 ? 0 : 1;
  var rgba = _Color["default"].hsbaToRGBA([h, s, b, 1]);
  return 'rgba(' + rgba.map(function (x, i) {
    return i < 3 ? x * 255 : x;
  }).join(',') + ')';
};
ColorPicker.prototype.init = function (props) {
  this.RGBA = [1, 1, 1, 1];
  this["super"](props);
};
ColorPicker.prototype._update = function () {
  //update vs
  var rgba = _Color["default"].hsbaToRGBA([this.hue, 1, 1, 1]);
  this.$color.addStyle('background', 'rgba(' + rgba.map(function (x, i) {
    return i < 3 ? x * 255 : x;
  }).join(',') + ')');
  rgba = _Color["default"].hsbaToRGBA([this.hue, this.saturation, this.brightness, this.alpha]);
  this.$textContainer.addStyle('background', 'rgba(' + rgba.map(function (x, i) {
    return i < 3 ? x * 255 : x;
  }).join(',') + ')');
  this.$textContainer.addStyle('color', this._getTextColorCode());
  this._updateColorText();
};
ColorPicker.prototype._updateColorText = function () {
  var hsba = [this.hue, this.saturation, this.brightness, this.alpha];
  var mode = this.mode;
  this.$fMode.innerHTML = mode.toLocaleLowerCase() + '(';
  if (mode.match(/^H/)) {
    this.$sep0.innerHTML = 'deg, ';
    this.$sep1.innerHTML = '%, ';
    if (mode.match(/A$/)) {
      this.$sep2.innerHTML = "%, ";
      this.$num3.removeStyle('display');
    } else {
      this.$sep2.innerHTML = "%";
      this.$num3.addStyle('display', 'none');
    }
  } else {
    this.$sep0.innerHTML = ', ';
    this.$sep1.innerHTML = ', ';
    if (mode.match(/A$/)) {
      this.$sep2.innerHTML = ", ";
      this.$num3.removeStyle('display');
    } else {
      this.$num3.addStyle('display', 'none');
      this.$sep2.innerHTML = "";
    }
  }
  if (mode.match(/HSB/)) {
    this.$num0.text = '' + Math.round(hsba[0] * 360);
    this.$num1.text = '' + Math.round(hsba[1] * 100);
    this.$num2.text = '' + Math.round(hsba[2] * 100);
    this.$num3.text = hsba[3].toFixed(3);
  } else {
    var cBytes = _Color["default"]['hsbaTo' + (mode.match(/A$/) ? mode : mode + 'A')](hsba);
    if (mode.match(/^H/)) {
      this.$num0.text = '' + Math.round(cBytes[0] * 360);
      this.$num1.text = '' + Math.round(cBytes[1] * 100);
      this.$num2.text = '' + Math.round(cBytes[2] * 100);
      this.$num3.text = hsba[3].toFixed(3);
    } else {
      this.$num0.text = '' + Math.round(cBytes[0] * 255);
      this.$num1.text = '' + Math.round(cBytes[1] * 255);
      this.$num2.text = '' + Math.round(cBytes[2] * 255);
      this.$num3.text = hsba[3].toFixed(3);
    }
    // var tempMode = mode.indexOf('A') < 0 ? mode + 'A' : mode;
    // var tempColor = Color['hsbaTo' + tempMode](hsba);
    // this.$textContainer.value = Color[mode.toLocaleLowerCase() + 'ToText'](tempColor);
  }
};

ColorPicker.eventHandler = {};
ColorPicker.eventHandler.colorPointerDown = function (event) {
  var newSV = this._getSVOfEvent(event);
  this.saturation = newSV.s;
  this.brightness = newSV.b;
  absol.$(document.body).on('pointermove', this.eventHandler.colorPointerMove).on('pointerup', this.eventHandler.colorPointerFinish).on('pointerleave', this.eventHandler.colorPointerFinish);
  this.emit('change', {
    target: this,
    originEvent: event,
    value: this.value
  });
};
ColorPicker.eventHandler.colorPointerFinish = function (event) {
  absol.$(document.body).off('pointermove', this.eventHandler.colorPointerMove).off('pointerup', this.eventHandler.colorPointerFinish).off('pointerleave', this.eventHandler.colorPointerFinish);
};
ColorPicker.eventHandler.colorPointerMove = function (event) {
  var newSV = this._getSVOfEvent(event);
  this.saturation = newSV.s;
  this.brightness = newSV.b;
  event.preventDefault();
  this.emit('change', {
    target: this,
    originEvent: event,
    value: this.value
  });
};
ColorPicker.eventHandler.huePointerDown = function (event) {
  var newH = this._getHOfEvent(event);
  this.hue = newH;
  event.preventDefault();
  absol.$(document.body).on('pointermove', this.eventHandler.huePointerMove).on('pointerup', this.eventHandler.huePointerFinish).on('pointerleave', this.eventHandler.huePointerFinish);
  this.emit('change', {
    target: this,
    originEvent: event,
    value: this.value
  });
};
ColorPicker.eventHandler.huePointerFinish = function (event) {
  absol.$(document.body).off('pointermove', this.eventHandler.huePointerMove).off('pointerup', this.eventHandler.huePointerFinish).off('pointerleave', this.eventHandler.huePointerFinish);
  event.preventDefault();
};
ColorPicker.eventHandler.huePointerMove = function (event) {
  var newH = this._getHOfEvent(event);
  this.hue = newH;
  event.preventDefault();
  this.emit('change', {
    target: this,
    originEvent: event,
    value: this.value
  });
};
ColorPicker.eventHandler.alphaPointerDown = function (event) {
  var newA = this._getAOfEvent(event);
  this.alpha = newA;
  absol.$(document.body).on('pointermove', this.eventHandler.alphaPointerMove).on('pointerup', this.eventHandler.alphaPointerFinish).on('pointerleave', this.eventHandler.alphaPointerFinish);
  event.preventDefault();
  this.emit('change', {
    target: this,
    originEvent: event,
    value: this.value
  });
};
ColorPicker.eventHandler.alphaPointerFinish = function (event) {
  absol.$(document.body).off('pointermove', this.eventHandler.alphaPointerMove).off('pointerup', this.eventHandler.alphaPointerFinish).off('pointerleave', this.eventHandler.alphaPointerFinish);
  event.preventDefault();
};
ColorPicker.eventHandler.alphaPointerMove = function (event) {
  var newA = this._getAOfEvent(event);
  this.alpha = newA;
  event.preventDefault();
  this.emit('change', {
    target: this,
    originEvent: event,
    value: this.value
  });
};
ColorPicker.eventHandler.modeClick = function (event) {
  this.mode = this.switchMode[this.mode];
  event.preventDefault();
};
ColorPicker.eventHandler.inputBlur = function () {
  var mode = this.mode;
  var alpha = 1;
  if (mode.match(/A$/)) {
    alpha = parseFloat(this.$num3.text);
  }
  var bytes;
  if (mode.match(/^H/)) {
    bytes = [parseFloat(this.$num0.text) / 360, parseFloat(this.$num1.text) / 100, parseFloat(this.$num2.text) / 100, alpha];
  } else if (mode.match(/^RGB/)) {
    bytes = [parseFloat(this.$num0.text) / 255, parseFloat(this.$num1.text) / 255, parseFloat(this.$num2.text) / 255, alpha];
  }
  var hsba = mode.match(/^HSB/) ? bytes : _Color["default"][(mode.match(/A$/) ? mode.toLocaleLowerCase() : mode.toLocaleLowerCase() + 'a') + 'ToHSBA'](bytes);
  this.hue = hsba[0];
  this.saturation = hsba[1];
  this.brightness = hsba[2];
  this.alpha = hsba[3];
};
_ACore["default"].install('ColorPicker'.toLowerCase(), ColorPicker);
var _default = ColorPicker;
exports["default"] = _default;

/***/ }),

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

"use strict";


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;
__webpack_require__(66859);
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _SolidColorPicker = _interopRequireDefault(__webpack_require__(28380));
var _SwatchesTable = __webpack_require__(83225);
var _DynamicCSS = _interopRequireDefault(__webpack_require__(30401));
var _base = __webpack_require__(6954);
var _red_cross = _interopRequireDefault(__webpack_require__(8161));
var _Color = _interopRequireDefault(__webpack_require__(64974));
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 }; }
var isMobile = _BrowserDetector["default"].isMobile;

/***
 * @extends AElement
 * @constructor
 */
function ColorPickerButton() {
  if (!ColorPickerButton.css) {
    ColorPickerButton.css = new _DynamicCSS["default"]().setProperty('.as-color-cell.as-color-picker-button-inner.as-null .as-color-cell-value', 'background-image', "url(\"data:image/svg+xml;base64,".concat((0, _base.base64EncodeUnicode)(_red_cross["default"].replace(/\$width/g, '33').replace(/\$height/g, '18')), "\")")).commit();
  }
  this.mode = 'OBJECT';
  this.$innerValue = (0, _ACore.$)('.as-color-picker-button-inner', this);
  this.prepare();
  this.on('click', this.eventHandler.click);
  /***
   * @name value
   * @type {string|Color}
   * @memberOf ColorPickerButton#
   */
  /***
   * @name hasOpacity
   * @type {boolean}
   * @memberOf ColorPickerButton#
   */

  /***
   * @name nullable
   * @type {boolean}
   * @memberOf ColorPickerButton#
   */

  /***
   * @name readOnly
   * @type {boolean}
   * @memberOf ColorPickerButton#
   */
}

ColorPickerButton.tag = 'ColorPickerButton'.toLowerCase();
ColorPickerButton.prototype.supportedModes = ['OBJECT', 'RGBA', 'RGB', 'HEX8', 'HEX6', 'HEX4', 'HEX3'];
ColorPickerButton.prototype.hasOpacityModes = ['OBJECT', 'RGBA', 'HEX8', 'HEX4'];
ColorPickerButton.eventHandler = {};
ColorPickerButton.eventHandler.click = function (event) {
  this.togglePicker();
};
ColorPickerButton.eventHandler.changeColor = function (event) {
  this._value = event.value;
  this.$innerValue.value = event.value;
  this.emit('change', event, this);
};
ColorPickerButton.eventHandler.clickBody = function (event) {
  if (_EventEmitter["default"].hitElement(this, event) || _EventEmitter["default"].hitElement(this.$ColorPicker, event)) return;
  this.closePicker();
};
ColorPickerButton.eventHandler.submit = function (event) {
  this.closePicker();
};
ColorPickerButton.prototype.togglePicker = function () {
  if (this.hasClass('as-color-picker-selecting')) {
    this.closePicker();
  } else {
    this.openPicker();
  }
};
ColorPickerButton.prototype.openPicker = function () {
  if (this.readOnly) return;
  if (this.hasClass('as-color-picker-selecting')) return;
  if (ColorPickerButton.lastOpen) {
    ColorPickerButton.lastOpen.closePicker();
  }
  ColorPickerButton.lastOpen = this;
  var thisBt = this;
  this.addClass('as-color-picker-selecting');
  this.$ColorPicker.on('change', this.eventHandler.changeColor).on('submit', this.eventHandler.submit);
  this.$ColorPicker.reloadSetting();
  this.$follower.addStyle('visibility', 'hidden');
  this.$follower.addTo(document.body);
  if (ColorPickerButton.$ColorPicker.$attachhook) {
    //prevent stuck setTimeOut
    ColorPickerButton.$ColorPicker.$attachhook.emit('attached');
  }
  this.$follower.followTarget = this;
  this.$follower.sponsorElement = this;
  setTimeout(function () {
    document.addEventListener('click', this.eventHandler.clickBody);
  }.bind(this), 100);
  this._lastValue = this.value;
  this.$ColorPicker.nullable = this.nullable;
  this.$ColorPicker.hasOpacity = this.hasOpacity;
  ColorPickerButton.$ColorPicker.value = this.value;
  setTimeout(function () {
    thisBt.$follower.removeStyle('visibility');
  }, 1);
  //10p
};

ColorPickerButton.prototype.closePicker = function () {
  if (!this.hasClass('as-color-picker-selecting')) return;
  this.removeClass('as-color-picker-selecting');
  if (ColorPickerButton.lastOpen === this) {
    ColorPickerButton.lastOpen = null;
    this.$follower.selfRemove();
  }
  this.$ColorPicker.off('change', this.eventHandler.changeColor).off('submit', this.eventHandler.submit);
  document.removeEventListener('click', this.eventHandler.clickBody);
  if (this.value !== this._lastValue) {
    this.emit('stopchange', {
      target: this,
      value: this.value
    }, this);
  }
};
ColorPickerButton.prototype.prepare = function () {
  if (!ColorPickerButton.$ColorPicker) {
    if (isMobile) {
      ColorPickerButton.$follower = (0, _ACore._)('modal').on('click', function (event) {
        if (event.tagert === this) {
          if (ColorPickerButton.lastOpen) ColorPickerButton.lastOpen.closePicker();
        }
      });
    } else {
      ColorPickerButton.$follower = (0, _ACore._)('follower.as-color-picker-button-follower');
      ColorPickerButton.$follower.cancelWaiting();
    }
    ColorPickerButton.$ColorPicker = (0, _ACore._)({
      tag: 'solidcolorpicker'
    }).addTo(ColorPickerButton.$follower);
    if (ColorPickerButton.$ColorPicker.$attachhook) {
      //prevent stuck setTimeOut
      ColorPickerButton.$ColorPicker.$attachhook.cancelWaiting();
    }
    ColorPickerButton.lastOpen = null;
  }
  this.$follower = ColorPickerButton.$follower;
  this.$ColorPicker = ColorPickerButton.$ColorPicker;
};
ColorPickerButton.render = function () {
  return (0, _ACore._)({
    tag: 'button',
    extendEvent: ['change', 'stopchange'],
    "class": 'as-color-picker-button',
    child: [{
      tag: _SwatchesTable.ColorCell,
      "class": "as-color-picker-button-inner"
    }]
  });
};
ColorPickerButton.property = {};
ColorPickerButton.property.value = {
  set: function set(value) {
    this._value = value;
    this.$innerValue.value = value || null;
  },
  get: function get() {
    var nullable = this.nullable;
    var value = this._value;
    if (!this._value && nullable) return value; //null, ""
    if (!this._value && !nullable) {
      value = new _Color["default"]([0, 0, 0, 1]);
    }
    if (this.mode.match(/HEX4|HEX6|HEX8|RGB|RGBA/) && value && value.toHex3) {
      value = this._value.toString(this.mode);
    }
    return value;
  }
};
ColorPickerButton.property.mode = {
  set: function set(value) {
    value = value || 'OBJECT';
    value = value.toUpperCase();
    if (this.supportedModes.indexOf(value) < 0) value = 'OBJECT';
    this.attr('data-mode', value);
    this._mode = value;
  },
  get: function get() {
    return this._mode;
  }
};
ColorPickerButton.property.hasOpacity = {
  get: function get() {
    return this.hasOpacityModes.indexOf(this._mode) >= 0;
  }
};
ColorPickerButton.property.nullable = {
  set: function set(value) {
    if (value) {
      this.addClass('as-nullable');
    } else {
      this.removeClass('as-null-nullable');
    }
  },
  get: function get() {
    return this.hasClass('as-nullable');
  }
};
ColorPickerButton.property.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-readonly');
    } else {
      this.removeClass('as-readonly');
    }
  },
  get: function get() {
    return this.hasClass('as-readonly');
  }
};
_ACore["default"].install(ColorPickerButton);
var _default = ColorPickerButton;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(285);
var _ACore = __webpack_require__(34093);
var _Icons = __webpack_require__(39285);
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _EventEmitter = __webpack_require__(46833);
var _utils = __webpack_require__(84512);
var _SolidColorPicker = _interopRequireDefault(__webpack_require__(28380));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
 * @extends AElement
 * @constructor
 */
function FontColorButton() {
  var _this = this;
  this.$value = (0, _ACore.$)('.as-font-color-button-value', this);
  this.$primary = (0, _ACore.$)('.as-ribbon-split-button-primary', this).on('click', function () {
    _this.emit('submit', {
      type: 'submit',
      target: _this
    }, _this);
  });
  this.$extend = (0, _ACore.$)('.as-ribbon-split-button-extend', this);
  new FCBPickerController(this);

  /**
   * @type {string}
   * @name value
   * @memberof FontColorButton#
   */
}

FontColorButton.tag = 'FontColorButton'.toLowerCase();
FontColorButton.render = function () {
  return (0, _ACore._)({
    extendEvent: ['submit', 'change'],
    attr: {
      'tabindex': '0'
    },
    "class": ['as-ribbon-split-button'],
    child: {
      "class": 'as-ribbon-split-button-content',
      child: [{
        tag: 'button',
        attr: {
          'tabindex': '-1'
        },
        "class": 'as-ribbon-split-button-primary',
        child: {
          tag: _Icons.FontColorIcon,
          "class": 'as-font-color-button-value',
          style: {
            width: '18px',
            height: '18px'
          }
        }
      }, {
        tag: 'button',
        attr: {
          'tabindex': '-1'
        },
        "class": 'as-ribbon-split-button-extend',
        child: ['span.as-ribbon-split-button-text', 'span.mdi.mdi-chevron-down']
      }]
    }
  });
};
FontColorButton.property = {};
FontColorButton.property.value = {
  set: function set(value) {
    this.$value.value = value;
  },
  get: function get() {
    return this.$value.value;
  }
};
var _default = FontColorButton;
/**
 *
 * @param {FontColorButton} elt
 * @constructor
 */
exports["default"] = _default;
function FCBPickerController(elt) {
  this.elt = elt;
  this['ev_clickExtend'] = this['ev_clickExtend'].bind(this);
  this['ev_clickOut'] = this['ev_clickOut'].bind(this);
  this['ev_submit'] = this['ev_submit'].bind(this);
  this['ev_change'] = this['ev_change'].bind(this);
  this.elt.$extend.on('click', this.ev_clickExtend);
}
FCBPickerController.prototype.ev_clickExtend = function () {
  this.openPicker();
};
FCBPickerController.prototype.ev_clickOut = function (event) {
  if ((0, _EventEmitter.hitElement)(this.share.$picker, event)) return;
  this.closePicker();
};
FCBPickerController.prototype.ev_submit = function () {
  var prevValue = this.elt.value;
  this.elt.value = this.share.$picker.value;
  this.closePicker();
  if (prevValue !== this.elt.value) {
    this.elt.emit('change', {
      type: 'change',
      target: this.elt
    }, this.elt);
  }
  this.elt.emit('submit', {
    type: 'submit',
    target: this.elt
  }, this.elt);
};
FCBPickerController.prototype.ev_change = function () {
  var prevValue = this.elt.value;
  this.elt.value = this.share.$picker.value;
  if (prevValue !== this.elt.value) {
    this.elt.emit('change', {
      type: 'change',
      target: this.elt
    }, this.elt);
  }
};
FCBPickerController.prototype.share = {
  $picker: null,
  $follower: null,
  holder: null
};
FCBPickerController.prototype.prepare = function () {
  if (this.share.$follower) return;
  this.share.$picker = (0, _ACore._)({
    tag: _SolidColorPicker["default"],
    props: {
      hasOpacity: false
    }
  });
  this.share.$follower = (0, _ACore._)({
    tag: _Follower["default"],
    child: this.share.$picker,
    props: {
      anchor: [2, 1, 6, 5, 9, 11]
    }
  });
};
FCBPickerController.prototype.openPicker = function () {
  var _this2 = this;
  this.prepare();
  if (this.share.holder) this.share.holder.closePicker();
  this.share.holder = this;
  this.share.$follower.addStyle('visibility', 'hidden');
  this.share.$follower.addTo(document.body);
  this.share.$follower.followTarget = this.elt.$extend;
  this.share.$follower.sponsorElement = this.elt.$extend;
  this.share.$follower.addStyle('z-index', (0, _utils.findMaxZIndex)(this.elt.$extend) + 70);
  this.share.$follower.removeStyle('visibility');
  this.elt.$extend.off('click', this.ev_clickExtend);
  this.share.$picker.on('submit', this.ev_submit);
  this.share.$picker.on('change', this.ev_change);
  this.share.$picker.value = this.elt.value;
  setTimeout(function () {
    document.addEventListener('click', _this2.ev_clickOut);
  }, 5);
};
FCBPickerController.prototype.closePicker = function () {
  var _this3 = this;
  if (this.share.holder !== this) return;
  this.share.holder = null;
  document.removeEventListener('click', this.ev_clickOut);
  this.share.$picker.off('submit', this.ev_submit);
  this.share.$picker.off('change', this.ev_change);
  setTimeout(function () {
    _this3.elt.$extend.on('click', _this3.ev_clickExtend);
  }, 5);
  this.share.$follower.followTarget = null;
  this.share.$follower.remove();
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.generatorColorScheme = exports["default"] = exports.DEFAULT_CHART_COLOR_SCHEMES = void 0;
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _ACore = __webpack_require__(34093);
var _utils = __webpack_require__(84512);
var _EventEmitter = __webpack_require__(46833);
var _Color = _interopRequireDefault(__webpack_require__(64974));
var _int = __webpack_require__(65909);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var DEFAULT_CHART_COLOR_SCHEMES = [['#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252'],
//gray scale
['#a50026', '#f46d43', '#fee08b', '#d9ef8b', '#66bd63', '#006837'], ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f'], ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02'], ['#a6cee3', '#b2df8a', '#fb9a99', '#fdbf6f', '#cab2d6', '#ffff99'], ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae'], ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33'], ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f'], ['#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02'], ['#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3'], ['#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5'], ['#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45'], ['#7f3b08', '#e08214', '#fee0b6', '#d8daeb', '#8073ac', '#2d004b'], ['#543005', '#bf812d', '#f6e8c3', '#c7eae5', '#35978f', '#003c30'], ['#40004b', '#9970ab', '#e7d4e8', '#d9f0d3', '#5aae61', '#00441b'], ['#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443'], ['#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45'], ['#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0'], ['#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e'], ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a']];
exports.DEFAULT_CHART_COLOR_SCHEMES = DEFAULT_CHART_COLOR_SCHEMES;
var DEFAULT_CHART_COLOR_SCHEMES_OBJS = DEFAULT_CHART_COLOR_SCHEMES.map(function (scm) {
  return scm.map(function (c) {
    return _Color["default"].parse(c);
  });
});
_Color["default"].DEFAULT_CHART_COLOR_SCHEMES = DEFAULT_CHART_COLOR_SCHEMES;
var ColorSchemeGenerators = {};
var scaleArray = function scaleArray(arr, newN) {
  return Array(newN).fill(0).map(function (u, i) {
    var k = i * (arr.length - 1) / (newN - 1);
    var l = Math.floor(k);
    var h = Math.ceil(k);
    if (l === h) return arr[l];
    return (0, _int.map)(k, l, h, arr[l], arr[h]);
  });
};
var generatorColorScheme = function generatorColorScheme(id, n) {
  var hsl6 = DEFAULT_CHART_COLOR_SCHEMES_OBJS[id].map(function (c) {
    return c.toHSLA();
  });
  var h6 = hsl6.map(function (c) {
    return c[0];
  });
  var s6 = hsl6.map(function (c) {
    return c[1];
  });
  var l, h, s;
  if (id >= 1 && id <= 7 || id === 12 || id === 13) {
    if (n > 6) {
      s = s6.concat(Array(n - 6).fill(0).map(function (u, i) {
        return 0.6 + 3 * i * 0.3 % 0.35;
      }));
    }
  }
  if (id === 1) {
    h6[0] -= 1;
  } else if (id === 2) {
    if (n > 6) {
      s = s6.concat(Array(n - 6).fill(0).map(function (u, i) {
        return 0.5 + 3 * i * 0.3 % 0.45;
      }));
    }
  } else if (id === 18 && n !== 6) {
    h6[0] = 1;
    h6[1] = 1;
  }
  s = s || scaleArray(s6, n);
  l = l || scaleArray(hsl6.map(function (c) {
    return c[2];
  }), n);
  h = h || scaleArray(h6, n).map(function (h) {
    return h < 0 ? h + 1 : h;
  });
  return Array(n).fill(0).map(function (u, i) {
    return _Color["default"].fromHSL(h[i], s[i], l[i]);
  });
};

// DEFAULT_CHART_COLOR_SCHEMES = Array(20).fill(0).map((u, id) => colorSchemeGenerator(id, 20).map(c => c.toString('hex6')))
// console.log(DEFAULT_CHART_COLOR_SCHEMES)

/**
 * @extends AElement
 * @constructor
 */
exports.generatorColorScheme = generatorColorScheme;
function SelectColorSchemeMenu() {
  this.dropdown = new SCSMDropdown(this);
  this.comboboxCtrl = new SCSMComboBoxController(this);
  _OOP["default"].drillProperty(this, this.dropdown, ['value', 'items', 'selectedItem']);
  this.dropdown.items = DEFAULT_CHART_COLOR_SCHEMES.map(function (it, i) {
    return {
      colors: it,
      value: i
    };
  });
}
SelectColorSchemeMenu.tag = 'SelectColorSchemeMenu'.toLowerCase();
SelectColorSchemeMenu.render = function () {
  return (0, _ACore._)({
    "class": ['as-select-color-scheme-menu', 'absol-selectmenu'],
    extendEvent: ['change'],
    child: ['.as-select-color-scheme-menu-selected-item', {
      tag: 'button',
      "class": 'absol-selectmenu-btn',
      child: ['dropdown-ico']
    }]
  });
};
var _default = SelectColorSchemeMenu;
/**
 *
 * @param {SelectColorSchemeMenu} elt
 * @constructor
 */
exports["default"] = _default;
function SCSMDropdown(elt) {
  this.elt = elt;
  this._items = [];
  this.itemDict = {};
  this.$itemDict = {};
  this.$follower = (0, _ACore._)({
    tag: _Follower["default"],
    "class": ['as-select-color-scheme-menu-dropdown', 'as-dropdown-box-common-style'],
    child: {}
  });
  this.$follower.cancelWaiting();
}
SCSMDropdown.prototype.updateItems = function () {
  var _this = this;
  var items = this._items;
  var maxColorLength = items.reduce(function (ac, cr) {
    return Math.max(ac, cr.colors.length);
  }, 0);
  var itRow = Math.max(1, Math.floor(Math.sqrt(maxColorLength)));
  while (itRow > 1 && maxColorLength % itRow) {
    itRow--;
  }
  var itCol = maxColorLength / itRow;
  var gridRow = Math.max(1, Math.ceil(Math.sqrt(items.length)));
  while (gridRow < items.length && items.length % gridRow) {
    gridRow++;
  }
  var gridCol = Math.ceil(items.length / gridRow);
  this.$follower.clearChild();
  this.$selected = null;
  this.$itemDict = {};
  items.forEach(function (item, i) {
    if (i % gridCol === 0) {
      _this.$follower.addChild((0, _ACore._)('.as-scsm-item-list-row'));
    }
    var itemElt = (0, _ACore._)({
      "class": ['as-scsm-item']
    });
    var wrapper = (0, _ACore._)({
      "class": 'as-scsm-item-wrapper',
      child: itemElt,
      on: {
        click: function click(event) {
          var cValue = _this.value;
          if (cValue !== item.value) {
            _this.value = item.value;
            _this.elt.emit('change', {
              type: 'change',
              target: _this.elt
            }, _this.elt);
          }
        }
      }
    });
    _this.$itemDict[(0, _utils.keyStringOf)(item.value)] = itemElt;
    _this.$follower.lastChild.addChild(wrapper);
    item.colors.forEach(function (color, j) {
      if (j % itCol === 0) {
        itemElt.addChild((0, _ACore._)('.as-scsm-item-row'));
      }
      itemElt.lastChild.addChild((0, _ACore._)({
        "class": 'as-scsm-item-cell',
        style: {
          backgroundColor: color
        }
      }));
    });
  });
};
SCSMDropdown.prototype.updateSelected = function () {
  var value = this.value;
  if (this.$selected) this.$selected.removeClass('as-selected');
  this.$selected = this.$itemDict[(0, _utils.keyStringOf)(value)];
  if (this.$selected) this.$selected.addClass('as-selected');
  this.elt.comboboxCtrl.update();
};
Object.defineProperty(SCSMDropdown.prototype, 'items', {
  set: function set(items) {
    if (!(items instanceof Array)) items = [];
    this._items = items;
    this.itemDict = items.reduce(function (ac, cr) {
      ac[(0, _utils.keyStringOf)(cr.value)] = cr;
      return ac;
    }, {});
    this.updateItems();
    this.updateSelected();
  },
  get: function get() {
    return this._items;
  }
});
Object.defineProperty(SCSMDropdown.prototype, 'value', {
  set: function set(value) {
    this._value = value;
    this.updateSelected();
  },
  get: function get() {
    if (this.itemDict[(0, _utils.keyStringOf)(this._value)] || this._items.length === 0) return this._value;
    return this._items[0].value;
  }
});
Object.defineProperty(SCSMDropdown.prototype, 'selectedItem', {
  get: function get() {
    return this.itemDict[(0, _utils.keyStringOf)(this.value)];
  }
});

/**
 *
 * @param {SelectColorSchemeMenu} elt
 * @constructor
 */
function SCSMComboBoxController(elt) {
  this.elt = elt;
  this.$selected = (0, _ACore.$)('.as-select-color-scheme-menu-selected-item', this.elt);
  this.ev_click = this.ev_click.bind(this);
  this.ev_clickOut = this.ev_clickOut.bind(this);
  this.elt.on('click', this.ev_click);
}
SCSMComboBoxController.prototype.ev_click = function (event) {
  this.isFocus = true;
};
SCSMComboBoxController.prototype.ev_clickOut = function (event) {
  this.isFocus = false;
};
SCSMComboBoxController.prototype.update = function () {
  var selectedItem = this.elt.dropdown.selectedItem;
  this.$selected.clearChild();
  if (!selectedItem) return;
  this.$selected.addChild(selectedItem.colors.map(function (color) {
    return (0, _ACore._)({
      "class": 'as-scsm-item-cell',
      style: {
        backgroundColor: color
      }
    });
  }));
};
Object.defineProperty(SCSMComboBoxController.prototype, 'isFocus', {
  set: function set(value) {
    var _this2 = this;
    if (!!value === this.elt.hasClass('as-focus')) return;
    if (value) {
      this.elt.addClass('as-focus');
    } else {
      this.elt.removeClass('as-focus');
    }
    if (value) {
      this.elt.off('click', this.ev_click);
      setTimeout(function () {
        document.addEventListener('click', _this2.ev_clickOut);
      }, 10);
      this.elt.dropdown.$follower.addTo(document.body);
      this.elt.dropdown.$follower.followTarget = this.elt;
    } else {
      this.elt.on('click', this.ev_click);
      document.removeEventListener('click', this.ev_clickOut);
      this.elt.dropdown.$follower.selfRemove();
      this.elt.dropdown.$follower.followTarget = null;
    }
  },
  get: function get() {
    return this.elt.hasClass('as-focus');
  }
});

/***/ }),

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

"use strict";


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 _SwatchesTable = __webpack_require__(83225);
var _Color = _interopRequireDefault(__webpack_require__(64974));
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _QuickMenu = _interopRequireDefault(__webpack_require__(8277));
__webpack_require__(46270);
var _SpectrumColor = _interopRequireDefault(__webpack_require__(55817));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _DynamicCSS = _interopRequireDefault(__webpack_require__(30401));
var _base = __webpack_require__(6954);
var _red_cross = _interopRequireDefault(__webpack_require__(8161));
var _utils = __webpack_require__(84512);
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 AElement
 * @constructor
 */
function SolidColorPicker() {
  if (!SolidColorPicker.css) {
    SolidColorPicker.css = new _DynamicCSS["default"]().setProperty('.as-color-cell.as-solid-color-picker-selected.as-null .as-color-cell-value', 'background-image', "url(\"data:image/svg+xml;base64,".concat((0, _base.base64EncodeUnicode)(_red_cross["default"].replace(/\$width/g, '58').replace(/\$height/g, '22')), "\")")).commit();
  }
  this.swatchMode = new SCPSWatchMode(this);
  this.pickerMode = new SCPPickerMode(this);
  this.modes = [this.swatchMode, this.pickerMode];
  this.modeCtrl = new SCPSWatchModeController(this);
  _OOP["default"].drillProperty(this, this.modeCtrl, 'mode');
  this.footerCtrl = new SCPFooterController(this);
  this.$opacity = this.footerCtrl.$opacity;
  this.$hex = this.footerCtrl.$hex;
  this.$selected = this.footerCtrl.$selected;
  this.historyCtrl = new SCPHistoryController(this);
  this.$swatchesName = this.modeCtrl.$swatchesName;
  this.on('keydown', this.eventHandler.keydown);
  this._lastEmitHex8 = '';
  this.rawValue = new _Color["default"]([1, 0, 0, 1]);
  this._swatchesNames = ['Material Design', 'Moqups Classic', 'Bootstrap', 'iOS'];
  this._swatchesShortName = ['material', 'moqups', 'bootstrap', 'ios'];
  this._swatchesIcons = ['span.mdi.mdi-palette', 'span.mdi.mdi-material-design', 'span.mdi.mdi-bootstrap', 'span.mdi.mdi-apple-ios'];
  this._swatchesData = [_SwatchesTable.MaterialSwatches, _SwatchesTable.MoqupsClassicSwathes, _SwatchesTable.BootstrapSwatches, _SwatchesTable.iOsSwatches];

  /**
   * @type {import('absol-acomp/js/BScroller').default}
   */
  this.$swatchesTableCtn = this.swatchMode.$swatchesTableCtn;
  this.$selectedDot = (0, _ACore._)('.as-solid-color-picker-selected-dot'); //share

  /**
   * @type {import('./SwatchesTable').default}
   */
  this.$swatchesTable = this.swatchMode.$swatchesTable;
  this.$recentSwatchesTable = this.historyCtrl.$recentSwatchesTable;
  this.$attachhook = (0, _ACore._)('attachhook').on('attached', this.eventHandler.attached).addTo(this);
  this.$spectrum = this.pickerMode.$spectrum;
  this.$spectrumDot = this.pickerMode.$spectrumDot;
  this.$alpha = this.pickerMode.$alpha;
  this.$submitBtn = (0, _ACore.$)('.as-solid-color-picker-submit-btn', this).on('click', this.notifySubmit.bind(this));

  /**
   * @name hasOpacity
   * @type {boolean}
   * @memberof SolidColorPicker#
   */

  /**
   * @name nullable
   * @type {boolean}
   * @memberof SolidColorPicker#
   */

  /**
   * @name value
   * @type {Color|null}
   * @memberof SolidColorPicker#
   */

  /**
   * @name hex8Value
   * @type {string}
   * @memberof SolidColorPicker#
   */
}

SolidColorPicker.tag = 'SolidColorPicker'.toLowerCase();
SolidColorPicker.render = function () {
  return (0, _ACore._)({
    attr: {
      tabindex: '1'
    },
    extendEvent: ['change', 'sizechange', 'submit'],
    "class": ['as-solid-color-picker', 'as-has-opacity'],
    child: [{
      "class": 'as-solid-color-picker-header',
      child: [{
        "class": 'as-solid-color-picker-mode-ctn',
        child: {
          tag: 'buttonarray',
          "class": 'as-solid-color-picker-mode',
          props: {
            items: [{
              text: 'SWATCHES',
              value: 'swatches'
            }, {
              text: 'PICKER',
              value: 'picker'
            }]
          }
        }
      }]
    }, {
      "class": 'as-solid-color-picker-body',
      child: [{
        "class": ['as-solid-color-picker-swatches-select-ctn'],
        child: [{
          tag: 'span',
          child: {
            text: 'Color Scheme: '
          }
        }, {
          "class": 'as-solid-color-picker-swatches-name',
          tag: 'a',
          child: {
            text: 'Material Design'
          }
        }, 'span.mdi.mdi-menu-down']
      }, {
        tag: 'bscroller',
        "class": ['as-solid-color-picker-swatches-ctn'],
        child: {
          tag: 'swatchestable',
          props: {
            data: _SwatchesTable.MaterialSwatches
          }
        }
      }, {
        tag: _SpectrumColor["default"],
        "class": 'as-solid-color-picker-spectrum',
        child: '.as-solid-color-picker-spectrum-dot'
      }, {
        "class": 'as-solid-color-picker-hue',
        child: '.as-solid-color-picker-hue-dot'
      }, {
        "class": 'as-solid-color-picker-alpha',
        child: ['.as-solid-color-picker-alpha-color', '.as-solid-color-picker-alpha-dot']
      }, {
        tag: 'swatchestable',
        "class": 'as-solid-color-picker-near'
      }, {
        "class": 'as-solid-color-picker-none-ctn',
        child: [{
          tag: _SwatchesTable.ColorCell,
          "class": 'as-solid-color-picker-none-cell',
          props: {
            value: null
          }
        }, {
          child: {
            text: 'None'
          }
        }]
      }, {
        "class": 'as-solid-color-picker-recent-title',
        child: {
          text: 'RECENT COLOR'
        }
      }, {
        "class": ['as-solid-color-picker-recent-swatches-ctn'],
        child: {
          tag: 'swatchestable',
          props: {
            data: _SwatchesTable.MoqupsClassicSwathes.slice(0, 2)
          }
        }
      }]
    }, {
      "class": 'as-solid-color-picker-footer',
      child: [{
        tag: _SwatchesTable.ColorCell,
        "class": 'as-solid-color-picker-selected'
      }, {
        tag: 'flexiconinput',
        "class": 'as-solid-color-picker-color-hex',
        props: {
          value: 'ffffff',
          icon: '<svg viewBox="0 0 64 64" id="mq-icon-hex"><path d="M60 24v-6H46V4h-6v14H24V4h-6v14H4v6h14v16H4v6h14v14h6V46h16v14h6V46h14v-6H46V24h14zM40 40H24V24h16v16z"></path></svg>'
        }
      }, {
        tag: 'flexiconinput',
        "class": 'as-solid-color-picker-color-opacity',
        props: {
          icon: 'span.mdi.mdi-opacity',
          unit: '%',
          value: 100
        }
      }, {
        tag: 'flexiconbutton',
        "class": 'as-solid-color-picker-submit-btn',
        props: {
          icon: 'span.mdi.mdi-check-bold'
        }
      }]
    }]
  });
};
SolidColorPicker._settingKey = "absol_solid_color_setting";

//only Hex6
SolidColorPicker.setting = {
  recentColors: ['#ffffff', '#00ffff', '#0000ff', '#ffffff', '#000000']
};
SolidColorPicker._loadSetting = function () {
  var setting = localStorage.getItem(SolidColorPicker._settingKey);
  try {
    setting = JSON.parse(setting);
  } catch (e) {
    setting = {};
  }
  if (setting) {
    Object.assign(SolidColorPicker.setting, setting);
  }
};
SolidColorPicker._loadSetting();
SolidColorPicker._writeSetting = function () {
  localStorage.setItem(SolidColorPicker._settingKey, JSON.stringify(SolidColorPicker.setting));
  SolidColorPicker.updateInstancesSetting();
};
SolidColorPicker.pushInstances = function (elt) {
  var instances = SolidColorPicker.$instances;
  var aliveInstance = [];
  var instance;
  var found = false;
  while (instances.length > 0) {
    instance = instances.pop();
    if (instance.isDescendantOf(document.body)) {
      aliveInstance.push(instance);
    }
    if (instance === elt) found = true;
  }
  while (aliveInstance.length > 0) {
    instances.push(aliveInstance.pop());
  }
  if (!found) {
    instances.push(elt);
  }
};
SolidColorPicker.updateInstancesSetting = function () {
  var instances = SolidColorPicker.$instances;
  var aliveInstance = [];
  var instance;
  while (instances.length > 0) {
    instance = instances.pop();
    if (instance.isDescendantOf(document.body)) {
      aliveInstance.push(instance);
    }
  }
  while (aliveInstance.length > 0) {
    instance = aliveInstance.pop();
    instances.push(instance);
    instance.reloadSetting();
  }
};
SolidColorPicker.$instances = [];
SolidColorPicker.css = null;

/**
 * @param {Color} color
 */
SolidColorPicker.pushColorHistory = function (color) {
  if (!color) return;
  var hex6Color = color.toString('hex6');
  var recentColors = SolidColorPicker.setting.recentColors;
  var index = recentColors.indexOf(hex6Color);
  if (index >= 0) {
    recentColors.splice(index, 1);
  }
  recentColors.unshift(hex6Color);
  while (recentColors.length > 24) {
    recentColors.pop();
  }
  setTimeout(SolidColorPicker._writeSetting.bind(SolidColorPicker), 1);
};
SolidColorPicker.prototype.reloadSetting = function () {
  var recentColors = SolidColorPicker.setting.recentColors.slice();
  var swatches = [];
  while (recentColors.length > 0) {
    swatches.push(recentColors.splice(0, 12));
  }
  this.$recentSwatchesTable.data = swatches;
  this.swatchMode.viewValue();
};
SolidColorPicker.prototype.notifyCanBeChanged = function () {
  var cHex8 = this.hex8Value;
  if (cHex8 !== this._lastEmitHex8) {
    this._lastEmitHex8 = cHex8;
    this.notifyChange();
  }
};
SolidColorPicker.prototype.notifyChange = function () {
  this.emit('change', {
    target: this,
    value: this.value,
    type: 'change'
  }, this);
};
SolidColorPicker.prototype.notifySizeCanBeChanged = function () {
  var bound = this.getBoundingClientRect();
  if (!this._lastSize || this._lastSize.width !== bound.width || this._lastSize.height !== bound.height) {
    this._lastSize = {
      width: bound.width,
      height: bound.height
    };
    this.notifySizeChange();
  }
};
SolidColorPicker.prototype.notifySizeChange = function () {
  this.emit('sizechange', {
    target: this,
    size: this._lastSize,
    type: 'sizechange'
  }, this);
};
SolidColorPicker.prototype.notifySubmit = function () {
  SolidColorPicker.pushColorHistory(this.rawValue);
  this.emit('submit', {
    target: this,
    value: this.rawValue,
    type: 'submit'
  }, this);
};
SolidColorPicker.property = {};

/**
 * @type {SolidColorPicker}
 */
SolidColorPicker.property.value = {
  /**
   *
   * @param {Color} value
   */
  set: function set(value) {
    value = value || null;
    if (value && !value.toHex8) {
      //is
      try {
        value = _Color["default"].parse(value + '');
      } catch (e) {
        value = new _Color["default"]([0, 0, 0, 0]);
      }
    }
    this.rawValue = value;
    this._lastEmitHex8 = this.hex8Value;
    this.footerCtrl.viewValue();
    this.pickerMode.viewValue();
    this.swatchMode.viewValue();
  },
  get: function get() {
    var nullable = this.nullable;
    var hasOpacity = this.hasOpacity;
    var value = this.rawValue || null; //
    if (!nullable && !value) value = new _Color["default"]([0, 0, 0, 0]);
    if (!hasOpacity && value) value.rgba[3] = 1;
    return value;
  }
};
SolidColorPicker.property.hex8Value = {
  get: function get() {
    var value = this.value;
    if (value) return value.toHex8();
    return 'null';
  }
};

/**
 * @type {SolidColorPicker}
 */
SolidColorPicker.property.swatches = {
  set: function set(value) {
    var index = this._swatchesShortName.indexOf(value);
    index = Math.max(index, 0);
    value = this._swatchesShortName[index];
    if (this._swatches != value) {
      this._swatches = value;
      this.$swatchesTable.data = this._swatchesData[index];
      this.$swatchesName.childNodes[0].data = this._swatchesNames[index];
    }
    this.swatchMode.viewValue();
  },
  get: function get() {
    return this._swatches;
  }
};
SolidColorPicker.property.nullable = {
  set: function set(value) {
    if (value) {
      this.addClass('as-nullable');
    } else {
      this.removeClass('as-nullable');
    }
    this.footerCtrl.viewValue();
    this.pickerMode.viewValue();
    this.swatchMode.viewValue();
  },
  get: function get() {
    return this.hasClass('as-nullable');
  }
};
SolidColorPicker.property.hasOpacity = {
  /**
   * @this SolidColorPicker#
   * @param value
   */
  set: function set(value) {
    if (value) {
      this.addClass('as-has-opacity');
    } else {
      this.removeClass('as-has-opacity');
    }
    this.footerCtrl.viewValue();
    this.swatchMode.viewValue();
    this.pickerMode.viewValue();
  },
  get: function get() {
    return this.hasClass('as-has-opacity');
  }
};

/**
 * @type {SolidColorPicker}
 */
SolidColorPicker.eventHandler = {};
SolidColorPicker.eventHandler.attached = function () {
  SolidColorPicker.pushInstances(this);
  this.reloadSetting();
};
SolidColorPicker.eventHandler.keydown = function (event) {
  if (event.key === 'Enter') {
    event.preventDefault();
    event.target.blur();
    this.notifySubmit();
  }
};
_ACore["default"].install('solidcolorpicker', SolidColorPicker);

/**
 *
 * @param {SolidColorPicker} elt
 *
 * @constructor
 */
function SCPHistoryController(elt) {
  this.elt = elt;
  this.$recentSwatchesTable = (0, _ACore.$)('.as-solid-color-picker-recent-swatches-ctn swatchestable', this.elt).on('presscell', this.elt.swatchMode.ev_pressCell.bind(this));
}

/**
 *
 * @param {SolidColorPicker} elt
 * @constructor
 */
function SCPSWatchModeController(elt) {
  var _this = this;
  this.elt = elt;
  this.$swatchesName = (0, _ACore.$)('.as-solid-color-picker-swatches-name', this.elt);
  _QuickMenu["default"].toggleWhenClick(this.$swatchesName, {
    anchor: [1, 6],
    getMenuProps: function getMenuProps() {
      return {
        extendClasses: 'as-solid-color-picker-swatches-name-menu',
        extendStyle: {
          'font-size': _this.elt.getComputedStyleValue('font-size')
        },
        items: _this.elt._swatchesNames.map(function (name, i) {
          return {
            text: name,
            value: _this.elt._swatchesShortName[i],
            icon: _this.elt._swatchesIcons[i]
          };
        })
      };
    },
    onSelect: function onSelect(item) {
      _this.elt.swatches = item.value;
    }
  });
  this.$mode = (0, _ACore.$)('.as-solid-color-picker-mode', this.elt).on('change', this.updateMode.bind(this));
  this.viewingMode = null;
  this.updateMode();
}
SCPSWatchModeController.prototype.updateMode = function () {
  var value = this.$mode.value;
  if (value === this.viewingMode) return;
  this.elt.removeClass('as-solid-color-picker-mode-' + this.viewingMode);
  this.viewingMode = value + '';
  this.elt.addClass('as-solid-color-picker-mode-' + this.viewingMode);
  this.$mode.value = this.viewingMode;
  this.elt.notifySizeCanBeChanged();
};
Object.defineProperty(SCPSWatchModeController.prototype, 'mode', {
  set: function set(value) {
    this.$mode.value = value;
    this.updateMode();
  },
  get: function get() {
    return this.$mode.value;
  }
});

/**
 *
 * @param {SolidColorPicker} elt
 * @constructor
 */
function SCPSWatchMode(elt) {
  this.elt = elt;
  /**
   *
   * @type {BScroller}
   */
  this.$swatchesTableCtn = (0, _ACore.$)('.as-solid-color-picker-swatches-ctn', this.elt);

  /**
   * @type {SwatchesTable}
   */
  this.$swatchesTable = (0, _ACore.$)('.as-solid-color-picker-swatches-ctn swatchestable', this.elt).on('presscell', this.ev_pressCell.bind(this));
  this.$noneCtn = (0, _ACore.$)('.as-solid-color-picker-none-ctn', this.elt).on('click', this.ev_clickNone.bind(this));
}
SCPPickerMode.prototype.name = "swatches";
SCPPickerMode.prototype.displayName = "SWATCHES";
SCPSWatchMode.prototype.ev_pressCell = function (event) {
  try {
    var value = _Color["default"].parse(event.value + '');
    var hC = value.getContrastYIQ();
    hC.rgba[3] = 0.7;
    value.rgba[3] = this.elt.footerCtrl.opacity;
    this.elt.rawValue = value;
    this.elt.footerCtrl.viewValue();
    this.elt.$selectedDot.addStyle('box-shadow', "inset 0px 0px 0.3em 0.125em ".concat(hC.toString('rgba')));
    event.cellElt.addChild(this.elt.$selectedDot);
    this.$noneCtn.removeClass('as-selected');
    this.elt.pickerMode.viewValue();

    //
  } catch (e) {
    // this.$selectedDot.removeStyle('box-shadow');
    // this.$hex.value = 'ffffff';
  }
  this.elt.notifyCanBeChanged();
};
SCPSWatchMode.prototype.ev_clickNone = function (event) {
  this.elt.rawValue = null;
  this.viewValue();
  this.elt.footerCtrl.viewValue();
  this.elt.swatchMode.viewValue();
  this.elt.pickerMode.viewValue();
  this.elt.notifyCanBeChanged();
};
SCPSWatchMode.prototype.viewValue = function () {
  this.elt.$selectedDot.remove();
  var cell, hC;
  /**
   *
   * @type {Color|null}
   */
  var value = this.elt.value;
  if (!value) this.$noneCtn.addClass('as-selected');else this.$noneCtn.removeClass('as-selected');
  if (this.elt.modeCtrl.mode === 'swatches' && value) {
    cell = this.$swatchesTable.getCell(value.toString('hex6'));
    if (cell) this.$swatchesTableCtn.scrollInto(cell);
  }
  if (!cell && value) {
    cell = this.elt.$recentSwatchesTable.getCell(value.toString('hex6'));
  }
  if (cell) {
    hC = value.getContrastYIQ();
    hC.rgba[3] = 0.7;
    this.elt.$selectedDot.addStyle('box-shadow', "inset 0px 0px 0.3em 0.125em ".concat(hC.toString('rgba')));
    cell.addChild(this.elt.$selectedDot);
  }
};

/**
 *
 * @param {SolidColorPicker} elt
 * @constructor
 */
function SCPPickerMode(elt) {
  this.elt = elt;
  this.$spectrum = (0, _ACore._)({
    tag: 'hanger',
    elt: (0, _ACore.$)('.as-solid-color-picker-spectrum', this.elt)
  }).on('predrag', this.ev_spectrumDrag.bind(this)).on('drag', this.ev_spectrumDrag.bind(this));
  this.$hueDot = (0, _ACore.$)('.as-solid-color-picker-hue-dot', this.elt);
  this.$spectrumDot = (0, _ACore.$)('.as-solid-color-picker-spectrum-dot', this.elt);
  this.$alpha = (0, _ACore._)({
    tag: 'hanger',
    elt: (0, _ACore.$)('.as-solid-color-picker-alpha', this.elt)
  }).on('predrag', this.ev_alphaDrag.bind(this)).on('drag', this.ev_alphaDrag.bind(this));
  this.$alphaDot = (0, _ACore.$)('.as-solid-color-picker-alpha-dot', this.elt);
  this.$hue = (0, _ACore._)({
    tag: 'hanger',
    elt: (0, _ACore.$)('.as-solid-color-picker-hue', this.elt)
  }).on('predrag', this.ev_hueDrag.bind(this)).on('drag', this.ev_hueDrag.bind(this));
  this.$near = (0, _ACore.$)('.as-solid-color-picker-near', this.elt).on('presscell', this.ev_nearPressCell.bind(this));
  this._hue = 0;
  this._sat = 1;
  this._brightness = 1;
}
SCPPickerMode.prototype.name = 'picker';
SCPPickerMode.prototype.displayName = 'PICKER';
SCPPickerMode.prototype.viewValue = function () {
  var value = this.elt.value || new _Color["default"]([0, 0, 0, 1]);
  var hsba = _Color["default"].rgbaToHSBA(value.rgba);
  this._setHue(hsba[0] * 360);
  this._setSatBrightness(hsba[1] * 100, hsba[2] * 100);
  this._updateOpacity();
  this._updateNear();
};
SCPPickerMode.prototype._updateSpectrumDot = function () {
  var value = this.elt.value || new _Color["default"]([0, 0, 0, 1]);
  var dotColor = value.getContrastYIQ();
  dotColor.rgba[3] = 0.7;
  this.$spectrumDot.addStyle({
    bottom: 'calc(' + this._brightness + '% - 0.5em)',
    left: 'calc(' + this._sat + '% - 0.5em)',
    'box-shadow': 'inset 0px 0px 0.3em 0.125em ' + dotColor.toString()
  });
};
SCPPickerMode.prototype._updateNear = function () {
  var value = this.elt.value || new _Color["default"]([0, 0, 0, 1]);
  var hsba = _Color["default"].rgbaToHSBA(value.rgba);
  var sat = hsba[1];
  var hue = hsba[0];
  var brightness = hsba[2];
  var whiterColors = Array(7).fill(null).map(function (u, i) {
    return _Color["default"].fromHSB(hue, sat * (7 - i) / 8, brightness);
  });
  var darkerColors = Array(7).fill(null).map(function (u, i) {
    return _Color["default"].fromHSB(hue, sat, brightness * (7 - i) / 8);
  });
  var hueNearColors = [-5, -3, -2, 1, 2, 3, 5].map(function (u) {
    var nHue = hue + u / 40;
    if (nHue > 1) nHue -= 1;else if (nHue < 0) nHue += 1;
    return _Color["default"].fromHSB(nHue, sat, brightness);
  });
  this.$near.data = [whiterColors, darkerColors, hueNearColors];
};
SCPPickerMode.prototype._setHue = function (hue) {
  this._hue = hue;
  var spectrumColor = _Color["default"].fromHSB(hue / 360, 1, 1);
  var hueDotColor = spectrumColor.getContrastYIQ();
  hueDotColor.rgba[3] = 0.7;
  this.$hueDot.addStyle({
    'box-shadow': 'inset 0px 0px 0.3em 0.125em ' + hueDotColor.toString(),
    left: 'calc(' + hue / 3.6 + '% - 0.5em)'
  });
  this.$spectrum.addStyle('background-color', spectrumColor.toString());
  this._updateSpectrumDot();
};
SCPPickerMode.prototype._setSatBrightness = function (sat, brightness) {
  this._sat = sat;
  this._brightness = brightness;
  this._updateSpectrumDot();
};
SCPPickerMode.prototype._updateOpacity = function () {
  this.$alphaDot.addStyle('left', 'calc(' + this.elt.footerCtrl.opacity * 100 + '% - 0.5em)');
};
SCPPickerMode.prototype.ev_spectrumDrag = function (event) {
  event.preventDefault();
  var sBound = this.$spectrum.getBoundingClientRect();
  var brightness = (sBound.bottom - event.clientY) * 100 / sBound.height;
  brightness = Math.max(0, Math.min(100, Math.round(brightness)));
  var sat = (event.clientX - sBound.left) * 100 / sBound.width;
  sat = Math.max(0, Math.min(100, Math.round(sat)));
  this.elt.rawValue = _Color["default"].fromHSBA(this._hue / 360, sat / 100, brightness / 100, this.elt.footerCtrl.opacity);
  this._setSatBrightness(sat, brightness);
  this._updateNear();
  this.elt.footerCtrl.viewValue();
  this.elt.swatchMode.viewValue();
  this.elt.notifyCanBeChanged();
};
SCPPickerMode.prototype.ev_alphaDrag = function (event) {
  event.preventDefault();
  var aBound = this.$alpha.getBoundingClientRect();
  var opacity = (event.clientX - aBound.left) * 100 / aBound.width;
  opacity = Math.max(0, Math.min(100, Math.round(opacity)));
  var color = this.elt.value || new _Color["default"]([0, 0, 0, 0]);
  color.rgba[3] = opacity / 100;
  this.elt.rawValue = color;
  this.elt.footerCtrl.viewValue();
  this._updateOpacity();
  // this._setOpacityPercent(opacity);
  this.elt.notifyCanBeChanged();
};
SCPPickerMode.prototype.ev_hueDrag = function (event) {
  event.preventDefault();
  var hBound = this.$hue.getBoundingClientRect();
  var hue = (event.clientX - hBound.left) * 360 / hBound.width;
  hue = Math.max(0, Math.min(360, Math.round(hue)));
  this.elt.rawValue = _Color["default"].fromHSBA(hue / 360, this._sat / 100, this._brightness / 100, this.elt.footerCtrl.opacity);
  this._setHue(hue);
  this.elt.footerCtrl.viewValue();
  this.elt.swatchMode.viewValue();
  this._updateNear();
  this.elt.notifyCanBeChanged();
};
SCPPickerMode.prototype.ev_nearPressCell = function (event) {
  var value = event.value.clone();
  value.rgba[3] = this.elt.footerCtrl.opacity;
  this.elt.rawValue = value;
  this.viewValue();
  this.elt.footerCtrl.viewValue();
  this.elt.pickerMode.viewValue();
};

/**
 *
 * @param {SolidColorPicker} elt
 * @constructor
 */
function SCPFooterController(elt) {
  this.elt = elt;
  this.$selected = (0, _ACore.$)('.as-solid-color-picker-selected', this.elt);
  this.$opacity = (0, _ACore.$)('.as-solid-color-picker-color-opacity', this.elt).on('change', this.ev_opacityChange.bind(this)).on('keyup', this.ev_opacityKeyUp.bind(this));
  this.$hex = (0, _ACore.$)('.as-solid-color-picker-color-hex', this.elt).on('keyup', this.ev_hexKeyUp.bind(this)).on('change', this.ev_hexChange.bind(this));
}
SCPFooterController.prototype.ev_opacityChange = function (event) {
  var color = this.elt.value;
  var opacityTxt = color ? Math.round(color.rgba[3] * 100) : '100';
  if (color && this.$opacity.value !== opacityTxt) {
    this.$opacity.value = opacityTxt;
  }
};
SCPFooterController.prototype.ev_opacityKeyUp = function (event) {
  var opacity = parseFloat(this.$opacity.value);
  if (!isNaN(opacity)) {
    opacity = Math.round(Math.max(0, Math.min(opacity, 100)));
    var color = this.elt.value || new _Color["default"](0, 0, 0, 1);
    color.rgba[3] = opacity / 100;
    this.elt.rawValue = color;
    this.elt.pickerMode.viewValue();
    this.$selected.value = color;
    this.elt.notifyCanBeChanged();
  }
};
SCPFooterController.prototype.ev_hexKeyUp = function (event) {
  // var prevValue = this.elt.value;
  var value;
  var nullable = this.elt.nullable;
  var hex = this.$hex.value.trim();
  try {
    if (nullable && hex.length === 0) {
      value = null;
    } else {
      value = _Color["default"].parse('#' + hex);
    }
  } catch (e) {
    // console.error(e);
  }
  if (!value && !nullable) return;
  if (value) value.rgba[3] = this.opacity;
  this.elt.rawValue = value;
  this.$selected.value = value;
  this.elt.pickerMode.viewValue();
  this.elt.swatchMode.viewValue();
  this.elt.notifyCanBeChanged();
};
SCPFooterController.prototype.ev_hexChange = function (event) {
  var value = this.elt.value;
  if (value) this.$hex.value = value.toHex6();
};
SCPFooterController.prototype.viewValue = function () {
  var value = this.elt.value;
  var hasOpacity = this.elt.hasOpacity;
  this.$selected.value = value;
  this.$hex.value = value ? value.toHex6() : '';
  if (hasOpacity && value) {
    this.$opacity.value = Math.round(value.rgba[3] * 100) + '';
  } else this.$opacity.value = '100';
};
Object.defineProperty(SCPFooterController.prototype, 'opacity', {
  get: function get() {
    if (!this.elt.hasOpacity) return 1;
    var opFromText = parseFloat(this.$opacity.value) / 100;
    if ((0, _utils.isRealNumber)(opFromText)) {
      opFromText = Math.max(0, Math.min(opFromText, 1));
      return opFromText;
    }
    var value = this.elt.value;
    if (!value) return 1;
    return value.rgba[3];
  }
});
var _default = SolidColorPicker;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(95345);
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 SpectrumColor() {}
SpectrumColor.tag = 'SpectrumColor'.toLowerCase();
SpectrumColor.render = function () {
  return (0, _ACore._)({
    "class": 'as-spectrum-color',
    child: {
      "class": 'as-spectrum-color-sat',
      child: '.as-spectrum-color-val'
    }
  });
};
_ACore["default"].install('spectrumcolor', SpectrumColor);
var _default = SpectrumColor;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.BootstrapSwatches = void 0;
exports.ColorCell = ColorCell;
exports.iOsSwatches = exports["default"] = exports.MoqupsClassicSwathes = exports.MaterialSwatches = void 0;
var _Color = _interopRequireDefault(__webpack_require__(64974));
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(60401);
var _DynamicCSS = _interopRequireDefault(__webpack_require__(30401));
var _base = __webpack_require__(6954);
var _red_cross = _interopRequireDefault(__webpack_require__(8161));
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 }; }
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); }
/**
 * @extends AElement
 * @constructor
 */
function ColorCell() {
  this.$value = this.firstChild;
  if (!ColorCell.css) {
    ColorCell.css = new _DynamicCSS["default"]().setProperty('.as-color-cell.as-null .as-color-cell-value', 'background-image', "url(\"data:image/svg+xml;base64,".concat((0, _base.base64EncodeUnicode)(_red_cross["default"].replace(/\$width/g, '24').replace(/\$height/g, '24')), "\")")).commit();
  }
}
ColorCell.tag = 'ColorCell'.toString();
ColorCell.render = function () {
  return (0, _ACore._)({
    "class": 'as-color-cell',
    child: ['.as-color-cell-value']
  });
};
ColorCell.property = {};
ColorCell.property.value = {
  set: function set(value) {
    if (value === null || value === undefined) {
      this.addClass('as-null');
    } else if (value) {
      this.removeClass('as-null');
      this.$value.addStyle('background-color', value + '');
    }
    this._value = value;
  },
  get: function get() {
    return this._value;
  }
};
function SwatchesTable() {
  this._data = [];
  this._poolCells = [];
  this._poolRows = [];
  this._dict = {};
}
SwatchesTable.tag = 'SwatchesTable'.toLowerCase();
SwatchesTable.render = function () {
  return (0, _ACore._)({
    extendEvent: 'presscell',
    "class": 'as-swatches-table'
  });
};
SwatchesTable.prototype.getCell = function () {
  if (arguments.length === 1) {
    var key = arguments[0];
    if (key.toHex8) {
      key = key.toHex8();
    } else if (typeof key == 'string') {
      key = _Color["default"].parse(key);
      if (key) key = key.toHex8();
    }
    key = key + '';
    return this._dict[key];
  } else if (arguments.length === 2) {
    return this.childNodes[arguments[0]] && this.childNodes[arguments[0]].childNodes[arguments[1]];
  }
};
SwatchesTable.eventHandler = {};
SwatchesTable.eventHandler.clickCell = function (cell, event) {
  this.emit('presscell', {
    target: this,
    cellElt: cell,
    value: cell.__swatchescell_value,
    rowIdx: cell.__swatchescell_row_idx,
    colIdx: cell.__swatchescell_col_idx
  });
};
SwatchesTable.property = {};
SwatchesTable.property.data = {
  set: function set(value) {
    this._dict = {};
    value = value || [[null]];
    if (typeof value == 'string') {
      value = {
        classic: MoqupsClassicSwathes,
        material: MaterialSwatches,
        bootstrap: BootstrapSwatches,
        ios: iOsSwatches,
        moqupsclassic: MoqupsClassicSwathes
      }[value] || [[null]];
    }
    this._data = value;
    var child;
    while (this.childNodes.length > value.length) {
      child = this.firstChild;
      this._poolRows.push(child);
      this.removeChild(child);
    }
    while (this.childNodes.length < value.length) {
      if (this._poolRows.length > 0) child = this._poolRows.pop();else child = (0, _ACore._)('.as-swatches-table-row');
      this.addChild(child);
    }
    var rowElt;
    var row;
    for (var i = 0; i < value.length; ++i) {
      rowElt = this.childNodes[i];
      row = value[i];
      while (rowElt.childNodes.length > row.length) {
        child = rowElt.firstChild;
        this._poolCells.push(child);
        rowElt.removeChild(child);
      }
      while (rowElt.childNodes.length < row.length) {
        if (this._poolCells.length > 0) child = this._poolCells.pop();else {
          child = (0, _ACore._)({
            tag: ColorCell,
            "class": 'as-swatches-table-cell'
          });
          child.on('click', this.eventHandler.clickCell.bind(this, child));
        }
        rowElt.addChild(child);
      }
      for (var j = 0; j < row.length; ++j) {
        rowElt.childNodes[j].__swatchescell_row_idx = i;
        rowElt.childNodes[j].__swatchescell_col_idx = j;
        if (!row[j]) {
          rowElt.childNodes[j].attr('title', null);
          // rowElt.childNodes[j].firstChild.removeStyle('background-color');
          rowElt.childNodes[j].__swatchescell_value = row[j];
          this._dict['null'] = rowElt.childNodes[j];
        } else if (row[j].toHex8) {
          rowElt.childNodes[j].value = row[j];
          rowElt.childNodes[j].attr('title', null);
          rowElt.childNodes[j].__swatchescell_value = row[j];
          this._dict[row[j].toHex8()] = rowElt.childNodes[j];
        } else if (_typeof(row[j]) == 'object') {
          if (row[j].value) {
            rowElt.childNodes[j].value = row[j].value;
            // rowElt.childNodes[j].firstChild.addStyle('background-color', row[j].value);
            rowElt.childNodes[j].__swatchescell_value = row[j].value;
            this._dict[_Color["default"].parse(row[j].value + '').toHex8()] = rowElt.childNodes[j];
          } else {
            rowElt.childNodes[j].firstChild.removeStyle('background-color');
            this._dict[_Color["default"].parse('transparent').toHex8()] = rowElt.childNodes[j];
          }
          rowElt.childNodes[j].attr('title', row[j].name || null);
        } else if (typeof row[j] == 'string') {
          rowElt.childNodes[j].value = row[j];
          rowElt.childNodes[j].attr('title', null);
          rowElt.childNodes[j].__swatchescell_value = row[j];
          this._dict[_Color["default"].parse(row[j]).toHex8()] = rowElt.childNodes[j];
        }
      }
    }
  },
  get: function get() {
    return this._data;
  }
};
var MoqupsClassicSwathes = [[{
  "name": "White",
  "value": "#ffffff"
}, {
  "name": "± Wild Sand",
  "value": "#f7f6f6"
}, {
  "name": "± Gallery",
  "value": "#ebebeb"
}, {
  "name": "± Alto",
  "value": "#d6d6d6"
}, {
  "name": "Silver",
  "value": "#c0c0c0"
}, {
  "name": "± Silver Chalice",
  "value": "#aaaaaa"
}, {
  "name": "± Gray",
  "value": "#929292"
}, {
  "name": "Boulder",
  "value": "#7a7a7a"
}, {
  "name": "± Scorpion",
  "value": "#606060"
}, {
  "name": "± Tundora",
  "value": "#444444"
}, {
  "name": "± Mine Shaft",
  "value": "#232323"
}, {
  "name": "Black",
  "value": "#000000"
}], [{
  "name": "± Prussian Blue",
  "value": "#003748"
}, {
  "name": "± Green Vogue",
  "value": "#021f54"
}, {
  "name": "± Black Rock",
  "value": "#120639"
}, {
  "name": "± Violet",
  "value": "#2f073b"
}, {
  "name": "± Bulgarian Rose",
  "value": "#3d051b"
}, {
  "name": "± Lonestar",
  "value": "#5e0202"
}, {
  "name": "± Brown Bramble",
  "value": "#5b1a04"
}, {
  "name": "± Cioccolato",
  "value": "#58330a"
}, {
  "name": "± Bronze Olive",
  "value": "#553d0d"
}, {
  "name": "± Himalaya",
  "value": "#656119"
}, {
  "name": "± West Coast",
  "value": "#4e5516"
}, {
  "name": "± Seaweed",
  "value": "#243e16"
}], [{
  "name": "± Astronaut Blue",
  "value": "#004e63"
}, {
  "name": "± Catalina Blue",
  "value": "#033076"
}, {
  "name": "± Violet",
  "value": "#1c0c4f"
}, {
  "name": "± Jagger",
  "value": "#460e56"
}, {
  "name": "± Maroon Oak",
  "value": "#570e28"
}, {
  "name": "± Dark Burgundy",
  "value": "#840705"
}, {
  "name": "± Kenyan Copper",
  "value": "#7d2709"
}, {
  "name": "± Raw Umber",
  "value": "#7b4812"
}, {
  "name": "± Raw Umber",
  "value": "#785616"
}, {
  "name": "± Wasabi",
  "value": "#8c8525"
}, {
  "name": "± Fern Frond",
  "value": "#6e7623"
}, {
  "name": "± Woodland",
  "value": "#355723"
}], [{
  "name": "± Blue Lagoon",
  "value": "#006e8c"
}, {
  "name": "± Cobalt",
  "value": "#0844a4"
}, {
  "name": "± Persian Indigo",
  "value": "#2e1572"
}, {
  "name": "± Honey Flower",
  "value": "#631878"
}, {
  "name": "± Claret",
  "value": "#7a163c"
}, {
  "name": "± Milano Red",
  "value": "#b70f0a"
}, {
  "name": "± Rust",
  "value": "#af3a11"
}, {
  "name": "± Desert",
  "value": "#aa671d"
}, {
  "name": "± Reef Gold",
  "value": "#a77a23"
}, {
  "name": "± Earls Green",
  "value": "#c3bb38"
}, {
  "name": "± Sushi",
  "value": "#99a534"
}, {
  "name": "± Fern Green",
  "value": "#4c7a34"
}], [{
  "name": "± Bondi Blue",
  "value": "#008db1"
}, {
  "name": "± Denim",
  "value": "#0c59cf"
}, {
  "name": "± Daisy Bush",
  "value": "#3b1d8f"
}, {
  "name": "± Seance",
  "value": "#7e2199"
}, {
  "name": "± Disco",
  "value": "#9c1f4d"
}, {
  "name": "± Crimson",
  "value": "#e61610"
}, {
  "name": "± Orange Roughy",
  "value": "#dc4c18"
}, {
  "name": "± Brandy Punch",
  "value": "#d68227"
}, {
  "name": "± Hokey Pokey",
  "value": "#d39c2f"
}, {
  "name": "± Starship",
  "value": "#f4eb49"
}, {
  "name": "± Turmeric",
  "value": "#c1d045"
}, {
  "name": "± Apple",
  "value": "#629c44"
}], [{
  "name": "± Cerulean",
  "value": "#00a4d3"
}, {
  "name": "± Blue Ribbon",
  "value": "#1464f6"
}, {
  "name": "± Daisy Bush",
  "value": "#5125ad"
}, {
  "name": "± Purple Heart",
  "value": "#9c29b7"
}, {
  "name": "± Maroon Flush",
  "value": "#bb285c"
}, {
  "name": "± Red Orange",
  "value": "#ff3823"
}, {
  "name": "± Orange",
  "value": "#ff6624"
}, {
  "name": "± Sunshade",
  "value": "#ffa834"
}, {
  "name": "± Bright Sun",
  "value": "#fec63d"
}, {
  "name": "± Laser Lemon",
  "value": "#fefb64"
}, {
  "name": "± Confetti",
  "value": "#d7eb5a"
}, {
  "name": "± Mantis",
  "value": "#72bb53"
}], [{
  "name": "± Bright Turquoise",
  "value": "#00c8f8"
}, {
  "name": "± Dodger Blue",
  "value": "#3d8af7"
}, {
  "name": "± Purple Heart",
  "value": "#6334e3"
}, {
  "name": "± Electric Violet",
  "value": "#c238eb"
}, {
  "name": "± Cerise Red",
  "value": "#e93578"
}, {
  "name": "± Persimmon",
  "value": "#ff5d55"
}, {
  "name": "± Coral",
  "value": "#ff8351"
}, {
  "name": "± Texas Rose",
  "value": "#ffb253"
}, {
  "name": "± Golden Tainoi",
  "value": "#ffc957"
}, {
  "name": "± Dolly",
  "value": "#fef67f"
}, {
  "name": "± Manz",
  "value": "#e2ee79"
}, {
  "name": "± Feijoa",
  "value": "#92d36e"
}], [{
  "name": "± Malibu",
  "value": "#4dd7fa"
}, {
  "name": "± Malibu",
  "value": "#75a9f9"
}, {
  "name": "± Cornflower Blue",
  "value": "#8b51f5"
}, {
  "name": "± Heliotrope",
  "value": "#d757f6"
}, {
  "name": "± Froly",
  "value": "#f06e9c"
}, {
  "name": "± Vivid Tangerine",
  "value": "#ff8a84"
}, {
  "name": "± Hit Pink",
  "value": "#ffa382"
}, {
  "name": "± Macaroni and Cheese",
  "value": "#ffc581"
}, {
  "name": "± Grandis",
  "value": "#ffd783"
}, {
  "name": "± Picasso",
  "value": "#fef8a0"
}, {
  "name": "± Khaki",
  "value": "#e9f29b"
}, {
  "name": "± Feijoa",
  "value": "#aedd94"
}], [{
  "name": "± Anakiwa",
  "value": "#91e4fb"
}, {
  "name": "± Sail",
  "value": "#a8c6fa"
}, {
  "name": "± Perfume",
  "value": "#b38df7"
}, {
  "name": "± Heliotrope",
  "value": "#e692f8"
}, {
  "name": "± Illusion",
  "value": "#f6a2bf"
}, {
  "name": "± Sundown",
  "value": "#ffb4b0"
}, {
  "name": "± Wax Flower",
  "value": "#ffc3ae"
}, {
  "name": "± Caramel",
  "value": "#ffd8ad"
}, {
  "name": "± Navajo White",
  "value": "#ffe3ae"
}, {
  "name": "± Pale Prim",
  "value": "#fefac0"
}, {
  "name": "± Corn Field",
  "value": "#f1f6be"
}, {
  "name": "± Tea Green",
  "value": "#cbe8ba"
}], [{
  "name": "± French Pass",
  "value": "#c9f1fd"
}, {
  "name": "± Hawkes Blue",
  "value": "#d4e3fc"
}, {
  "name": "± Perfume",
  "value": "#dacafb"
}, {
  "name": "± Perfume",
  "value": "#f2c9fb"
}, {
  "name": "± Chantilly",
  "value": "#fad2e0"
}, {
  "name": "± Cosmos",
  "value": "#ffdad8"
}, {
  "name": "± Peach Schnapps",
  "value": "#ffe2d8"
}, {
  "name": "± Derby",
  "value": "#ffecd7"
}, {
  "name": "± Pink Lady",
  "value": "#fff1d7"
}, {
  "name": "± Off Yellow",
  "value": "#fefce0"
}, {
  "name": "± Citrine White",
  "value": "#f7fade"
}, {
  "name": "± Zanah",
  "value": "#dfedd6"
}]];
exports.MoqupsClassicSwathes = MoqupsClassicSwathes;
var MaterialSwatches = [[{
  "name": "Red 50",
  "value": "#ffebee"
}, {
  "name": "Red 100",
  "value": "#ffcdd2"
}, {
  "name": "Red 200",
  "value": "#ef9a9a"
}, {
  "name": "Red 300",
  "value": "#e57373"
}, {
  "name": "Red 400",
  "value": "#ef5350"
}, {
  "name": "Red 500",
  "value": "#f44336"
}, {
  "name": "Red 600",
  "value": "#e53935"
}, {
  "name": "Red 700",
  "value": "#d32f2f"
}, {
  "name": "Red 800",
  "value": "#c62828"
}, {
  "name": "Red 900",
  "value": "#b71c1c"
}], [{
  "name": "Pink 50",
  "value": "#fce4ec"
}, {
  "name": "Pink 100",
  "value": "#f8bbd0"
}, {
  "name": "Pink 200",
  "value": "#f48fb1"
}, {
  "name": "Pink 300",
  "value": "#f06292"
}, {
  "name": "Pink 400",
  "value": "#ec407a"
}, {
  "name": "Pink 500",
  "value": "#e91e63"
}, {
  "name": "Pink 600",
  "value": "#d81b60"
}, {
  "name": "Pink 700",
  "value": "#c2185b"
}, {
  "name": "Pink 800",
  "value": "#ad1457"
}, {
  "name": "Pink 900",
  "value": "#880e4f"
}], [{
  "name": "Purple 50",
  "value": "#f3e5f5"
}, {
  "name": "Purple 100",
  "value": "#e1bee7"
}, {
  "name": "Purple 200",
  "value": "#ce93d8"
}, {
  "name": "Purple 300",
  "value": "#ba68c8"
}, {
  "name": "Purple 400",
  "value": "#ab47bc"
}, {
  "name": "Purple 500",
  "value": "#9c27b0"
}, {
  "name": "Purple 600",
  "value": "#8e24aa"
}, {
  "name": "Purple 700",
  "value": "#7b1fa2"
}, {
  "name": "Purple 800",
  "value": "#6a1b9a"
}, {
  "name": "Purple 900",
  "value": "#4a148c"
}], [{
  "name": "Deep Purple 50",
  "value": "#ede7f6"
}, {
  "name": "Deep Purple 100",
  "value": "#d1c4e9"
}, {
  "name": "Deep Purple 200",
  "value": "#b39ddb"
}, {
  "name": "Deep Purple 300",
  "value": "#9575cd"
}, {
  "name": "Deep Purple 400",
  "value": "#7e57c2"
}, {
  "name": "Deep Purple 500",
  "value": "#673ab7"
}, {
  "name": "Deep Purple 600",
  "value": "#5e35b1"
}, {
  "name": "Deep Purple 700",
  "value": "#512da8"
}, {
  "name": "Deep Purple 800",
  "value": "#4527a0"
}, {
  "name": "Deep Purple 900",
  "value": "#311b92"
}], [{
  "name": "Indigo 50",
  "value": "#e8eaf6"
}, {
  "name": "Indigo 100",
  "value": "#c5cae9"
}, {
  "name": "Indigo 200",
  "value": "#9fa8da"
}, {
  "name": "Indigo 300",
  "value": "#7986cb"
}, {
  "name": "Indigo 400",
  "value": "#5c6bc0"
}, {
  "name": "Indigo 500",
  "value": "#3f51b5"
}, {
  "name": "Indigo 600",
  "value": "#3949ab"
}, {
  "name": "Indigo 700",
  "value": "#303f9f"
}, {
  "name": "Indigo 800",
  "value": "#283593"
}, {
  "name": "Indigo 900",
  "value": "#1a237e"
}], [{
  "name": "Blue 50",
  "value": "#e3f2fd"
}, {
  "name": "Blue 100",
  "value": "#bbdefb"
}, {
  "name": "Blue 200",
  "value": "#90caf9"
}, {
  "name": "Blue 300",
  "value": "#64b5f6"
}, {
  "name": "Blue 400",
  "value": "#42a5f5"
}, {
  "name": "Blue 500",
  "value": "#2196f3"
}, {
  "name": "Blue 600",
  "value": "#1e88e5"
}, {
  "name": "Blue 700",
  "value": "#1976d2"
}, {
  "name": "Blue 800",
  "value": "#1565c0"
}, {
  "name": "Blue 900",
  "value": "#0d47a1"
}], [{
  "name": "Light Blue 50",
  "value": "#e1f5fe"
}, {
  "name": "Light Blue 100",
  "value": "#b3e5fc"
}, {
  "name": "Light Blue 200",
  "value": "#81d4fa"
}, {
  "name": "Light Blue 300",
  "value": "#4fc3f7"
}, {
  "name": "Light Blue 400",
  "value": "#29b6f6"
}, {
  "name": "Light Blue 500",
  "value": "#03a9f4"
}, {
  "name": "Light Blue 600",
  "value": "#039be5"
}, {
  "name": "Light Blue 700",
  "value": "#0288d1"
}, {
  "name": "Light Blue 800",
  "value": "#0277bd"
}, {
  "name": "Light Blue 900",
  "value": "#01579b"
}], [{
  "name": "Cyan 50",
  "value": "#e0f7fa"
}, {
  "name": "Cyan 100",
  "value": "#b2ebf2"
}, {
  "name": "Cyan 200",
  "value": "#80deea"
}, {
  "name": "Cyan 300",
  "value": "#4dd0e1"
}, {
  "name": "Cyan 400",
  "value": "#26c6da"
}, {
  "name": "Cyan 500",
  "value": "#00bcd4"
}, {
  "name": "Cyan 600",
  "value": "#00acc1"
}, {
  "name": "Cyan 700",
  "value": "#0097a7"
}, {
  "name": "Cyan 800",
  "value": "#00838f"
}, {
  "name": "Cyan 900",
  "value": "#006064"
}], [{
  "name": "Teal 50",
  "value": "#e0f2f1"
}, {
  "name": "Teal 100",
  "value": "#b2dfdb"
}, {
  "name": "Teal 200",
  "value": "#80cbc4"
}, {
  "name": "Teal 300",
  "value": "#4db6ac"
}, {
  "name": "Teal 400",
  "value": "#26a69a"
}, {
  "name": "Teal 500",
  "value": "#009688"
}, {
  "name": "Teal 600",
  "value": "#00897b"
}, {
  "name": "Teal 700",
  "value": "#00796b"
}, {
  "name": "Teal 800",
  "value": "#00695c"
}, {
  "name": "Teal 900",
  "value": "#004d40"
}], [{
  "name": "Green 50",
  "value": "#e8f5e9"
}, {
  "name": "Green 100",
  "value": "#c8e6c9"
}, {
  "name": "Green 200",
  "value": "#a5d6a7"
}, {
  "name": "Green 300",
  "value": "#81c784"
}, {
  "name": "Green 400",
  "value": "#66bb6a"
}, {
  "name": "Green 500",
  "value": "#4caf50"
}, {
  "name": "Green 600",
  "value": "#43a047"
}, {
  "name": "Green 700",
  "value": "#388e3c"
}, {
  "name": "Green 800",
  "value": "#2e7d32"
}, {
  "name": "Green 900",
  "value": "#1b5e20"
}], [{
  "name": "Light Green 50",
  "value": "#f1f8e9"
}, {
  "name": "Light Green 100",
  "value": "#dcedc8"
}, {
  "name": "Light Green 200",
  "value": "#c5e1a5"
}, {
  "name": "Light Green 300",
  "value": "#aed581"
}, {
  "name": "Light Green 400",
  "value": "#9ccc65"
}, {
  "name": "Light Green 500",
  "value": "#8bc34a"
}, {
  "name": "Light Green 600",
  "value": "#7cb342"
}, {
  "name": "Light Green 700",
  "value": "#689f38"
}, {
  "name": "Light Green 800",
  "value": "#558b2f"
}, {
  "name": "Light Green 900",
  "value": "#33691e"
}], [{
  "name": "Lime 50",
  "value": "#f9fbe7"
}, {
  "name": "Lime 100",
  "value": "#f0f4c3"
}, {
  "name": "Lime 200",
  "value": "#e6ee9c"
}, {
  "name": "Lime 300",
  "value": "#dce775"
}, {
  "name": "Lime 400",
  "value": "#d4e157"
}, {
  "name": "Lime 500",
  "value": "#cddc39"
}, {
  "name": "Lime 600",
  "value": "#c0ca33"
}, {
  "name": "Lime 700",
  "value": "#afb42b"
}, {
  "name": "Lime 800",
  "value": "#9e9d24"
}, {
  "name": "Lime 900",
  "value": "#827717"
}], [{
  "name": "Yellow 50",
  "value": "#fffde7"
}, {
  "name": "Yellow 100",
  "value": "#fff9c4"
}, {
  "name": "Yellow 200",
  "value": "#fff59d"
}, {
  "name": "Yellow 300",
  "value": "#fff176"
}, {
  "name": "Yellow 400",
  "value": "#ffee58"
}, {
  "name": "Yellow 500",
  "value": "#ffeb3b"
}, {
  "name": "Yellow 600",
  "value": "#fdd835"
}, {
  "name": "Yellow 700",
  "value": "#fbc02d"
}, {
  "name": "Yellow 800",
  "value": "#f9a825"
}, {
  "name": "Yellow 900",
  "value": "#f57f17"
}], [{
  "name": "Amber 50",
  "value": "#fff8e1"
}, {
  "name": "Amber 100",
  "value": "#ffecb3"
}, {
  "name": "Amber 200",
  "value": "#ffe082"
}, {
  "name": "Amber 300",
  "value": "#ffd54f"
}, {
  "name": "Amber 400",
  "value": "#ffca28"
}, {
  "name": "Amber 500",
  "value": "#ffc107"
}, {
  "name": "Amber 600",
  "value": "#ffb300"
}, {
  "name": "Amber 700",
  "value": "#ffa000"
}, {
  "name": "Amber 800",
  "value": "#ff8f00"
}, {
  "name": "Amber 900",
  "value": "#ff6f00"
}], [{
  "name": "Orange 50",
  "value": "#fff3e0"
}, {
  "name": "Orange 100",
  "value": "#ffe0b2"
}, {
  "name": "Orange 200",
  "value": "#ffcc80"
}, {
  "name": "Orange 300",
  "value": "#ffb74d"
}, {
  "name": "Orange 400",
  "value": "#ffa726"
}, {
  "name": "Orange 500",
  "value": "#ff9800"
}, {
  "name": "Orange 600",
  "value": "#fb8c00"
}, {
  "name": "Orange 700",
  "value": "#f57c00"
}, {
  "name": "Orange 800",
  "value": "#ef6c00"
}, {
  "name": "Orange 900",
  "value": "#e65100"
}], [{
  "name": "Deep Orange 50",
  "value": "#fbe9e7"
}, {
  "name": "Deep Orange 100",
  "value": "#ffccbc"
}, {
  "name": "Deep Orange 200",
  "value": "#ffab91"
}, {
  "name": "Deep Orange 300",
  "value": "#ff8a65"
}, {
  "name": "Deep Orange 400",
  "value": "#ff7043"
}, {
  "name": "Deep Orange 500",
  "value": "#ff5722"
}, {
  "name": "Deep Orange 600",
  "value": "#f4511e"
}, {
  "name": "Deep Orange 700",
  "value": "#e64a19"
}, {
  "name": "Deep Orange 800",
  "value": "#d84315"
}, {
  "name": "Deep Orange 900",
  "value": "#bf360c"
}], [{
  "name": "Brown 50",
  "value": "#efebe9"
}, {
  "name": "Brown 100",
  "value": "#d7ccc8"
}, {
  "name": "Brown 200",
  "value": "#bcaaa4"
}, {
  "name": "Brown 300",
  "value": "#a1887f"
}, {
  "name": "Brown 400",
  "value": "#8d6e63"
}, {
  "name": "Brown 500",
  "value": "#795548"
}, {
  "name": "Brown 600",
  "value": "#6d4c41"
}, {
  "name": "Brown 700",
  "value": "#5d4037"
}, {
  "name": "Brown 800",
  "value": "#4e342e"
}, {
  "name": "Brown 900",
  "value": "#3e2723"
}], [{
  "name": "Grey 50",
  "value": "#fafafa"
}, {
  "name": "Grey 100",
  "value": "#f5f5f5"
}, {
  "name": "Grey 200",
  "value": "#eeeeee"
}, {
  "name": "Grey 300",
  "value": "#e0e0e0"
}, {
  "name": "Grey 400",
  "value": "#bdbdbd"
}, {
  "name": "Grey 500",
  "value": "#9e9e9e"
}, {
  "name": "Grey 600",
  "value": "#757575"
}, {
  "name": "Grey 700",
  "value": "#616161"
}, {
  "name": "Grey 800",
  "value": "#424242"
}, {
  "name": "Grey 900",
  "value": "#212121"
}], [{
  "name": "Blue Grey 50",
  "value": "#eceff1"
}, {
  "name": "Blue Grey 100",
  "value": "#cfd8dc"
}, {
  "name": "Blue Grey 200",
  "value": "#b0bec5"
}, {
  "name": "Blue Grey 300",
  "value": "#90a4ae"
}, {
  "name": "Blue Grey 400",
  "value": "#78909c"
}, {
  "name": "Blue Grey 500",
  "value": "#607d8b"
}, {
  "name": "Blue Grey 600",
  "value": "#546e7a"
}, {
  "name": "Blue Grey 700",
  "value": "#455a64"
}, {
  "name": "Blue Grey 800",
  "value": "#37474f"
}, {
  "name": "Blue Grey 900",
  "value": "#263238"
}], [{
  "name": "White",
  "value": "#ffffff"
}, {
  "name": "Black",
  "value": "#000000"
}]];
exports.MaterialSwatches = MaterialSwatches;
var BootstrapSwatches = [[{
  "name": "Gray Light",
  "value": "#777777"
}, {
  "name": "Base",
  "value": "#000000"
}, {
  "name": "Highlight Blue",
  "value": "#0055cc"
}, {
  "name": "Dark Blue",
  "value": "#005580"
}, {
  "name": "Success Text Green",
  "value": "#468847"
}, {
  "name": "Orange",
  "value": "#f89406"
}, {
  "name": "Red",
  "value": "#9d261d"
}, {
  "name": "Purple",
  "value": "#7a43b6"
}], [{
  "name": "Border Gray",
  "value": "#cccccc"
}, {
  "name": "Gray Darker",
  "value": "#222222"
}, {
  "name": "Primary Blue",
  "value": "#337ab7"
}, {
  "name": "Info Blue",
  "value": "#2f96b4"
}, {
  "name": "Green",
  "value": "#46a546"
}, {
  "name": "Light Orange",
  "value": "#fbb450"
}, {
  "name": "Danger Button Red",
  "value": "#bd362f"
}, {
  "name": "Pink",
  "value": "#c3325f"
}], [{
  "name": "Gray Lighter",
  "value": "#eeeeee"
}, {
  "name": "Gray Dark",
  "value": "#333333"
}, {
  "name": "Link Blue",
  "value": "#0088cc"
}, {
  "name": "Info Light Blue",
  "value": "#5bc0de"
}, {
  "name": "Success Button Green",
  "value": "#62c462"
}, {
  "name": "Yellow",
  "value": "#ffc40d"
}, {
  "name": "Error Text Red",
  "value": "#b94a48"
}, {
  "name": "Danger Highlight Red",
  "value": "#ee5f5b"
}], [{
  "name": "White",
  "value": "#ffffff"
}, {
  "name": "Gray",
  "value": "#555555"
}, {
  "name": "Accent Blue",
  "value": "#049cdb"
}, {
  "name": "Info Lighter Blue",
  "value": "#d9edf7"
}, {
  "name": "Success Background Green",
  "value": "#dff0d8"
}, {
  "name": "Warning Background Brown",
  "value": "#f3edd2"
}, {
  "name": "Warning Text Brown",
  "value": "#c09853"
}, {
  "name": "Danger Background Red",
  "value": "#f2dede"
}]];
exports.BootstrapSwatches = BootstrapSwatches;
var iOsSwatches = [[{
  "name": "Red",
  "value": "#ff3b30"
}, {
  "name": "Orange",
  "value": "#ff9500"
}, {
  "name": "Yellow",
  "value": "#ffcc00"
}, {
  "name": "Green",
  "value": "#4cd964"
}, {
  "name": "Teal Blue",
  "value": "#5ac8fa"
}, {
  "name": "Blue",
  "value": "#007aff"
}, {
  "name": "Purple",
  "value": "#5856d6"
}, {
  "name": "Pink",
  "value": "#ff2d55"
}], [{
  "name": "White",
  "value": "#ffffff"
}, {
  "name": "Custom Gray",
  "value": "#efeff4"
}, {
  "name": "Light Gray",
  "value": "#e5e5ea"
}, {
  "name": "Light Gray 2",
  "value": "#d1d1d6"
}, {
  "name": "Mid Gray",
  "value": "#c7c7cc"
}, {
  "name": "Gray",
  "value": "#8e8e93"
}, {
  "name": "Black",
  "value": "#000000"
}]];
exports.iOsSwatches = iOsSwatches;
_ACore["default"].install('swatchestable', SwatchesTable);
var _default = SwatchesTable;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.publicCreators = exports["default"] = void 0;
var _AutoCompleteInput = _interopRequireDefault(__webpack_require__(54845));
var _BoardTable = _interopRequireDefault(__webpack_require__(76372));
var _Board = _interopRequireDefault(__webpack_require__(67711));
var _BScroller = _interopRequireDefault(__webpack_require__(1446));
var _ButtonArray = _interopRequireDefault(__webpack_require__(34169));
var _CalendarInput = _interopRequireWildcard(__webpack_require__(95972));
var _CheckBoxInput = _interopRequireDefault(__webpack_require__(8398));
var _CheckBox = _interopRequireDefault(__webpack_require__(11946));
var _ChromeCalendar = _interopRequireDefault(__webpack_require__(51631));
var _CircleSectionLabel = _interopRequireDefault(__webpack_require__(84703));
var _Scroller = __webpack_require__(87780);
var _ContextMenu = _interopRequireDefault(__webpack_require__(24733));
var _Menu = __webpack_require__(26155);
var _DateInput = _interopRequireDefault(__webpack_require__(47156));
var _DraggableHStack = _interopRequireDefault(__webpack_require__(9294));
var _DraggableVStack = _interopRequireDefault(__webpack_require__(73816));
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
var _DropPanel = _interopRequireDefault(__webpack_require__(70615));
var _DropPanelStack = _interopRequireDefault(__webpack_require__(85628));
var _EditableText = _interopRequireDefault(__webpack_require__(33912));
var _EmojiPicker = _interopRequireDefault(__webpack_require__(24169));
var _Sprite = _interopRequireDefault(__webpack_require__(29464));
var _ExpTree = _interopRequireWildcard(__webpack_require__(87326));
var _FlexiconButton = _interopRequireDefault(__webpack_require__(78266));
var _FlexiconInput = _interopRequireDefault(__webpack_require__(23477));
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _Frame = _interopRequireDefault(__webpack_require__(63012));
var _FrameView = _interopRequireDefault(__webpack_require__(95002));
var _TabFrame = _interopRequireDefault(__webpack_require__(13089));
var _TabView = _interopRequireDefault(__webpack_require__(3475));
var _SinglePage = _interopRequireDefault(__webpack_require__(52404));
var _HexaSectionLabel = _interopRequireDefault(__webpack_require__(77057));
var _VRuler = _interopRequireDefault(__webpack_require__(46523));
var _HRuler = _interopRequireDefault(__webpack_require__(26058));
var _IconSprite = _interopRequireDefault(__webpack_require__(78120));
var _LinearColorBar = _interopRequireDefault(__webpack_require__(28848));
var _MediaInput = _interopRequireDefault(__webpack_require__(42870));
var _MessageInput = _interopRequireWildcard(__webpack_require__(42049));
var _NumberInput = _interopRequireDefault(__webpack_require__(51394));
var _NumberSpanInput = _interopRequireDefault(__webpack_require__(94471));
var _OnsScreenWindow = _interopRequireDefault(__webpack_require__(28217));
var _PageSelector = _interopRequireDefault(__webpack_require__(49826));
var _PreInput = _interopRequireDefault(__webpack_require__(76606));
var _ProgressBar = _interopRequireDefault(__webpack_require__(49087));
var _QuickListButton = _interopRequireDefault(__webpack_require__(3079));
var _FollowerToggler = _interopRequireDefault(__webpack_require__(49049));
var _SelectList = _interopRequireDefault(__webpack_require__(884));
var _QuickMenu = _interopRequireDefault(__webpack_require__(8277));
var _QuickPath = _interopRequireDefault(__webpack_require__(97722));
var _RadioButton = _interopRequireDefault(__webpack_require__(30348));
var _Radio = _interopRequireDefault(__webpack_require__(78994));
var _RemoteSvg = _interopRequireDefault(__webpack_require__(44716));
var _ResizeBox = _interopRequireDefault(__webpack_require__(32615));
var _Searcher = _interopRequireDefault(__webpack_require__(47106));
var _SelectBox = _interopRequireDefault(__webpack_require__(28596));
var _SelectBoxItem = _interopRequireDefault(__webpack_require__(27233));
var _SelectTable = _interopRequireDefault(__webpack_require__(7073));
var _SelectTable2 = _interopRequireDefault(__webpack_require__(49520));
var _SpanInput = _interopRequireDefault(__webpack_require__(96229));
var _StaticTabbar = _interopRequireDefault(__webpack_require__(41322));
var _Switch = _interopRequireDefault(__webpack_require__(4587));
var _CheckboxButton = _interopRequireDefault(__webpack_require__(93475));
var _TableScroller = _interopRequireDefault(__webpack_require__(151));
var _TableVScroller = _interopRequireDefault(__webpack_require__(98775));
var _TextArea = _interopRequireDefault(__webpack_require__(52072));
var _TextClipboard = _interopRequireDefault(__webpack_require__(39775));
var _TimeInput = _interopRequireDefault(__webpack_require__(17019));
var _TimePicker = _interopRequireDefault(__webpack_require__(24271));
var _Tooltip = _interopRequireDefault(__webpack_require__(54946));
var _TreeList = _interopRequireDefault(__webpack_require__(14927));
var _TreeListItem = _interopRequireDefault(__webpack_require__(72229));
var _SelectTreeMenu = _interopRequireDefault(__webpack_require__(75823));
var _WidthHeightSizer = _interopRequireDefault(__webpack_require__(13675));
var _Modal = _interopRequireDefault(__webpack_require__(4061));
var _TrackBar = _interopRequireDefault(__webpack_require__(98912));
var _TrackBarInput = _interopRequireDefault(__webpack_require__(49748));
var _SelectMenu = _interopRequireDefault(__webpack_require__(41735));
var _ButtonRange = _interopRequireDefault(__webpack_require__(33601));
var _DropZone = _interopRequireDefault(__webpack_require__(31790));
var _RadioInput = _interopRequireDefault(__webpack_require__(11655));
var _OnScreenWidget = _interopRequireDefault(__webpack_require__(95878));
var _SelectListBox = _interopRequireDefault(__webpack_require__(47818));
var _SelectTreeBox = _interopRequireDefault(__webpack_require__(63443));
var _RibbonSplitButton = _interopRequireDefault(__webpack_require__(285));
var _RibbonButton = _interopRequireDefault(__webpack_require__(93856));
var _TimeSelectInput = _interopRequireDefault(__webpack_require__(21348));
var _Snackbar = _interopRequireDefault(__webpack_require__(96206));
var _MultiSelectMenu = _interopRequireDefault(__webpack_require__(63176));
var _CountdownClock = _interopRequireDefault(__webpack_require__(99578));
var _Toast = _interopRequireDefault(__webpack_require__(68105));
var _Icons = __webpack_require__(39285);
var _EmojiPickerTooltip = _interopRequireDefault(__webpack_require__(64911));
var _PageIndicator = _interopRequireDefault(__webpack_require__(18549));
var _EmojiCounter = _interopRequireDefault(__webpack_require__(7010));
var _EmojiCounterList = _interopRequireDefault(__webpack_require__(7449));
var _RotatedText = _interopRequireDefault(__webpack_require__(61862));
var _VerticalTreeDiagram = _interopRequireWildcard(__webpack_require__(73606));
var _TokenField = _interopRequireDefault(__webpack_require__(89951));
var _DateTimeInput = _interopRequireDefault(__webpack_require__(37800));
var _ChromeTimePicker = _interopRequireDefault(__webpack_require__(11564));
var _DVExpTree = _interopRequireDefault(__webpack_require__(18123));
var _CheckListItem = _interopRequireDefault(__webpack_require__(27129));
var _CheckListBox = __webpack_require__(62896);
var _MultiCheckMenu = _interopRequireDefault(__webpack_require__(59346));
var _ChromeTime24Picker = _interopRequireDefault(__webpack_require__(2273));
var _Time24Input = _interopRequireDefault(__webpack_require__(46255));
var _TimeRange24Input = _interopRequireDefault(__webpack_require__(66499));
var _CheckTreeItem = _interopRequireDefault(__webpack_require__(26638));
var _CheckTreeBox = _interopRequireDefault(__webpack_require__(93794));
var _MultiCheckTreeMenu = _interopRequireDefault(__webpack_require__(74934));
var _FileInputBox = _interopRequireDefault(__webpack_require__(28794));
var _CountdownText = _interopRequireDefault(__webpack_require__(36266));
var _YesNoQuestionDialog = _interopRequireDefault(__webpack_require__(57318));
var _LoadingCubeModal = _interopRequireDefault(__webpack_require__(95521));
var _SelectTreeLeafBox = _interopRequireDefault(__webpack_require__(79442));
var _SelectTreeLeafMenu = _interopRequireDefault(__webpack_require__(66138));
var _MultiCheckTreeLeafBox = _interopRequireDefault(__webpack_require__(77361));
var _MultiCheckTreeLeafMenu = _interopRequireDefault(__webpack_require__(8306));
var _FileListInput = _interopRequireDefault(__webpack_require__(13146));
var _DateInYearPicker = _interopRequireDefault(__webpack_require__(96604));
var _DateInYearInput = _interopRequireDefault(__webpack_require__(63863));
var _CheckTreeLeafOnlyBox = _interopRequireDefault(__webpack_require__(13163));
var _FileListItem = _interopRequireDefault(__webpack_require__(62355));
var _DualSelectBox = _interopRequireDefault(__webpack_require__(51098));
var _DualSelectMenu = _interopRequireDefault(__webpack_require__(34219));
var _TOCItem = _interopRequireDefault(__webpack_require__(64836));
var _TOCList = _interopRequireDefault(__webpack_require__(89860));
var _CKPlaceholder = _interopRequireDefault(__webpack_require__(24471));
var _CKInlineShortText = _interopRequireDefault(__webpack_require__(43501));
var _VerticalTimeline = _interopRequireDefault(__webpack_require__(8960));
var _LocationView = _interopRequireDefault(__webpack_require__(80289));
var _PlaceSearchAutoCompleteInput = _interopRequireDefault(__webpack_require__(85602));
var _LocationPicker = _interopRequireDefault(__webpack_require__(76693));
var _LocationInput = _interopRequireDefault(__webpack_require__(17096));
var _MKNavigator = _interopRequireDefault(__webpack_require__(29342));
var _ProcessLBar = _interopRequireDefault(__webpack_require__(39368));
var _KVCommentItem = _interopRequireDefault(__webpack_require__(49067));
var _DynamicTable = _interopRequireDefault(__webpack_require__(76688));
var _WindowBox = _interopRequireDefault(__webpack_require__(24405));
var _MessageDialog = _interopRequireDefault(__webpack_require__(11674));
var _ObjectMergeTool = _interopRequireDefault(__webpack_require__(10641));
var _TokenizeHyperInput = _interopRequireDefault(__webpack_require__(85070));
var _SelectListBox2 = _interopRequireDefault(__webpack_require__(34174));
var _PathMenu = _interopRequireDefault(__webpack_require__(84943));
var _MultiCheckTreeLeafMenu2 = _interopRequireDefault(__webpack_require__(7498));
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _MCheckTreeLeafBox = _interopRequireDefault(__webpack_require__(88718));
var _MSelectTreeLeafBox = _interopRequireDefault(__webpack_require__(73484));
var _SelectTreeLeafMenu2 = _interopRequireDefault(__webpack_require__(86258));
var _MDualSelectBox = _interopRequireDefault(__webpack_require__(72710));
var _DualSelectMenu2 = _interopRequireDefault(__webpack_require__(21606));
var _TreeTable = _interopRequireDefault(__webpack_require__(29950));
var _LinearColorTinyBar = _interopRequireDefault(__webpack_require__(96026));
var _Finder = _interopRequireDefault(__webpack_require__(14591));
var _TreeChart = _interopRequireDefault(__webpack_require__(512));
var _CopyableIconTooltip = _interopRequireDefault(__webpack_require__(76435));
var _DateNLevelInput = _interopRequireDefault(__webpack_require__(45627));
var _TableOfTextInput = _interopRequireDefault(__webpack_require__(98432));
var _MSelectMenu = _interopRequireDefault(__webpack_require__(70448));
var _MSelectTreeMenu = _interopRequireDefault(__webpack_require__(3770));
var _MHeaderBar = _interopRequireDefault(__webpack_require__(23277));
var _MExplore = __webpack_require__(82988);
var _SolidColorPicker = _interopRequireDefault(__webpack_require__(28380));
var _SwatchesTable = __webpack_require__(83225);
var _ColorPickerButton = _interopRequireDefault(__webpack_require__(21212));
var _SelectColorSchemeMenu = _interopRequireDefault(__webpack_require__(78061));
var _ProgressCircle = _interopRequireDefault(__webpack_require__(84743));
var _ExpressionInput = _interopRequireDefault(__webpack_require__(37496));
var _IdentTextInput = _interopRequireDefault(__webpack_require__(62501));
var _EfficientTable = _interopRequireDefault(__webpack_require__(13039));
var _CompactDataGridEditor = _interopRequireDefault(__webpack_require__(8535));
var _SelectRibbonMenu = _interopRequireDefault(__webpack_require__(68302));
var _PathView = _interopRequireDefault(__webpack_require__(32555));
var _FontInput = _interopRequireWildcard(__webpack_require__(81285));
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 }; }
var publicCreators = [_Icons.MdiStoreMarkerOutline, _AutoCompleteInput["default"], _BoardTable["default"], _Board["default"], _BScroller["default"], _ButtonArray["default"], _ButtonRange["default"], _CalendarInput["default"], _CalendarInput.OldCalendarInput, _CheckBoxInput["default"], _CheckBox["default"], _CheckboxButton["default"], _CheckListItem["default"], _CheckListBox.CheckListBox, _CheckTreeLeafOnlyBox["default"], _ChromeCalendar["default"], _ChromeTimePicker["default"], _ChromeTime24Picker["default"], _CircleSectionLabel["default"], _CountdownClock["default"], _CountdownText["default"], _DateInYearPicker["default"], _DateInYearInput["default"], _DateTimeInput["default"], _DropZone["default"], _ExpressionInput["default"], _IdentTextInput["default"], _EmojiPickerTooltip["default"], _FileInputBox["default"], _FileListItem["default"], _FileListInput["default"], _Finder["default"], _FontInput.FontFamilySelectList, _FontInput["default"], _Scroller.Scrollbar, _Scroller.VScrollbar, _Scroller.HScrollbar, _Scroller.VScroller, _Scroller.HScroller, _ContextMenu["default"], _Menu.HMenu, _Menu.VMenuItem, _Menu.VMenu, _Menu.Dropright, _Menu.VMenuLine, _Menu.Dropdown, _Menu.HMenuItem, _Menu.VMenu, _Menu.VRootMenu, _Menu.MenuButton, _DateInput["default"], _DateNLevelInput["default"], _Hanger["default"], _DraggableHStack["default"], _DraggableVStack["default"], _DropPanel["default"], _DropPanelStack["default"], _EditableText["default"], _EmojiPicker["default"], _EmojiCounter["default"], _EmojiCounterList["default"], _Sprite["default"], _ExpTree.ExpNode, _ExpTree["default"], _ExpTree.ExpGroup, _DVExpTree["default"], _FlexiconButton["default"], _FlexiconInput["default"], _Follower["default"], _FollowerToggler["default"], _Frame["default"], _FrameView["default"], _TabFrame["default"], _TabView["default"], _SinglePage["default"], _HexaSectionLabel["default"], _VRuler["default"], _HRuler["default"], _IconSprite["default"], _LinearColorBar["default"], _LinearColorTinyBar["default"], _MediaInput["default"], _MessageInput["default"], _MessageInput.MessageQuote, _Modal["default"], _LoadingCubeModal["default"], _NumberInput["default"], _NumberSpanInput["default"], _OnsScreenWindow["default"], _OnScreenWidget["default"], _PageIndicator["default"], _PageSelector["default"], _PreInput["default"], _ProgressBar["default"], _ProgressCircle["default"], _QuickListButton["default"], _QuickMenu["default"], _QuickPath["default"], _PathMenu["default"], _PathView["default"], _Radio["default"], _RadioButton["default"], _RadioInput["default"], _RibbonSplitButton["default"], _RibbonButton["default"], _SelectRibbonMenu["default"], _RotatedText["default"], _SelectList["default"], _RemoteSvg["default"], _ResizeBox["default"], _Searcher["default"], _SelectListBox["default"], _SelectTreeBox["default"], _SelectMenu["default"], _SelectBox["default"], _MultiSelectMenu["default"], _MultiCheckTreeLeafBox["default"], _BrowserDetector["default"].isMobile ? _MultiCheckTreeLeafMenu2["default"] : _MultiCheckTreeLeafMenu["default"], _SelectBoxItem["default"], _DualSelectBox["default"], _BrowserDetector["default"].isMobile ? _DualSelectMenu2["default"] : _DualSelectMenu["default"], _SelectTable["default"], _SelectTable2["default"], _SelectTreeMenu["default"], _SelectTreeLeafBox["default"], /*BrowserDetector.isMobile ? SelectTreeLeafMenuV2 :*/_SelectTreeLeafMenu["default"], _SpanInput["default"], _Snackbar["default"], _StaticTabbar["default"], _Switch["default"], _TableScroller["default"], _TableVScroller["default"], _TreeTable["default"], _TextArea["default"], _TextClipboard["default"], _TimeInput["default"], _Time24Input["default"], _TimeRange24Input["default"], _TimeSelectInput["default"], _TimePicker["default"], _DateTimeInput["default"], _Tooltip["default"], _CopyableIconTooltip["default"], _Toast["default"], _TreeList["default"], _TreeListItem["default"], _TokenField["default"], _WidthHeightSizer["default"], _TrackBar["default"], _TrackBarInput["default"], _Icons.SpinnerIco, _Icons.ProcessOutlineIcon, _Icons.ProcedureOutlineIcon, _VerticalTreeDiagram.VerticalTreeDiagramNode, _VerticalTreeDiagram["default"], _MultiCheckMenu["default"], _CheckTreeItem["default"], _CheckTreeBox["default"], _MultiCheckTreeMenu["default"], _MessageDialog["default"], _YesNoQuestionDialog["default"], _TOCItem["default"], _TOCList["default"], _CKPlaceholder["default"], _CKInlineShortText["default"], _VerticalTimeline["default"], _WindowBox["default"], _LocationView["default"], _LocationPicker["default"], _LocationInput["default"], _PlaceSearchAutoCompleteInput["default"], _MKNavigator["default"], _ProcessLBar["default"], _KVCommentItem["default"], _DynamicTable["default"], _EfficientTable["default"], _ObjectMergeTool["default"], _TokenizeHyperInput["default"], _SelectListBox2["default"],
// MCheckTreeBox,
_MCheckTreeLeafBox["default"], _MSelectTreeLeafBox["default"], _MDualSelectBox["default"], _TreeChart["default"], _TableOfTextInput["default"], _CompactDataGridEditor["default"], _MHeaderBar["default"], _MExplore.MExploreSectionBreak, _MExplore.MExploreItemBlock, _MExplore.MExploreGroup, _MExplore.MSpringboardMenu, _SolidColorPicker["default"], _ColorPickerButton["default"], _SwatchesTable.ColorCell, _SelectColorSchemeMenu["default"]];

/***
 *
 * @param {Dom} core
 */
exports.publicCreators = publicCreators;
function install(core) {
  core.install(publicCreators);
  core.install('checkboxbutton', _CheckBoxInput["default"]);
  core.install('selectbox', _MultiSelectMenu["default"]);
  if (_BrowserDetector["default"].isMobile) {
    core.install('selectmenu', _MSelectMenu["default"]);
    core.install('selecttreemenu', _MSelectTreeMenu["default"]);
  }
  core.install('MSelectTreeLeafMenu'.toLowerCase(), _SelectTreeLeafMenu["default"]);
  core.install('MMultiCheckTreeMenu'.toLowerCase(), _MultiCheckTreeMenu["default"]);
  core.install('MMultiCheckTreeLeafMenu'.toLowerCase(), _MultiCheckTreeLeafMenu["default"]);
}
var _default = install;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.DSBModeNormal = DSBModeNormal;
exports.DSBModeSearch = DSBModeSearch;
var _ACore = __webpack_require__(34093);
var _utils = __webpack_require__(84512);
var _noop = _interopRequireDefault(__webpack_require__(5025));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function DSBModeNormal(elt, items) {
  var _this = this;
  this.items = items;
  this.value = [undefined, undefined];
  this.elt = elt;
  this.$lists = this.elt.$lists;
  this.$leftItems = items.map(function (item) {
    return _this._makeLeftItem(item);
  });
  this.$leftItemDict = this.$leftItems.reduce(function (ac, cr) {
    ac[(0, _utils.keyStringOf)(cr.itemData.value)] = cr;
    return ac;
  }, {});
  this.$rightItemDict = {};
  this.$rightItems = [];
  this.rightListDict = {};
  if (items.length > 0) {
    this.viewRight(items[0].value);
  }
  this.$selectedLeft = null;
  this.$selectedRight = null;
}
DSBModeNormal.prototype._makeLeftItem = function (item) {
  var self = this;
  var itemElt = (0, _ACore._)({
    "class": 'absol-selectlist-item',
    attr: {
      'data-key': (0, _utils.keyStringOf)(item.value)
    },
    child: {
      tag: 'span',
      "class": 'absol-selectlist-item-text',
      child: {
        text: item.text
      }
    },
    on: {
      click: function click() {
        self.selectLeft(item.value);
        self.viewToSelected();
        self.elt.notifyChange();
      }
    }
  });
  itemElt.itemData = item;
  return itemElt;
};
DSBModeNormal.prototype._makeRightItem = function (leftItem, item) {
  var self = this;
  var itemElt = (0, _ACore._)({
    "class": 'absol-selectlist-item',
    attr: {
      'data-key': (0, _utils.keyStringOf)(item.value)
    },
    child: {
      tag: 'span',
      "class": 'absol-selectlist-item-text',
      child: {
        text: item.text
      }
    },
    on: {
      click: function click() {
        self.selectLeft(leftItem.value);
        self.selectRight(item.value);
        self.elt.notifyChange();
      }
    }
  });
  itemElt.itemData = item;
  return itemElt;
};
DSBModeNormal.prototype.selectLeft = function (leftValue) {
  var itemElt = this.$leftItemDict[(0, _utils.keyStringOf)(leftValue)];
  if (!itemElt) return false;
  if (this.$selectedLeft === itemElt) return true;
  if (this.$selectedLeft) {
    this.$selectedLeft.removeClass('as-selected');
    this.$selectedLeft = null;
  }
  itemElt.addClass('as-selected');
  this.$selectedLeft = itemElt;
  this.value[0] = leftValue;
  this.viewRight(leftValue);
  var ok = this.selectRight(this.value[1]);
  var sItems;
  if (!ok) {
    sItems = itemElt.itemData.items;
    if (sItems && sItems.length > 0) this.selectRight(sItems[0].value);
  }
  return true;
};
DSBModeNormal.prototype.viewRight = function (leftValue) {
  var _this2 = this;
  var key = (0, _utils.keyStringOf)(leftValue);
  var holder = this.rightListDict[key];
  var items;
  var leftItem;
  if (!holder) {
    leftItem = this.$leftItemDict[key] && this.$leftItemDict[key].itemData;
    items = leftItem && leftItem.items;
    if (items) {
      holder = {};
      holder.list = items.map(function (sItem) {
        return _this2._makeRightItem(leftItem, sItem);
      });
      holder.dict = holder.list.reduce(function (ac, cr) {
        ac[(0, _utils.keyStringOf)(cr.itemData.value)] = cr;
        return ac;
      }, {});
      this.rightListDict[key] = holder;
    }
  }
  if (holder) {
    if (this.$rightItems !== holder.list) {
      this.$rightItems = holder.list;
      this.$rightItemDict = holder.dict;
      this.$lists[1].clearChild().addChild(this.$rightItems);
    }
  } else {
    this.$lists[1].clearChild();
    this.$rightItems = null;
    this.$rightItemDict = {};
  }
};
DSBModeNormal.prototype.selectRight = function (value) {
  var itemElt = this.$rightItemDict[(0, _utils.keyStringOf)(value)];
  if (!itemElt) return false;
  if (this.$selectedRight === itemElt) return true;
  if (this.$selectedRight) {
    this.$selectedRight.removeClass('as-selected');
    this.$selectedRight = null;
  }
  itemElt.addClass('as-selected');
  this.$selectedRight = itemElt;
  this.value[1] = value;
  return true;
};
DSBModeNormal.prototype.onStart = function () {
  this.$lists[0].clearChild().addChild(this.$leftItems);
  this.$lists[1].clearChild().addChild(this.$rightItems);
  this.viewToSelected();
};
DSBModeNormal.prototype.onStop = _noop["default"];
DSBModeNormal.prototype.setValue = function (value, strictValue) {
  if (!(value instanceof Array)) {
    value = [undefined, undefined];
  }
  while (value.length < 2) {
    value.push(undefined);
  }
  while (value.length > 2) {
    value.pop();
  }
  var leftOK = this.selectLeft(value[0]);
  if (!leftOK && strictValue) {
    if (this.items.length > 0) {
      leftOK = this.selectLeft(this.items[0].value);
    }
  }
  if (leftOK) this.viewRight(this.value[0]);
  var rightOK = this.selectRight(value[1]);
  if (!rightOK && strictValue) {
    if (this.$selectedLeft && this.$selectedLeft.itemData.items && this.$selectedLeft.itemData.items.length > 0) {
      rightOK = this.selectRight(this.$selectedLeft.itemData.items[0].value);
    }
  }
  this.viewToSelected();
};
DSBModeNormal.prototype.getValue = function (strictValue) {
  var value = this.value.slice();
  if (!strictValue) return value;
  if (!this.$leftItemDict[(0, _utils.keyStringOf)(value[0])]) {
    value[0] = this.items[0] && this.items[0].value;
  }
  var rightHolder = this.rightListDict[(0, _utils.keyStringOf)(value[0])];
  if (rightHolder) {
    if (!rightHolder.dict[(0, _utils.keyStringOf)(value[1])]) {
      if (rightHolder.list.length > 0) {
        value[1] = rightHolder.list[0].itemData.value;
      }
    }
  }
  return value;
};
DSBModeNormal.prototype.getSelectedItem = function () {
  var value = this.value.slice();
  var item = [null, null];
  if (this.$leftItemDict[(0, _utils.keyStringOf)(value[0])]) {
    item[0] = this.$leftItemDict[(0, _utils.keyStringOf)(value[0])].itemData;
  }
  var rightHolder = this.rightListDict[(0, _utils.keyStringOf)(value[0])];
  if (rightHolder) {
    if (rightHolder.dict[(0, _utils.keyStringOf)(value[1])]) {
      item[1] = rightHolder.dict[(0, _utils.keyStringOf)(value[1])].itemData;
    }
  }
  return item;
};
DSBModeNormal.prototype.viewToSelected = function () {
  var _this3 = this;
  setTimeout(function () {
    if (_this3.$selectedLeft) {
      (0, _utils.vScrollIntoView)(_this3.$selectedLeft);
    }
    if (_this3.$selectedRight) {
      (0, _utils.vScrollIntoView)(_this3.$selectedRight);
    }
  }, 50);
};

/***
 * @extends DSBModeNormal
 * @param elt
 * @param items
 * @constructor
 */
function DSBModeSearch(elt, items) {
  DSBModeNormal.apply(this, arguments);
}
_OOP["default"].mixClass(DSBModeSearch, DSBModeNormal);
delete DSBModeSearch.prototype.getValue;
delete DSBModeSearch.prototype.setValue;
DSBModeSearch.prototype.onStart = function () {
  DSBModeNormal.prototype.onStart.call(this);
  this.$lists[0].scrollTop = 0;
  this.$lists[1].scrollTop = 0;
  if (this.$selectedLeft) {
    this.$selectedLeft.removeClass('as-selected');
    this.$selectedLeft = null;
  }
  if (this.$selectedRight) {
    this.$selectedRight.removeClass('as-selected');
    this.$selectedRight = null;
  }
};
DSBModeSearch.prototype.updateSelectedFromRef = function () {
  var normalMode = this.elt.modes.normal;
  if (normalMode.$selectedLeft) {
    this.selectLeft(normalMode.$selectedLeft.itemData.value, true);
  }
  if (normalMode.$selectedRight) {
    this.selectRight(normalMode.$selectedRight.itemData.value, true);
  }
};
DSBModeSearch.prototype.selectLeft = function (leftValue, viewOnly) {
  if (!viewOnly) this.elt.modes.normal.selectLeft(leftValue);
  var itemElt = this.$leftItemDict[(0, _utils.keyStringOf)(leftValue)];
  if (this.$selectedLeft === itemElt) return true;
  if (this.$selectedLeft) {
    this.$selectedLeft.removeClass('as-selected');
    this.$selectedLeft = null;
  }
  if (!itemElt) return false;
  itemElt.addClass('as-selected');
  this.$selectedLeft = itemElt;
  this.viewRight(leftValue);
  var sItems = itemElt.itemData.items;
  if (sItems && sItems.length > 0 && !viewOnly) this.selectRight(sItems[0].value);
  return true;
};
DSBModeSearch.prototype.selectRight = function (value, viewOnly) {
  if (!viewOnly) this.elt.modes.normal.selectRight(value);
  var itemElt = this.$rightItemDict[(0, _utils.keyStringOf)(value)];
  if (this.$selectedRight === itemElt) return true;
  if (this.$selectedRight) {
    this.$selectedRight.removeClass('as-selected');
    this.$selectedRight = null;
  }
  if (!itemElt) return false;
  itemElt.addClass('as-selected');
  this.$selectedRight = itemElt;
  return true;
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var DSBPropHandlers = {};
DSBPropHandlers.items = {
  set: function set(items) {
    this.itemListCtrl.setItems(items);
    if ('savedValue' in this) {
      this.modes.normal.setValue(this.savedValue, this.strictValue);
    }
  },
  get: function get() {
    return this.itemListCtrl.getItems();
  }
};
DSBPropHandlers.value = {
  set: function set(value) {
    this.savedValue = value;
    this.modes.normal.setValue(value, this.strictValue);
  },
  get: function get() {
    return this.modes.normal.getValue(this.strictValue);
  }
};
DSBPropHandlers.selectedItem = {
  get: function get() {
    return this.modes.normal.getSelectedItem();
  }
};
DSBPropHandlers.strictValue = {
  set: function set(value) {
    if (value) {
      this.$box.addClass('as-strict-value');
    } else {
      this.$box.removeClass('as-strict-value');
    }
  },
  get: function get() {
    return this.$box.hasClass('as-strict-value');
  }
};
DSBPropHandlers.enableSearch = {
  set: function set(value) {
    if (value) {
      this.$box.addClass('as-enable-search');
    } else {
      this.$box.removeClass('as-enable-search');
    }
  },
  get: function get() {
    return this.$box.hasClass('as-enable-search');
  }
};
var _default = DSBPropHandlers;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _utils = __webpack_require__(84512);
var _search = _interopRequireWildcard(__webpack_require__(67858));
var _DSBModes = __webpack_require__(45069);
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 MDSBItemListController(elt) {
  this.elt = elt;
  this.items = [];
  this._searchItems = [];
  this._searchCache = {};
}
MDSBItemListController.prototype.setItems = function (items) {
  this.items = (0, _utils.copySelectionItemArray)(items);
  this._searchItems = (0, _search.prepareSearchForList)((0, _utils.copySelectionItemArray)(this.items));
  this._searchCache = {};
  var mode = new _DSBModes.DSBModeNormal(this.elt, this.items);
  this.elt.modes.normal = mode;
  this.elt.mode = mode;
  mode.onStart();
};
MDSBItemListController.prototype.getItems = function () {
  return (0, _utils.copySelectionItemArray)(this.items);
};
MDSBItemListController.prototype.makeSearch = function (query) {
  if (this._searchCache[query]) return this._searchCache[query].resetAndGet();
  var items = this._searchItems;
  var queryItem = (0, _search["default"])({
    text: query
  });
  var maxScore = 0;
  var holders = items.map(function (item) {
    var h = {
      item: item,
      itemScore: (0, _search.calcItemMatchScore)(queryItem, item)
    };
    maxScore = Math.max(maxScore, h.itemScore);
    var childMaxScore = 0;
    if (item.items && item.items.length > 0) {
      h.child = item.items.map(function (cItem) {
        var cItemScore = (0, _search.calcItemMatchScore)(queryItem, cItem);
        maxScore = Math.max(maxScore, cItemScore);
        childMaxScore = Math.max(childMaxScore, cItemScore);
        return {
          item: cItem,
          itemScore: cItemScore
        };
      });
      h.childScore = childMaxScore;
    }
    return h;
  });
  holders.sort(function (a, b) {
    return -Math.max(a.itemScore, a.childScore) + Math.max(b.itemScore, b.childScore);
  });
  var midScore = maxScore / 2;
  holders = holders.filter(function (holder) {
    return Math.max(holder.itemScore, holder.childScore) >= midScore;
  });
  var searchingResultItems = holders.map(function (holder) {
    var oldItem = holder.item;
    var item = {
      text: oldItem.text,
      value: oldItem.value
    };
    var childHolders;
    if (holder.child) {
      childHolders = holder.child.slice();
      childHolders.sort(function (a, b) {
        return -a.itemScore + b.itemScore;
      });
      item.items = childHolders.map(function (cHolder) {
        return cHolder.item;
      });
      item.isSearchItem = true;
    }
    return item;
  });
  var mode = new _DSBModes.DSBModeSearch(this.elt, searchingResultItems);
  this._searchCache[query] = {
    mode: mode,
    resetAndGet: function resetAndGet() {
      return this.mode;
    }
  };
  return mode;
};
var _default = MDSBItemListController;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Searcher = _interopRequireDefault(__webpack_require__(47106));
var _ACore = __webpack_require__(34093);
var _DSBPropHandlers = _interopRequireDefault(__webpack_require__(53364));
var _MDSBItemListController = _interopRequireDefault(__webpack_require__(95746));
var _DSBModes = __webpack_require__(45069);
__webpack_require__(86692);
var _utils = __webpack_require__(84512);
var _EventEmitter = __webpack_require__(46833);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends {AElement}
 * @constructor
 */
function MDualSelectBox() {
  this.$box = (0, _ACore.$)('.am-dropdown-box', this);
  this.$lists = (0, _ACore.$$)('.as-dual-select-box-list', this);
  this.itemListCtrl = new _MDSBItemListController["default"](this);
  this.$searchInput = (0, _ACore.$)(_Searcher["default"].tag, this).on('stoptyping', this.eventHandler.searchModify);
  this.$closeBtn = (0, _ACore.$)('.am-dropdown-box-close-btn', this);
  this.modes = {
    normal: new _DSBModes.DSBModeNormal(this, [])
  };
  this.mode = this.modes.normal;
  this.strictValue = true;
  this.on('click', this.eventHandler.click);
}
MDualSelectBox.tag = 'MDualSelectBox'.toLowerCase();
MDualSelectBox.render = function () {
  return (0, _ACore._)({
    extendEvent: ['change', 'close'],
    "class": ['am-modal', 'am-dropdown-box-modal'],
    child: {
      "class": ['am-dual-select-box', 'am-dropdown-box', 'as-dropdown-box-common-style'],
      child: [{
        "class": 'am-dropdown-box-header',
        child: [{
          tag: _Searcher["default"].tag
        }, {
          tag: 'button',
          "class": 'am-dropdown-box-close-btn',
          child: 'span.mdi.mdi-close'
        }]
      }, {
        "class": ['am-dropdown-box-body', 'am-check-tree-box-body', 'as-dual-select-box-list-ctn'],
        child: [{
          "class": ['as-dual-select-box-list', 'absol-selectlist']
        }, {
          "class": 'as-dual-select-box-arrow-ctn',
          child: 'span.mdi.mdi-menu-right'
        }, {
          "class": ['as-dual-select-box-list', 'absol-selectlist']
        }]
      }]
    }
  });
};
MDualSelectBox.prototype.viewToSelected = function () {
  this.modes.normal.viewToSelected();
};
MDualSelectBox.prototype.notifyChange = function () {
  var newValue = this.value;
  if ((0, _utils.keyStringOf)(newValue) !== (0, _utils.keyStringOf)(this['savedValue'])) {
    this.savedValue = newValue;
    this.emit('change', {
      type: 'change',
      target: this
    }, this);
  }
};
MDualSelectBox.prototype.resetSearchState = function () {
  this.$searchInput.value = '';
  this.eventHandler.searchModify();
};
MDualSelectBox.property = _DSBPropHandlers["default"];
MDualSelectBox.eventHandler = {};
MDualSelectBox.eventHandler.searchModify = function () {
  var query = this.$searchInput.value.trim().replace(/\s+/g, ' ');
  if (query.length > 0) {
    if (this.mode === this.modes.normal) {
      this.mode.onStop();
      this.$box.addClass('as-searching');
    }
    this.mode.search = this.itemListCtrl.makeSearch(query);
    this.mode = this.mode.search;
    this.mode.onStart();
  } else {
    if (this.mode !== this.modes.normal) {
      this.mode.onStop();
      this.mode = this.modes.normal;
      this.mode.onStart();
      this.$box.removeClass('as-searching');
    }
  }
};
MDualSelectBox.eventHandler.click = function (event) {
  if (event.target === this || (0, _EventEmitter.hitElement)(this.$closeBtn, event)) {
    this.emit('close', {
      type: 'close',
      target: this,
      originalEvent: event
    }, this);
  }
};
var _default = MDualSelectBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _utils = __webpack_require__(84512);
var _VarScope = _interopRequireDefault(__webpack_require__(61607));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var DSMPropsHandlers = {};
DSMPropsHandlers.isFocus = {
  set: function set(value) {
    if (this.disabled || this.readOnly) value = false;
    value = !!value;
    if (value === this.hasClass('as-focus')) return;
    if (value) {
      this.savedValue = this.$box.value;
      this.addClass('as-focus');
      this.boxCtrl.onFocus();
    } else {
      this.removeClass('as-focus');
      this.boxCtrl.onBlur();
      this.updateText();
      if ((0, _utils.keyStringOf)(this.savedValue) !== (0, _utils.keyStringOf)(this.$box.value)) {
        delete this.savedValue;
        this.notifyChange();
      }
    }
  },
  get: function get() {
    return this.hasClass('as-focus');
  }
};
DSMPropsHandlers.items = {
  set: function set(items) {
    this.$box.items = items;
    if ('pendingValue' in this) {
      this.$box.value = this.pendingValue;
    }
    this.updateText();
  },
  get: function get() {
    return this.$box.items;
  }
};
DSMPropsHandlers.value = {
  set: function set(value) {
    this.pendingValue = value;
    this.$box.value = value;
    this.updateText();
  },
  get: function get() {
    if (!this.strictValue && 'pendingValue' in this) {
      return this.pendingValue;
    }
    var value = this.$box.value;
    var selectedItem = this.$box.selectedItem;
    if (!selectedItem || !selectedItem[0] || !selectedItem[1]) return null;
    return value;
  }
};
DSMPropsHandlers.format = {
  set: function set(value) {
    this.attr('data-format', value);
    this.updateText();
  },
  get: function get() {
    return this.attr('data-format') || '$0, $1';
  }
};
DSMPropsHandlers.strictValue = {
  set: function set(value) {
    this.$box.strictValue = value;
    if (value) {
      this.addClass('as-strict-value');
    } else {
      this.removeClass('as-strict-value');
    }
  },
  get: function get() {
    return this.$box.strictValue;
  }
};
DSMPropsHandlers.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
DSMPropsHandlers.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
var _default = DSMPropsHandlers;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _MDualSelectBox = _interopRequireDefault(__webpack_require__(72710));
var _MDSMBoxController = _interopRequireDefault(__webpack_require__(49224));
var _DSMPropsHandlers = _interopRequireDefault(__webpack_require__(96601));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function DualSelectMenu() {
  this.$box = (0, _ACore._)({
    tag: _MDualSelectBox["default"]
  });
  this.$item = (0, _ACore.$)('.absol-selectlist-item', this);
  _OOP["default"].drillProperty(this, this.$box, 'enableSearch');
  this.boxCtrl = new _MDSMBoxController["default"](this);
  this.strictValue = true;
}
DualSelectMenu.tag = 'DualSelectMenu'.toLowerCase();
DualSelectMenu.render = function () {
  return (0, _ACore._)({
    "class": ['am-dual-select-menu', 'absol-selectmenu', 'as-dual-select-menu'],
    extendEvent: ['change'],
    attr: {
      tabindex: '1'
    },
    child: [{
      "class": 'absol-selectmenu-holder-item',
      child: '.absol-selectlist-item'
    }, {
      tag: 'button',
      "class": 'absol-selectmenu-btn',
      child: ['dropdown-ico']
    }, 'attachhook']
  });
};
DualSelectMenu.prototype.notifyChange = function () {
  // console.log('change')
  delete this['pendingValue'];
  this.emit('change', {
    type: 'change',
    target: this
  }, this);
};
DualSelectMenu.prototype.updateText = function () {
  var selectedItem = this.$box.selectedItem;
  var format = this.format;
  var firstToken = '__';
  var secToken = '__';
  if (selectedItem[0]) {
    firstToken = selectedItem[0].text + '';
  }
  if (selectedItem[1]) {
    secToken = selectedItem[1].text + '';
  }
  var text = format.replace('$0', firstToken).replace('$1', secToken);
  this.$item.clearChild().addChild((0, _ACore._)({
    tag: 'span',
    "class": 'absol-selectlist-item-text',
    child: {
      text: text
    }
  }));
};
DualSelectMenu.property = _DSMPropsHandlers["default"];
DualSelectMenu.eventHandler = {};
var _default = DualSelectMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
function MDSMBoxController(elt) {
  this.elt = elt;
  this.$box = elt.$box;
  for (var key in this) {
    if (key.startsWith('ev_')) {
      this[key] = this[key].bind(this);
    }
  }
  this.elt.on('click', this.ev_click);
  this.$box.on('close', this.ev_close);
}
MDSMBoxController.prototype.ev_click = function () {
  this.elt.isFocus = true;
};
MDSMBoxController.prototype.ev_close = function () {
  this.elt.isFocus = false;
};
MDSMBoxController.prototype.onFocus = function () {
  this.$box.addTo(document.body);
  this.$box.viewToSelected();
  this.elt.off('click', this.ev_click);
};
MDSMBoxController.prototype.onBlur = function () {
  var _this = this;
  this.$box.remove();
  setTimeout(function () {
    _this.elt.on('click', _this.ev_click);
  }, 50);
};
var _default = MDSMBoxController;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _DTBodyRow = _interopRequireDefault(__webpack_require__(7674));
var _utils = __webpack_require__(84512);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _Thread = _interopRequireDefault(__webpack_require__(44067));
var _DTSearchFactor = _interopRequireDefault(__webpack_require__(87060));
var _stringGenerate = __webpack_require__(10713);
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _ACore = __webpack_require__(34093);
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _Dom = __webpack_require__(64821);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {DTBody} body
 * @constructor
 */
function SearchingMaster(body) {
  this.body = body;
  this.mode = body.modes.searching;
  this.waitingCtrl = body.table.wrapper.waitingCtl;
  this.initWorker();
  this.id = (0, _stringGenerate.randomIdent)(10);
  this.transferSession = Math.random() + '';
  this.transferred = 0;
  this.isTranferring = false;
  this.share.instances[this.id] = this;
  this.itemVersion = 0;
  this.outputCache = {};
  this.lastTaskIdx = 0;
}
SearchingMaster.prototype.destroy = function () {
  this.share.thread.invoke('destroySlave', this.id);
  this.share.instances[this.id] = null;
  this.transferSession = "DIE";
  delete this.share.instances[this.id];
  this.outputCache = {};
  this.body = null;
};
SearchingMaster.prototype.transferFrom = function (offset) {
  if (this.transferSession === "DIE") {
    return;
  }
  this.outputCache = {};
  if (offset < this.transferred) {
    this.transferred = offset;
    this.itemVersion++;
  }
  if (this.isTranferring) return;
  var waitingCtrl = this.waitingCtrl;
  var wTkn = waitingCtrl.begin();
  var self = this;
  var transferSession = Math.random() + '';
  self.transferSession = transferSession;
  self.isTranferring = true;
  setTimeout(function tick() {
    if (self.transferSession !== transferSession) {
      waitingCtrl.end(wTkn);
      return;
    }
    var i = self.transferred;
    var rows = self.body.rows;
    var n = self.body.rows.length;
    if (i >= n) {
      if (n === 0) {
        self.share.thread.invoke('transferSearchItems', self.id, n, 0, 0, [], self.itemVersion);
      }
      self.isTranferring = false;
      self.onFinishTransfer();
      waitingCtrl.end(wTkn);
      return;
    }
    self.share.benchmark = self.share.benchmark || _BrowserDetector["default"].calcBenchmark();
    var k = self.share.benchmark >> 2;
    var items = [];
    var item;
    var start = i;
    while (i < n && k--) {
      item = {
        text: rows[i].innerText,
        value: i,
        keys: rows[i].filterKeys
      };
      items.push(item);
      ++i;
    }
    var sync = self.share.thread.invoke('transferSearchItems', self.id, n, start, i, items, self.itemVersion);
    self.transferred = i;
    Promise.all([sync, new Promise(function (rs) {
      setTimeout(rs, 5);
    })]).then(tick);
  }, 5);
};
SearchingMaster.prototype.onFinishTransfer = function () {
  // console.log('finish');
};
SearchingMaster.prototype.sendTask = function (query) {
  if (this.transferSession === "DIE") {
    return;
  }
  this.lastTaskIdx++;
  var taskData = {
    idx: this.lastTaskIdx,
    query: query,
    hash: (0, _utils.calcDTQueryHash)(query)
  };
  if (this.outputCache[taskData.hash]) {
    setTimeout(this.onResult.bind(this, this.outputCache[taskData.hash], true), 5);
  } else {
    this.share.thread.invoke('transferTask', this.id, taskData);
  }
  return taskData;
};
SearchingMaster.prototype.onResult = function (response, dontCache) {
  if (this.itemVersion !== response.itemVersion) return;
  if (!dontCache) {
    this.outputCache[response.hash] = response;
  }
  this.body.modes.searching.onResult(response);
};
SearchingMaster.prototype.share = {
  thread: null,
  benchmark: 0,
  instances: {}
};
SearchingMaster.prototype.initWorker = function () {
  if (!this.share.thread) {
    this.share.thread = new _Thread["default"]({
      methods: {
        calcBenchmark: _BrowserDetector["default"].calcBenchmark
      },
      extendCode: _DTSearchFactor["default"].exportCode()
    });
    this.share.thread.on('alert', function (mess) {
      alert(mess);
    });
    this.share.thread.on('searchEnd', function (id, response) {
      this.share.instances[id] && this.share.instances[id].onResult(response);
    }.bind(this));
    setTimeout(function () {
      this.share.benchmark = this.share.benchmark || _BrowserDetector["default"].calcBenchmark();
    }.bind(this));
  }
};

/***
 *
 * @param {DTBody}  body
 * @constructor
 */
function BaseMode(body) {
  this.body = body;
  this.offset = 0;
  this.rowOffset = -1000;
  this.boundCache = null;
  this.viewedRows = null;
}
BaseMode.prototype.name = 'base';
NormalMode.prototype.revoke = function () {
  this.body = null;
};
BaseMode.prototype.resetViewParam = function () {
  this.offset = 0;
  this.rowOffset = -1000;
  this.boundCache = null;
  this.viewedRows = null;
};
BaseMode.prototype.getBoundOfRows = function () {
  if (this.boundCache) return this.boundCache;
  if (!this.body.table.wrapper.isDescendantOf(document.body)) return null;
  var bodyBound = this.body.elt.getBoundingClientRect();
  var elt = this.body.elt;
  var childNodes = elt.childNodes;
  this.boundCache = Array.prototype.map.call(childNodes, function (elt) {
    var eBound = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    eBound.y -= bodyBound.top;
    return eBound;
  });
  this.boundCache.body = _Rectangle["default"].fromClientRect(bodyBound);
  this.boundCache.header = _Rectangle["default"].fromClientRect(this.body.table.header.elt.getBoundingClientRect());
  return this.boundCache;
};
BaseMode.prototype.updateRowsIfNeed = function () {
  throw Error("Not implement!");
};
BaseMode.prototype.render = function () {
  var _this = this;
  this.updateRowsIfNeed();
  var bounds = this.getBoundOfRows();
  if (!bounds) {
    setTimeout(function () {
      if (_this.body.elt.isDescendantOf(document.body)) {
        _this.render();
      }
    }, 5);
    return;
  }
  var dy = 0,
    rowIdx;
  if (bounds.length > 0) {
    rowIdx = Math.floor(this.offset - this.rowOffset);
    //todo: fix bounds[rowIdx] undefined
    if (!bounds[rowIdx]) return;
    dy = bounds[rowIdx].y + (this.offset - this.rowOffset - rowIdx) * bounds[rowIdx].height;
  }
  var availableHeight;
  if (bounds.length > 0) {
    availableHeight = this.body.table.wrapper.$viewport.getBoundingClientRect().height - bounds.header.height;
    if (bounds[bounds.length - 1].y + bounds[bounds.length - 1].height - dy < availableHeight - 1) {
      dy = -availableHeight + bounds[bounds.length - 1].y + bounds[bounds.length - 1].height + 1; //1: last border
    }
  }

  dy = Math.max(0, dy);

  //small padding top
  var hs = this.body.table.wrapper.$vscrollbar.innerOffset / (this.body.table.wrapper.$vscrollbar.innerHeight - this.body.table.wrapper.$vscrollbar.outerHeight || 1);
  dy += hs * 100;
  this.body.table.wrapper.$space.addStyle('top', -dy + 'px');
  this.body.table.wrapper.$fixedXCtn.addStyle('top', -dy + 'px');
};

/***
 * @extends BaseMode
 * @param {DTBody} body
 * @constructor
 */
function SearchingMode(body) {
  BaseMode.call(this, body);
  this.status = 'STANDBY';
  this.waitingToken = 'none';
  this.waitingCtrl = body.table.wrapper.waitingCtl;
  this.taskHash = 0;
  this.renderingHash = -1;
  this.resultItems = [];
  this.viewedRows = [];
}
_OOP["default"].mixClass(SearchingMode, BaseMode);
SearchingMode.prototype.name = 'search';
SearchingMode.prototype.revoke = function () {
  this.resultItems = [];
  this.viewedRows = [];
};
SearchingMode.prototype.start = function () {
  this.status = "RUNNING";
  this.searchingCache = {};
  this.body.table.wrapper.addClass('as-searching');
  this.renderingHash = -1;
};
SearchingMode.prototype.end = function () {
  this.body.table.wrapper.removeClass('as-searching');
  this.searchingItems = null;
  this.status = "STOP";
  this.waitingCtrl.end(this.waitingToken);
  if (this.body.master) this.body.master.sendTask(null);
};
SearchingMode.prototype.updateRowsIfNeed = function () {
  var _this2 = this;
  var screenSize = (0, _Dom.getScreenSize)();
  var rowPerPage = Math.ceil(Math.ceil(screenSize.height / 40) / 25) * 25;
  if (this.body.table.wrapper.hasClass('as-adapt-infinity-grow')) rowPerPage = 1e7;
  var newRowOffset = Math.floor(this.offset / rowPerPage) * rowPerPage;
  if (this.resultItems.length - newRowOffset < rowPerPage) {
    newRowOffset = Math.max(0, newRowOffset - rowPerPage);
  }
  if (newRowOffset === this.rowOffset) return;
  this.rowOffset = newRowOffset;
  var start = this.rowOffset;
  var end = Math.min(start + rowPerPage * 2, this.resultItems.length);
  var elt = this.body.elt;
  var fixedXElt = this.body.fixedXElt;
  var rows = this.body.rows;
  var nRows = [];
  for (var i = start; i < end; ++i) {
    nRows.push(rows[this.resultItems[i]]);
  }
  var nChildren = nRows.map(function (r) {
    return r.elt;
  });
  var nFixedXChildren = nRows.map(function (r) {
    return r.fixedXElt;
  });
  (0, _utils.replaceChildrenInElt)(elt, nChildren);
  (0, _utils.replaceChildrenInElt)(fixedXElt, nFixedXChildren);
  this.boundCache = null;
  var bounds = this.getBoundOfRows();
  if (bounds) {
    for (var i = 0; i < nRows.length; ++i) {
      nRows[i].updateCopyEltSize();
    }
    this.body.table.wrapper.layoutCtrl.onResize();
    this.body.table.updateCopyEltSize();
  }
  var updateFx = function updateFx() {
    if (counter > 20) return;
    if (_this2.body.elt.isDescendantOf(document.body)) {
      var bounds = _this2.getBoundOfRows();
      if (bounds) {
        for (var i = 0; i < nRows.length; ++i) {
          nRows[i].updateCopyEltSize();
        }
        _this2.body.table.wrapper.layoutCtrl.onResize();
        _this2.body.table.updateCopyEltSize();
      }
      counter += 3;
      setTimeout(updateFx, counter++ * 5);
    } else {
      setTimeout(updateFx, counter++ * 5);
    }
  };
  var counter = 1;
  if (!bounds) {
    setTimeout(updateFx, 1);
  }
};
SearchingMode.prototype.onRowSplice = function (idx) {
  this.rowOffset = -1000;
  this.render();
};
SearchingMode.prototype.onRowRemoved = function (idx, n) {
  n = n || 1;
  this.resultItems = this.resultItems.reduce(function (ac, cr) {
    if (cr >= idx + n) {
      ac.push(cr - n);
    } else if (cr < idx) {
      ac.push(cr);
    }
    return ac;
  }, []);
};
SearchingMode.prototype.onRowAdded = function (idx, n) {
  n = n || 1;
  this.resultItems = this.resultItems.reduce(function (ac, cr) {
    if (cr >= idx) {
      ac.push(cr + n);
    } else {
      ac.push(cr);
    }
    return ac;
  }, []);
};
SearchingMode.prototype.viewIntoRow = function (row) {
  console.log(row);
};
SearchingMode.prototype.query = function (query) {
  this.waitingCtrl.end(this.waitingToken);
  this.waitingToken = this.waitingCtrl.begin();
  if (!this.body.master) {
    this.body.master = new SearchingMaster(this.body);
    this.body.master.transferFrom(0);
  }
  var taskHolder = this.body.master.sendTask(query);
  this.taskHash = taskHolder.hash;
};
SearchingMode.prototype.onResult = function (response) {
  var _this3 = this;
  if (this.status !== 'RUNNING' || response.hash !== this.taskHash) return;
  this.waitingCtrl.end(this.waitingToken);
  if (this.renderingHash !== response.hash) {
    this.renderingHash = response.hash;
    this.offset = 0;
    this.rowOffset = -1000;
  }
  this.resultItems = response.result;
  this.viewedRows = this.resultItems.map(function (rIdx) {
    return _this3.body.rows[rIdx];
  });
  this.render();
};
SearchingMode.prototype.share = {
  thread: null
};

/***
 * @extends BaseMode
 * @param {DTBody} body
 * @constructor
 */
function NormalMode(body) {
  BaseMode.call(this, body);
}
_OOP["default"].mixClass(NormalMode, BaseMode);
NormalMode.prototype.name = 'normal';
NormalMode.prototype.start = function () {
  this.resetViewParam();
  this.viewedRows = this.body.rows;
  this.render();
};
NormalMode.prototype.end = function () {};
NormalMode.prototype.updateRowsIfNeed = function () {
  var _this4 = this;
  var screenSize = (0, _Dom.getScreenSize)();
  var rowPerPage = Math.ceil(Math.ceil(screenSize.height / 40 + 1) / 100) * 100;
  if (this.body.table.wrapper.hasClass('as-adapt-infinity-grow')) rowPerPage = 1e7;
  var newRowOffset = Math.floor(this.offset / rowPerPage) * rowPerPage;
  var data = this.body.data;
  if (data.rows.length - newRowOffset < rowPerPage) {
    newRowOffset = Math.max(0, newRowOffset - rowPerPage);
  }
  if (newRowOffset === this.rowOffset) return;
  this.rowOffset = newRowOffset;
  var start = this.rowOffset;
  var elt = this.body.elt;
  var fixedXElt = this.body.fixedXElt;
  var end = Math.min(start + rowPerPage * 2, data.rows.length);
  var rows = this.body.rows;
  elt.clearChild();
  fixedXElt.clearChild();
  for (var i = start; i < end; ++i) {
    elt.addChild(rows[i].elt);
    fixedXElt.addChild(rows[i].fixedXElt);
  }
  this.boundCache = null;
  var bounds = this.getBoundOfRows();
  if (bounds) {
    for (var i = start; i < end; ++i) {
      rows[i].updateCopyEltSize();
    }
    this.body.table.wrapper.layoutCtrl.onResize();
    this.body.table.updateCopyEltSize();
  }
  var counter = 1;
  var fx = function fx() {
    if (counter > 20) return;
    if (_this4.body.elt.isDescendantOf(document.body)) {
      var bounds = _this4.getBoundOfRows();
      if (bounds) {
        for (var i = start; i < end; ++i) {
          rows[i].updateCopyEltSize();
        }
        _this4.body.table.wrapper.layoutCtrl.onResize();
        _this4.body.table.updateCopyEltSize();
      }
      counter += 3;
      setTimeout(fx, counter * 5);
    } else {
      setTimeout(fx, counter++ * 5);
    }
  };
  if (!bounds) {
    setTimeout(fx, 1);
  }
  this.body.table.wrapper.rowDragCtrl.ev_rowRenderChange();
  _ResizeSystem["default"].requestUpdateUpSignal(this.body.elt);
};
NormalMode.prototype.onRowSplice = function (idx) {
  this.rowOffset = -1;
  this.render();
};
NormalMode.prototype.viewIntoRow = function (o) {
  var idx = this.viewedRows.findIndex(function (row) {
    if (o === row._elt) return true;
    if (o === row) return true;
    if (o === row.data) return true;
    if (o === row.id || row.data.id === o) return true;
    return false;
  });
  if (idx <= 0) return;
  var scrollbar = this.body.table.wrapper.$vscrollbar;
  scrollbar.innerOffset = Math.max(0, Math.min(idx - scrollbar.outerHeight / 3, scrollbar.innerHeight - scrollbar.outerHeight));
  scrollbar.emit('scroll');
};

/***
 *
 * @param {DTTable} table
 * @param data
 * @constructor
 */
function DTBody(table, data) {
  var _this5 = this;
  this.table = table;
  this.data = data;
  this._elt = null;
  this._fixedXElt = null;

  /**
   * @type {DTBodyRow[]}
   */
  this.rows = this.data.rows.map(function (rowData, i) {
    var row = new _DTBodyRow["default"](_this5, rowData);
    row.idx = i;
    return row;
  });
  this.modes = {
    normal: new NormalMode(this),
    searching: new SearchingMode(this)
  };
  //
  //
  this.curentMode = this.modes.normal;
  this.curentMode.start();
  this.curentMode.render();
  this.master = null;
  //
  // this.master = new SearchingMaster(this);
  // this.master.transferFrom(0);
  /***
   * @name offset
   * @type {number}
   * @memberOf DTBody#
   */
}

DTBody.prototype.revokeResource = function () {
  if (this.master) {
    this.master.destroy();
    this.master = null;
  }
  while (this.rows.length) {
    this.rows.pop().revoke();
  }
  this.modes.normal.revoke();
  this.modes.searching.revoke();
  this.rows = [];
  this.data = null;
};
DTBody.prototype.requireRows = function (start, end) {
  if (typeof start !== "number") start = 0;
  if (typeof end !== "number") end = Infinity;
  end = Math.min(end, this.data.rows.length);
  return this.rows.slice(start, end);
};
DTBody.prototype.reindexRows = function (start, end) {
  if (typeof start !== "number") start = 0;
  if (typeof end !== "number") end = Infinity;
  end = Math.min(end, this.data.rows.length);
  for (var i = start; i < end; ++i) {
    if (this.rows[i]) this.rows[i].idx = i;
  }
};
DTBody.prototype.onRowSplice = function (idx) {
  this.curentMode.onRowSplice(idx);
  if (this.master) this.master.transferFrom(idx);
  _ResizeSystem["default"].requestUpdateSignal();
};
DTBody.prototype.rowIndexOf = function (o) {
  var n = this.rows.length;
  for (var i = 0; i < n; ++i) {
    if (o === this.rows[i]._elt) return i;
    if (o === this.rows[i]) return i;
    if (o === this.data.rows[i]) return i;
    if (o === this.data.rows[i].id) return i;
  }
  return -1;
};
DTBody.prototype.addRowBefore = function (rowData, bf) {
  var idx;
  if (bf === null || bf === undefined) {
    return this.addRow(rowData);
  } else {
    idx = this.rowIndexOf(bf);
    if (idx < 0) throw new Error("$bf not is a row in table");
    return this.addRow(rowData, idx);
  }
};
DTBody.prototype.addRowAfter = function (rowData, at) {
  var idx;
  if (at === null || at === undefined) {
    return this.addRow(rowData, 0);
  } else {
    idx = this.rowIndexOf(at);
    if (idx < 0) throw new Error("$bf not is a row in table");
    return this.addRow(rowData, idx + 1);
  }
};
DTBody.prototype.addRow = function (rowData, idx) {
  if (!(0, _utils.isNaturalNumber)(idx) || idx >= this.rows.length) {
    idx = this.rows.length;
  }
  var row;
  if (idx >= this.rows.length) {
    idx = this.rows.length;
    this.data.rows.push(rowData);
    row = new _DTBodyRow["default"](this, rowData);
    row.idx = idx;
    this.rows.push(row);
    if (this.curentMode.onRowAdded) this.curentMode.onRowAdded(idx, 1);
    this.onRowSplice(this.rows.length - 1);
  } else {
    row = new _DTBodyRow["default"](this, rowData);
    row.idx = idx;
    this.rows.splice(idx, 0, row);
    this.data.rows.splice(idx, 0, rowData);
    this.reindexRows(idx + 1);
    this.onRowSplice(idx);
  }
  return row;
};
DTBody.prototype.addRows = function (rowsData, idx) {
  if (!(0, _utils.isNaturalNumber)(idx) || idx >= this.rows.length) {
    idx = this.rows.length;
  }
  var res = [];
  var row, i, rowData;
  if (idx >= this.rows.length) {
    idx = this.rows.length;
    for (i = 0; i < rowsData.length; ++i) {
      rowData = rowsData[i];
      row = new _DTBodyRow["default"](this, rowData);
      row.idx = i + idx;
      this.data.rows.push(rowData);
      res.push(row);
      this.rows.push(row);
    }
  } else {
    for (i = 0; i < rowsData.length; ++i) {
      rowData = rowsData[i];
      row = new _DTBodyRow["default"](this, rowData);
      row.idx = i + idx;
      res.push(row);
      this.data.rows.splice(idx + i, 0, rowData);
      this.rows.splice(idx + i, 0, row);
    }
    this.reindexRows(idx + rowsData.length);
  }
  if (this.curentMode.onRowAdded) this.curentMode.onRowAdded(idx, rowsData.length);
  this.onRowSplice(idx);
  return res;
};
DTBody.prototype.removeRow = function (row) {
  var idx = this.rowIndexOf(row);
  if (idx < 0) return;
  this.rows.splice(idx, 1);
  this.data.rows.splice(idx, 1);
  this.reindexRows(idx);
  if (this.curentMode.onRowRemoved) this.curentMode.onRowRemoved(idx);
  this.onRowSplice(idx);
};
DTBody.prototype.moveRowAt = function (idx, newIdx) {
  var row = this.rows.splice(idx, 1)[0];
  var rowData = this.data.rows.splice(idx, 1)[0];
  this.rows.splice(newIdx, 0, row);
  this.data.rows.splice(newIdx, 0, rowData);
  this.reindexRows(Math.min(idx, newIdx));
  this.onRowSplice(Math.min(idx, newIdx));
};
DTBody.prototype.clearRows = function () {
  var n = this.rows.length;
  this.rows.splice(0);
  this.data.rows.splice(0);
  if (this.curentMode.onRowRemoved) this.curentMode.onRowRemoved(0, n);
  this.onRowSplice(0);
};
DTBody.prototype.rowAt = function (idx) {
  if (this.rows[idx]) return this.rows[idx];
  var rowData = this.data.rows[idx];
  if (rowData) {
    this.rows[idx] = new _DTBodyRow["default"](this, rowData);
    this.rows[idx].idx = idx;
  } else return null;
};
DTBody.prototype.rowOf = function (o) {
  var idx = this.rowIndexOf(o);
  return this.rowAt(idx);
};
DTBody.prototype.viewIntoRow = function (row) {
  return this.curentMode.viewIntoRow(row);
};
DTBody.prototype.startSearchingIfNeed = function () {
  if (this.curentMode !== this.modes.searching) {
    this.curentMode.end();
    this.curentMode = this.modes.searching;
    this.curentMode.start();
  }
};
DTBody.prototype.stopSearchIfNeed = function () {
  if (this.curentMode === this.modes.searching) {
    this.curentMode.end();
    this.curentMode = this.modes.normal;
    this.curentMode.start();
  }
};
DTBody.prototype.query = function (query) {
  var now = new Date().getTime();
  if (query) {
    this.startSearchingIfNeed();
  } else if (!query) {
    this.stopSearchIfNeed();
    this.curentMode.render();
  }
  if (this.curentMode.query && query) {
    this.curentMode.query(query);
  }
};
DTBody.prototype.updateCopyEltSize = function () {
  this.rows.forEach(function (row) {
    return row.updateCopyEltSize();
  });
};
Object.defineProperties(DTBody.prototype, {
  offset: {
    set: function set(value) {
      this._offset = value;
      this.curentMode.offset = value;
      this.curentMode.render();
    },
    get: function get() {
      return this._offset;
    }
  },
  searching: {
    get: function get() {
      return this.elt.hasClass('as-searching');
    }
  }
});
Object.defineProperty(DTBody.prototype, 'elt', {
  get: function get() {
    var _this6 = this;
    if (this._elt) return this._elt;
    this._elt = (0, _ACore._)({
      tag: 'tbody',
      "class": 'as-dt-body'
    });
    if (this.data.on) {
      Object.keys(this.data.on).forEach(function (key) {
        var cb = _this6.data.on[key];
        if (typeof cb !== "function") return;
        _this6._elt.on(key, function (event) {
          cb.call(_this6._elt, event, _this6);
        });
      });
    }
    return this._elt;
  }
});
Object.defineProperty(DTBody.prototype, 'fixedXElt', {
  get: function get() {
    if (this._fixedXElt) return this._fixedXElt;
    this._fixedXElt = (0, _ACore._)({
      elt: this.elt.cloneNode(false),
      "class": 'as-fixed-x'
    });
    return this._fixedXElt;
  }
});
Object.defineProperty(DTBody.prototype, 'adapter', {
  get: function get() {
    return this.table.adapter;
  }
});
var _default = DTBody;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _utils = __webpack_require__(84512);
var _datetime = __webpack_require__(58286);
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
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); }
/***
 *
 * @param {DTBodyRow} row
 * @param data
 * @constructor
 */
function DTBodyCell(row, data) {
  this.row = row;
  this._elt = null;
  this._copyElt = null;
  this._idx = null;
  if (data.attr) {
    Object.keys(data.attr).forEach(function (key) {
      var key2 = key.toLowerCase();
      if (key2 !== key) data.attr[key2] = data.attr[key];
    });
  }
  this.data = data;
}
DTBodyCell.prototype.revoke = function () {
  this.row = null;
  if (this._elt) this._elt.holder = null;
  this._elt = null;
  this._copyElt = null;
  this._idx = null;
  this.data = null;
};
Object.defineProperty(DTBodyCell.prototype, 'elt', {
  get: function get() {
    var _this = this;
    if (this._elt) return this._elt;
    this._elt = (0, _ACore._)({
      tag: 'td',
      "class": 'as-dt-body-cell'
    });
    this._elt.holder = this;
    var addChild = this._elt.addChild;
    this._elt.addChild = function () {
      addChild.apply(this, arguments);
      _ResizeSystem["default"].requestUpdateUpSignal(this);
      return this;
    };
    if (this.data.attr) this._elt.attr(this.data.attr);
    if (typeof this.data["class"] === "string") (0, _utils.addElementClassName)(this._elt, this.data["class"]);
    if (this.data.style) this._elt.addStyle(this.data.style);
    if (this.data.on) {
      Object.keys(this.data.on).forEach(function (key) {
        var cb = _this.data.on[key];
        if (typeof cb !== "function") return;
        _this._elt.on(key, function (event) {
          cb.call(_this._elt, event, _this);
        });
      });
    }
    if (this._idx !== null) this._elt.attr('data-col-idx', this._idx + '');
    this.row.body.table.adapter.renderBodyCell(this.elt, this.data, this);
    (0, _utils.listenDomContentChange)(this._elt, function (event) {
      _this.requestUpdateContent();
    });
    return this._elt;
  }
});
Object.defineProperty(DTBodyCell.prototype, 'copyElt', {
  get: function get() {
    if (this._copyElt) return this._copyElt;
    this._copyElt = (0, _ACore.$)(this.elt.cloneNode(true)).addClass('as-copy-elt');
    return this._copyElt;
  }
});
DTBodyCell.prototype.requestUpdateContent = function () {
  if (this._copyElt) {
    this._copyElt.clearChild();
    this._copyElt.addChild(Array.prototype.map.call(this._elt.childNodes, function (c) {
      return c.cloneNode(true);
    }));
  }
  _ResizeSystem["default"].updateUp(this._elt, true);
  _ResizeSystem["default"].requestUpdateUpSignal(this._elt, true);
};
Object.defineProperty(DTBodyCell.prototype, 'innerText', {
  get: function get() {
    var text = this.data.innerText;
    if (text === undefined || text === null) text = '';else if (!text) {
      text = text + '';
    } else if (text.substring) {} else if (typeof text === "number") {
      text = text + '';
    } else if (_typeof(text) === "object") {
      if (text instanceof Date) {
        return (0, _datetime.formatDateTime)(text, 'dd/MM/yyyy HH:mm');
      } else {
        return (0, _utils.jsStringOf)(text);
      }
    } else if (typeof text === "function") {
      text = text.call(this.data, this);
    }
    return text;
    if (this.data.innerText) return this.data.innerText;
    if (this.data.getInnerText) return this.data.getInnerText();
    // if ('innerText' in this.data)
    return this.data.innerText || '';
    var res = [];
    function visit(node) {
      if (node.nodeType === 3 && node.data) {
        res.push(node.data);
      } else if (node.childNodes && node.childNodes.length > 0) {
        Array.prototype.forEach.call(node.childNodes, visit);
      }
    }
    visit(this.elt);
    return res.join(' ');
  }
});
Object.defineProperty(DTBodyCell.prototype, 'idx', {
  set: function set(value) {
    this._idx = value;
    if (this._elt) this._elt.attr('data-col-idx', value + '');
  },
  get: function get() {
    return this._idx;
  }
});
Object.defineProperty(DTBodyCell.prototype, 'colspan', {
  get: function get() {
    var value = this.data.attr && this.data.attr.colspan;
    if (typeof value === "string") value = parseInt(value);
    if (typeof value === "number") return value;else return 1;
  }
});
var _default = DTBodyCell;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _DTBodyCell = _interopRequireDefault(__webpack_require__(47817));
var _stringGenerate = __webpack_require__(10713);
var _utils = __webpack_require__(84512);
var _stringFormat = __webpack_require__(22294);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {DTBody} body
 * @param data
 * @constructor
 */
function DTBodyRow(body, data) {
  var _this = this;
  this.body = body;
  this.data = data;
  this.data.cells = this.data.cells || [];
  this._elt = null;
  this._fixedXElt = null;
  this.filterKeys = Object.assign({}, this.data.keys);
  this.data.cells.reduce(function (ac, cr, i) {
    if (typeof cr.keySort === "string") {
      ac['[' + i + ']'] = (0, _stringFormat.nonAccentVietnamese)(cr.keySort).toLowerCase();
    } else if (typeof cr.keySort === "number") {
      ac['[' + i + ']'] = cr.keySort;
    } else if (typeof cr.innerText === "string") {
      ac['[' + i + ']'] = (0, _stringFormat.nonAccentVietnamese)(cr.innerText).toLowerCase();
    }
    return ac;
  }, this.filterKeys);
  if ('id' in data) {
    this.id = data.id;
  } else {
    this.id = (0, _stringGenerate.randomIdent)(8);
  }
  this._idx = null;
  /***
   * @type {DTBodyCell[]}
   */
  this.cells = this.data.cells.map(function (cellData) {
    return new _DTBodyCell["default"](_this, cellData);
  });
  this.cells.reduce(function (ac, cell) {
    cell.idx = ac;
    return ac + cell.colspan;
  }, 0);
}
DTBodyRow.prototype.revoke = function () {
  while (this.cells.length) {
    this.cells.pop().revoke();
  }
  this.cells = null;
  this.data = null;
  this.body = null;
  if (this._elt) this._elt.dtBodyRow = null;
  this._elt = null;
  this.$id = null;
  this.draggable = null;
};
DTBodyRow.prototype.revokeResource = function () {};
DTBodyRow.prototype.remove = function () {
  this.body.removeRow(this);
};
DTBodyRow.prototype.viewInto = function () {
  return this.body.viewIntoRow(this);
};
DTBodyRow.prototype.updateCopyEltSize = function () {
  if (!this._fixedXElt) return;
  if (!this._elt.parentElement) return;
  if (this._fixedXElt.childNodes.length === 0) return; //has no fixed column
  var bound = this._elt.getBoundingClientRect();
  this._fixedXElt.addStyle('height', bound.height + 'px');
};
DTBodyRow.prototype.updateData = function (data) {
  var _this2 = this;
  var rowIdx = this.body.rowIndexOf(this.data);
  this.body.data.rows[rowIdx] = data;
  this.data = data;
  if ('id' in data) {
    this.id = data.id;
  } else {
    this.id = (0, _stringGenerate.randomIdent)(8);
  }
  this.cells = this.data.cells.map(function (cellData) {
    return new _DTBodyCell["default"](_this2, cellData);
  });
  this.cells.reduce(function (ac, cell) {
    cell.idx = ac;
    return ac + cell.colspan;
  }, 0);
  if (this._elt) {
    this._elt.attr('data-id', this.id + '');
    this._elt.clearChild().addChild(this.cells.map(function (cell) {
      return cell.elt;
    }));
    this.$idx = (0, _ACore.$)('.as-dt-row-index', this._elt);
    this.draggable = !!(0, _ACore.$)('.as-drag-zone', this._elt);
    if (this.$idx) this.$idx.attr('data-idx', this._idx + 1 + '');
  }
  this.body.onRowSplice(rowIdx);
};
Object.defineProperty(DTBodyRow.prototype, 'elt', {
  get: function get() {
    var _this3 = this;
    if (this._elt) return this._elt;
    var fixedCol = this.adapter.fixedCol || 0;
    var child = this.cells.filter(function (c) {
      return c.idx < fixedCol;
    }).map(function (c) {
      return c.copyElt;
    });
    var child1 = this.cells.filter(function (c) {
      return c.idx >= fixedCol;
    }).map(function (c) {
      return c.elt;
    });
    this._elt = (0, _ACore._)({
      tag: 'tr',
      "class": 'as-dt-body-row',
      props: {
        dtBodyRow: this
      },
      child: child.concat(child1)
    });
    this._elt.attr('data-id', this.id + '');
    if (this.data["class"]) {
      (0, _utils.addElementClassName)(this._elt, this.data["class"]);
    }
    if (this.data.attr) {
      this._elt.attr(this.data.attr);
    }
    if (this.data.style) {
      this._elt.addStyle(this.data.style);
    }
    if (this.data.on) {
      Object.keys(this.data.on).forEach(function (key) {
        var cb = _this3.data.on[key];
        if (typeof cb !== "function") return;
        _this3._elt.on(key, function (event) {
          cb.call(_this3._elt, event, _this3);
        });
      });
    }
    this.$idx = this.cells.reduce(function (ac, c) {
      return ac || (0, _ACore.$)('.as-dt-row-index', c.elt);
    }, null);
    this.draggable = !!(0, _ACore.$)('.as-drag-zone', this._elt);
    if (this.$idx) this.$idx.attr('data-idx', this._idx + 1 + '');
    var originAddStyle = this._elt.addStyle;
    var originRemoveStyle = this._elt.removeStyle;
    var originAddClass = this._elt.addClass;
    var originRemoveClass = this._elt.removeClass;
    var isOverrideStyle = function isOverrideStyle(x) {
      return ['background-color', 'backgroundColor', 'color'].includes(x);
    };
    var thisCTL = this;
    this._elt.addStyle = function (key, value) {
      originAddStyle.apply(this, arguments);
      if (thisCTL._fixedXElt && isOverrideStyle(key)) {
        thisCTL._fixedXElt.addStyle(key, value);
      }
      return this;
    };
    this._elt.removeStyle = function (key) {
      originRemoveStyle.apply(this, arguments);
      if (thisCTL._fixedXElt && isOverrideStyle(key)) {
        thisCTL._fixedXElt.removeStyle(key);
      }
      return this;
    };
    this._elt.addClass = function () {
      originAddClass.apply(this, arguments);
      if (thisCTL._fixedXElt) {
        thisCTL._fixedXElt.addClass.apply(thisCTL._fixedXElt, arguments);
      }
      return this;
    };
    this._elt.removeClass = function () {
      originRemoveClass.apply(this, arguments);
      if (thisCTL._fixedXElt) {
        thisCTL._fixedXElt.removeClass.apply(thisCTL._fixedXElt, arguments);
      }
      return this;
    };
    return this._elt;
  }
});
Object.defineProperty(DTBodyRow.prototype, 'fixedXElt', {
  get: function get() {
    if (this._fixedXElt) return this._fixedXElt;
    var fixedCol = this.adapter.fixedCol || 0;
    this._fixedXElt = (0, _ACore._)({
      elt: this.elt.cloneNode(false),
      "class": 'as-dt-fixed-x',
      child: this.cells.slice(0, fixedCol).map(function (cell) {
        return cell.elt;
      })
    });
    return this._fixedXElt;
  }
});
Object.defineProperty(DTBodyRow.prototype, 'innerText', {
  get: function get() {
    if (this.data.innerText) return this.data.innerText;
    if (this.data.getInnerText) return this.data.getInnerText();
    if ('innerText' in this.data) return this.data.innerText || '';
    return this.cells.map(function (cell) {
      return cell.innerText.trim();
    }).filter(function (text) {
      return !!text;
    }).join(' / ');
  }
});
Object.defineProperty(DTBodyRow.prototype, 'idx', {
  set: function set(value) {
    if (this.$idx) this.$idx.attr('data-idx', value + 1 + '');
    this._idx = value;
  },
  get: function get() {
    return this._idx;
  }
});
Object.defineProperty(DTBodyRow.prototype, 'adapter', {
  get: function get() {
    return this.body.adapter;
  }
});
var _default = DTBodyRow;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _DTTable = _interopRequireDefault(__webpack_require__(98933));
var _ACore = __webpack_require__(34093);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @typedef DTDataRow
 * @property
 */

/***
 * @typedef DTDataBody
 * @property {DTDataRow[]} row
 */

/***
 * @typedef DTDataHead
 * @property {DTDataHRow[]} row
 */

/***
 * @typedef DTDataTable
 * @property head
 * @property body
 * @property {number} rowsPerPage
 * @property {number} fixedCol
 */

/***
 *
 * @param {DynamicTable} tableElt
 * @param {DTDataAdapter} opt
 * @constructor
 */
function DTDataAdapter(tableElt, opt) {
  this.tableElt = tableElt;
  /***
   *
   * @type {null|DTDataTable}
   */
  this.data = null;
  this.rowsPerPage = 20;
  this.fixedCol = 0;
  Object.assign(this, opt);
  if (this.fixedCol === 0) {
    this.tableElt.removeClass('as-has-fixed-col');
  } else {
    this.tableElt.addClass('as-has-fixed-col');
  }
}
DTDataAdapter.prototype.revoke = function () {
  this.tableElt = null;
  this.data = null;
};
DTDataAdapter.prototype.render = function () {
  if (this.tableElt.table) this.tableElt.table.revokeResource();
  this.tableElt.table = new _DTTable["default"](this.tableElt, this.data);
};
DTDataAdapter.prototype.renderHeadCell = function (elt, data, controller) {
  if (data.child) {
    if (data.child.map) {
      elt.addChild(data.child.map(function (it) {
        return (0, _ACore._)(it);
      }));
    } else {
      elt.addChild((0, _ACore._)(data.child));
    }
  }
  if (data.render) {
    data.render.call(null, elt, data, controller);
  }
};
DTDataAdapter.prototype.renderBodyCell = function (elt, data, controller) {
  if (data.child) {
    if (data.child.map) {
      elt.addChild(data.child.map(function (it) {
        return (0, _ACore._)(it);
      }));
    } else {
      elt.addChild((0, _ACore._)(data.child));
    }
  }
  if (data.render) {
    data.render.call(null, elt, data, controller);
  }
  if (data.style) {
    elt.addStyle(data.style);
  }
};
var _default = DTDataAdapter;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _DTHeadRow = _interopRequireDefault(__webpack_require__(67471));
var _ACore = __webpack_require__(34093);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {DTTable} table
 * @param {} data
 * @constructor
 */
function DTHead(table, data) {
  var _this = this;
  if (!data) data = {};
  if (!data.rows) data.rows = [];
  this.table = table;
  this._elt = null;
  this._copyElt = null;
  this._fixedXYElt = null;
  this._fixedXElt = null;
  this.data = data;
  this.rows = this.data.rows.map(function (rowData) {
    return new _DTHeadRow["default"](_this, rowData);
  });
  this.makeCellIdx();
}
DTHead.prototype.makeCellIdx = function () {
  var height = Array(200).fill(0);
  var i, j, k, row, cells, colIdx, cell, colspan, rowspan;
  for (i = 0; i < this.rows.length; ++i) {
    row = this.rows[i];
    cells = row.cells;
    colIdx = 0;
    for (j = 0; j < cells.length; ++j) {
      while (height[colIdx] > i) {
        ++colIdx;
      }
      cell = cells[j];
      cell.idx = colIdx;
      colspan = cell.colspan;
      rowspan = cell.rowspan;
      if (rowspan === this.rows.length) {
        cell.elt.addClass('as-matched-head-height');
      }
      for (k = 0; k < colspan; ++k) {
        height[colIdx] = i + rowspan;
        ++colIdx;
      }
    }
  }
};
DTHead.prototype.lockWidth = function () {
  this.rows.forEach(function (r) {
    return r.lockWidth();
  });
};
DTHead.prototype.updateCopyEltSize = function () {
  if (!this._copyElt) return;
  this.rows.forEach(function (r) {
    return r.updateCopyEltSize();
  });
};
Object.defineProperty(DTHead.prototype, 'elt', {
  get: function get() {
    if (this._elt) return this._elt;
    this._elt = (0, _ACore._)({
      tag: 'thead',
      "class": 'as-dt-header',
      child: this.rows.map(function (r) {
        return r.elt;
      })
    });
    if (this.data.style) this._elt.addStyle(this.data.style);
    return this._elt;
  }
});
Object.defineProperty(DTHead.prototype, 'copyElt', {
  get: function get() {
    if (this._copyElt) return this._copyElt;
    this._copyElt = (0, _ACore._)({
      elt: this.elt.cloneNode(false),
      child: this.rows.map(function (r) {
        return r.copyElt;
      })
    });
    return this._copyElt;
  }
});
Object.defineProperty(DTHead.prototype, 'fixedXYElt', {
  get: function get() {
    if (this._fixedXYElt) return this._fixedXYElt;
    this._fixedXYElt = (0, _ACore._)({
      elt: this.elt.cloneNode(false),
      "class": 'as-dt-fixed-xy',
      child: this.rows.map(function (r) {
        return r.fixedXYElt;
      })
    });
    return this._fixedXYElt;
  }
});
Object.defineProperty(DTHead.prototype, 'fixedXElt', {
  get: function get() {
    if (this._fixedXElt) return this._fixedXElt;
    this._fixedXElt = (0, _ACore._)({
      elt: this.elt.cloneNode(false),
      "class": 'as-dt-fixed-x',
      child: this.rows.map(function (r) {
        return r.fixedXElt;
      })
    });
    return this._fixedXElt;
  }
});
Object.defineProperty(DTHead.prototype, 'adapter', {
  get: function get() {
    return this.table.wrapper.adapter;
  }
});
var _default = DTHead;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _Follower = _interopRequireDefault(__webpack_require__(48414));
var _utils = __webpack_require__(84512);
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var implicitSortKeyArr = function implicitSortKeyArr(key) {
  var res;
  if (typeof key === 'string') {
    res = key.split(/[\s,;]+/);
  } else if (key instanceof Array) {
    res = key.slice();
  } else res = [];
  res = res.filter(function (k) {
    return !!k;
  }).map(function (k) {
    return k + '';
  });
  return res;
};

/***
 *
 * @param {DTHeadRow} row
 * @param data
 * @constructor
 */
function DTHeadCell(row, data) {
  this.row = row;
  this._elt = null;
  this._copyElt = null;
  this._copyElt1 = null;
  this._copyElt2 = null;
  if (data.attr) {
    Object.keys(data.attr).forEach(function (key) {
      var key2 = key.toLowerCase();
      if (key2 !== key) data.attr[key2] = data.attr[key];
    });
  }
  this.data = data;
  this._idx = null;
}
DTHeadCell.prototype.makeAutoSortAttribute = function () {
  var rows = this.row.head.table.data && this.row.head.table.data.body && this.row.head.table.data.body.rows;
  if (!rows || !rows.length) return;
  if (this.elt.attr('data-sort-key')) return;
  var idx = this.idx;
  var canSort = rows.every(function (row) {
    return row.cells[idx] && typeof row.cells[idx].innerText === 'string';
  });
  if (canSort) {
    this.elt.attr('data-sort-key', '[' + idx + ']');
    this.data.sortKey = '[' + idx + ']';
    this._elt.attr('data-sort-order', 'none');
    // this._elt.attr('title', 'Sort');
  }
};

Object.defineProperty(DTHeadCell.prototype, 'idx', {
  set: function set(value) {
    this._idx = value;
    this.elt.attr('data-col-idx', value + '');
    this.makeAutoSortAttribute();
  },
  get: function get() {
    return this._idx;
  }
});
DTHeadCell.prototype.nextSortState = function (event) {
  var _this = this;
  if (!this.elt.attr('data-sort-key')) return;
  var c = this.elt.attr('data-sort-order') || 'none';
  var n = {
    none: 'ascending',
    ascending: 'descending',
    descending: 'none'
  }[c] || 'none';
  var sortKeyArr = implicitSortKeyArr(this.data.sortKey || c);
  var sortBtn = this.$sortBtn;
  var followerElt, menuElt, items;
  if (sortKeyArr.length === 1) {
    (0, _ACore.$$)('th', this.row.elt).forEach(function (elt) {
      if (elt === _this.elt) return;
      if (elt.attr('data-sort-key')) {
        elt.attr('data-sort-order', 'none');
      }
    });
    this.elt.attr('data-sort-order', n);
    this.row.head.table.wrapper.requestQuery();
  } else {
    items = [{
      text: 'Không sắp xếp',
      value: {
        key: sortKeyArr.join(';'),
        order: 'none'
      },
      icon: 'span.mdi.mdi-sort-variant-off'
    }];
    if (c === 'none') {
      items[0].extendStyle = {
        color: '#007bff'
      };
    }
    sortKeyArr.forEach(function (key) {
      items.push('-------');
      var text = _this.data.sortMenu && _this.data.sortMenu[key] && _this.data.sortMenu[key][0];
      text = text || "Tăng theo " + key;
      var item = {
        icon: 'span.mdi.mdi-sort-ascending',
        text: text,
        value: {
          key: key,
          order: 'ascending'
        }
      };
      if (key === _this.elt.attr('data-sort-key') && c === 'ascending') {
        item.extendStyle = {
          color: '#007bff'
        };
      }
      items.push(item);
      text = _this.data.sortMenu && _this.data.sortMenu[key] && _this.data.sortMenu[key][1];
      text = text || "Tăng theo " + key;
      item = {
        icon: 'span.mdi.mdi-sort-descending',
        text: text,
        value: {
          key: key,
          order: 'descending'
        }
      };
      if (key === _this.elt.attr('data-sort-key') && c === 'descending') {
        item.extendStyle = {
          color: '#007bff'
        };
      }
      items.push(item);
    });
    menuElt = (0, _ACore._)({
      tag: 'vmenu',
      props: {
        items: items
      },
      on: {
        press: function press(event) {
          var value = event.menuItem.value;
          (0, _ACore.$$)('th', _this.row.elt).forEach(function (elt) {
            if (elt === _this.elt) return;
            if (elt.attr('data-sort-key')) {
              elt.attr('data-sort-order', 'none');
            }
          });
          _this.elt.attr('data-sort-order', value.order);
          _this.elt.attr('data-sort-key', value.key);
          _this.row.head.table.wrapper.requestQuery();
          finish();
        }
      }
    });
    followerElt = (0, _ACore._)({
      tag: _Follower["default"],
      "class": 'absol-context-menu-anchor',
      style: {
        zIndex: (0, _utils.findMaxZIndex)(sortBtn) + 22
      },
      child: [menuElt],
      props: {
        followTarget: sortBtn
      }
    }).addTo(document.body);
    var finish = function finish() {
      document.removeEventListener('click', finish);
      followerElt.remove();
    };
    setTimeout(function () {
      followerElt.addStyle('visibility', 'visible').addStyle('opacity', 1);
    }, 5);
  }
};
DTHeadCell.prototype.updateCopyContent = function () {
  var _this2 = this;
  var makeCopyChildren = function makeCopyChildren() {
    return Array.prototype.map.call(_this2._elt.childNodes, function (elt) {
      return elt.cloneNode(true);
    });
  };
  if (this._copyElt1) {
    this._copyElt1.clearChild().addChild(makeCopyChildren());
  }
  if (this._copyElt2) {
    this._copyElt2.clearChild().addChild(makeCopyChildren());
  }
  if (this._copyElt) {
    this._copyElt.clearChild().addChild(makeCopyChildren());
  }
  _ResizeSystem["default"].updateUp(this._elt);
  _ResizeSystem["default"].requestUpdateUpSignal(this._elt);
};
DTHeadCell.prototype.requestUpdateContent = function () {
  if (this.ucTO > 0) return;
  // this.ucTO = setTimeout(() => {
  this.ucTO = -1;
  this.updateCopyContent();
  // }, 20)
};

DTHeadCell.prototype.updateCopyEltSize = function () {
  if (!this._copyElt && !this._copyElt1 && !this._copyElt2) return;
  // copyElt is in space
  var bound = this._copyElt.getBoundingClientRect();
  var matchHeight = this._elt.hasClass('as-matched-head-height');
  this._elt.addStyle('width', bound.width + 'px');
  if (matchHeight) this._elt.addStyle('min-width', bound.width + 'px');
  if (this._copyElt1) {
    this._copyElt1.addStyle('width', bound.width + 'px');
    if (matchHeight) this._copyElt1.addStyle('min-width', bound.width + 'px');
  }
  if (this._copyElt2) {
    this._copyElt2.addStyle('width', bound.width + 'px');
    if (matchHeight) this._copyElt2.addStyle('min-width', bound.width + 'px');
  }
};
Object.defineProperty(DTHeadCell.prototype, 'elt', {
  get: function get() {
    var _this3 = this;
    if (this._elt) return this._elt;
    var eventAdded = false;
    var onPointerDown = function onPointerDown(event) {
      if (event.target.hasClass && event.target.hasClass('as-dt-header-cell-resizer')) return;
      if (!eventAdded) {
        document.addEventListener('pointerup', onPointerUp);
        eventAdded = true;
      }
    };
    var onPointerUp = function onPointerUp() {
      document.removeEventListener('pointerup', onPointerUp);
      eventAdded = false;
      _this3.nextSortState();
    };
    this._elt = (0, _ACore._)({
      tag: 'th',
      "class": 'as-dt-header-cell'
    }).on('pointerdown', onPointerDown);
    if (this.data.attr) {
      this._elt.attr(this.data.attr);
    }
    if (this.data.style) {
      this._elt.addStyle(this.data.style);
    }
    if (this.data.id !== null && this.data.id !== undefined) {
      this._elt.attr('data-col-id', this.data.id + '');
    }
    this.row.head.table.adapter.renderHeadCell(this._elt, this.data, this);
    var sortKeyArr = implicitSortKeyArr(this.data.sortKey);
    if (sortKeyArr.length > 0) {
      this._elt.attr('data-sort-key', sortKeyArr.join(';'));
      this._elt.attr('data-sort-order', 'none');
      // this._elt.attr('title', 'Sort');
    }

    this.$sortBtn = (0, _ACore._)({
      tag: 'span',
      "class": 'as-dt-sort-btn',
      child: [{
        tag: 'span',
        "class": ['mdi', 'mdi-menu-up']
        // child: { text: '🡑' }
      }, {
        tag: 'span',
        "class": ['mdi', 'mdi-menu-down']
      }]
    });
    this.$resizer = (0, _ACore._)({
      "class": 'as-dt-header-cell-resizer'
    });
    this._elt.addChild(this.$sortBtn);
    this._elt.addChild(this.$resizer);
    var ctrl = this;
    // setTimeout(() => {
    //     var addChild = this._elt.addChild;
    //     var clearChild = this._elt.clearChild;
    //     this._elt.addChild = function () {
    //         ctrl.requestUpdateContent();
    //         addChild.apply(this, arguments);
    //     };
    //     this._elt.clearChild = function () {
    //         ctrl.requestUpdateContent();
    //         clearChild.apply(this, arguments);
    //     };
    // }, 10);
    // listenDomContentChange(this._elt, (event) => {
    //     this.requestUpdateContent();
    // });
    setTimeout(function () {
      (0, _utils.listenDomContentChange)(_this3._elt, function (event) {
        _this3.requestUpdateContent();
      });
    }, 10);
    return this._elt;
  }
});
Object.defineProperty(DTHeadCell.prototype, 'copyElt', {
  get: function get() {
    if (this._copyElt) return this._copyElt;
    this._copyElt = (0, _ACore.$)(this.elt.cloneNode(true)).addClass('as-copy-elt');
    if (this.data.style && this.data.style.width) {
      var self = this;
      setTimeout(function wait() {
        if (self._copyElt.isDescendantOf(document.body)) {
          self._copyElt.addStyle('width', self._copyElt.getBoundingClientRect().width + 'px');
        } else {
          setTimeout(wait, 10);
        }
      }, 10);
    }
    return this._copyElt;
  }
});
Object.defineProperty(DTHeadCell.prototype, 'copyElt1', {
  get: function get() {
    if (this._copyElt1) return this._copyElt1;
    this._copyElt1 = (0, _ACore.$)(this.elt.cloneNode(true)).addClass('as-copy-elt-1');
    return this._copyElt1;
  }
});
Object.defineProperty(DTHeadCell.prototype, 'copyElt2', {
  get: function get() {
    if (this._copyElt2) return this._copyElt2;
    this._copyElt2 = (0, _ACore.$)(this.elt.cloneNode(true)).addClass('as-copy-elt-2');
    return this._copyElt2;
  }
});
Object.defineProperty(DTHeadCell.prototype, 'colspan', {
  get: function get() {
    var value = this.data.attr && this.data.attr.colspan;
    if (typeof value === "string") value = parseInt(value);
    if (typeof value === "number") return value;else return 1;
  }
});
Object.defineProperty(DTHeadCell.prototype, 'rowspan', {
  get: function get() {
    var value = this.data.attr && this.data.attr.rowspan;
    if (typeof value === "string") value = parseInt(value);
    if (typeof value === "number") return value;else return 1;
  }
});
var _default = DTHeadCell;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _DTHeadCell = _interopRequireDefault(__webpack_require__(43489));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/****
 * table layer: copyElt
 * fixY layer : copyElt1 -  elt
 * fixXY layer: elt
 *
 */

/***
 *
 * @param {DTHead} head
 * @param data
 * @constructor
 */
function DTHeadRow(head, data) {
  var _this = this;
  this.head = head;
  this.data = data;
  this.cells = this.data.cells.map(function (cellData) {
    return new _DTHeadCell["default"](_this, cellData);
  });
  this._elt = null;
  this._copyElt = null;
  this._fixedXYElt = null;
  this._fixedXElt = null;
}
DTHeadRow.prototype.updateCopyEltSize = function () {
  if (!this._fixedXElt) return;
  var bound = this._copyElt.getBoundingClientRect();
  if (this._fixedXElt) this._fixedXElt.addStyle('height', bound.height + 'px');
  if (this._fixedXYElt) this._fixedXYElt.addStyle('height', bound.height + 'px');
  this._elt.addStyle('height', bound.height + 'px');
  this.cells.forEach(function (c) {
    return c.updateCopyEltSize();
  });
};
Object.defineProperty(DTHeadRow.prototype, 'elt', {
  get: function get() {
    if (this._elt) return this._elt;
    var fixedCol = this.adapter.fixedCol || 0;
    var child = this.cells.filter(function (c) {
      return c.idx < fixedCol;
    }).map(function (c) {
      return c.copyElt1;
    });
    var child1 = this.cells.filter(function (c) {
      return c.idx >= fixedCol;
    }).map(function (c) {
      return c.elt;
    });
    this._elt = (0, _ACore._)({
      tag: 'tr',
      "class": 'as-dt-head-row',
      child: child.concat(child1)
    });
    if (this.data.attr) {
      this.elt.attr(this.data.attr);
    }
    if (this.data.style) {
      this.elt.addStyle(this.data.style);
    }
    return this._elt;
  }
});
Object.defineProperty(DTHeadRow.prototype, 'fixedXYElt', {
  get: function get() {
    if (this._fixedXYElt) return this._fixedXYElt;
    var fixedCol = this.adapter.fixedCol || 0;
    this._fixedXYElt = (0, _ACore._)({
      elt: this.elt.cloneNode(false),
      "class": 'as-dt-fixed-xy',
      child: this.cells.filter(function (c) {
        return c.idx < fixedCol;
      }).map(function (c) {
        return c.elt;
      })
    });
    return this._fixedXYElt;
  }
});
Object.defineProperty(DTHeadRow.prototype, 'fixedXElt', {
  get: function get() {
    if (this._fixedXElt) return this._fixedXElt;
    var fixedCol = this.adapter.fixedCol || 0;
    this._fixedXElt = (0, _ACore._)({
      elt: this.elt.cloneNode(false),
      "class": 'as-dt-fixed-x',
      child: this.cells.filter(function (c) {
        return c.idx < fixedCol;
      }).map(function (c) {
        return c.copyElt2;
      })
    });
    return this._fixedXElt;
  }
});
Object.defineProperty(DTHeadRow.prototype, 'copyElt', {
  get: function get() {
    if (this._copyElt) return this.copyElt;
    var adapter = this.adapter;
    this._copyElt = (0, _ACore._)({
      elt: this.elt.cloneNode(false),
      child: this.cells.map(function (c) {
        return c.copyElt;
      })
    });
    return this._copyElt;
  }
});
Object.defineProperty(DTHeadRow.prototype, 'adapter', {
  get: function get() {
    return this.head.adapter;
  }
});
var _default = DTHeadRow;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
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 DTSearchFactor(global) {
  /***
   * @typedef SelectionItem2
   * @property {String} text
   * @property {String} desc
   * @property {String} __text__
   * @property {String} __nvnText__
   * @property {Array<String>} __words__
   * @property {Array<String>} __nvnWords__
   * @property {object} __wordDict__
   * @property {object} __nvnWordDict__
   * @module SelectionItem2
   */

  function nonAccentVietnamese(s) {
    return s.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, "a").replace(/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ/g, "A").replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, "e").replace(/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/g, "E").replace(/ì|í|ị|ỉ|ĩ/g, "i").replace(/Ì|Í|Ị|Ỉ|Ĩ/g, "I").replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, "o").replace(/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ/g, "O").replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, "u").replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, "U").replace(/ỳ|ý|ỵ|ỷ|ỹ/g, "y").replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, "Y").replace(/đ/g, "d").replace(/Đ/g, "D").replace(/\u0300|\u0301|\u0303|\u0309|\u0323/g, "").replace(/\u02C6|\u0306|\u031B/g, "");
  }
  function harmonicMean(a, b) {
    return 2 / (1 / a + 1 / b);
  }
  function wordLike(a, b) {
    var m = a.length;
    var n = b.length;
    function map(i, j) {
      return i * (n + 1) + j;
    }
    var Q = Array((m + 1) * (n + 1)).fill(0);
    for (var i = 0; i < m; ++i) {
      for (var j = 0; j < n; ++j) {
        if (a.charAt(i) == b.charAt(j)) {
          if (Q[map(i + 1, j + 1)]) {
            if (Q[map(i + 1, j + 1)] < Q[map(i, j)] + 1) Q[map(i + 1, j + 1)] = Q[map(i, j)] + 1;
          } else Q[map(i + 1, j + 1)] = Q[map(i, j)] + 1;
        } else Q[map(i + 1, j + 1)] = Math.max(Q[map(i + 1, j)], Q[map(i, j + 1)]);
      }
    }
    return Q[map(m, n)] / harmonicMean(m, n);
  }
  function wordsMatch(sq1, sq2, matchWordPow) {
    matchWordPow = matchWordPow === undefined ? 1 : matchWordPow;
    var m = sq1.length;
    var n = sq2.length;
    function map(i, j) {
      return i * (n + 1) + j;
    }
    var Q = Array((m + 1) * (n + 1)).fill(0);
    var e = 0.0;
    for (var i = 0; i < m; ++i) {
      for (var j = 0; j < n; ++j) {
        e = Math.pow(wordLike(sq1[i], sq2[j]), matchWordPow);
        if (Q[map(i + 1, j + 1)]) {
          if (Q[map(i + 1, j + 1)] < Q[map(i, j)] + e) Q[map(i + 1, j + 1)] = Q[map(i, j)] + e;
        } else Q[map(i + 1, j + 1)] = Q[map(i, j)] + e;
        e = Math.max(Q[map(i + 1, j)], Q[map(i, j + 1)]);
        if (e > Q[map(i + 1, j + 1)]) Q[map(i + 1, j + 1)] = e;
      }
    }
    return Q[map(m, n)];
  }
  var EXTRA_MATCH_SCORE = 9;
  var NVN_EXTRA_MATCH_SCORE = 8;
  var EQUAL_MATCH_SCORE = 10;
  var WORD_MATCH_SCORE = 3;
  var HAS_WORD_SCORE = 30;
  var HAS_NVN_WORD_SCORE = 29;

  /***
   *
   * @param {SelectionItem2} item
   * @returns {*}
   */
  function prepareSearchForItem(item) {
    if (!item.text || !item.text.charAt) item.text = item.text + '';
    var spliter = /[\s/]+/;
    var __text__ = item.text.replace(/([\s\b\-()\[\]"']|&#8239;|&nbsp;|&#xA0;|\s")+/g, ' ').trim().toLowerCase();
    var __nvnText__ = nonAccentVietnamese(__text__);
    item.__words__ = __text__.split(spliter);
    item.__text__ = item.__words__.join(' ');
    item.__words__.sort();
    item.__wordDict__ = item.__words__.reduce(function (ac, cr, i) {
      ac[cr] = i + 1;
      return ac;
    }, {});
    item.__nvnWords__ = __nvnText__.split(spliter);
    item.__nvnText__ = item.__nvnWords__.join(' ');
    item.__nvnWords__.sort();
    item.__nvnWordDict__ = item.__nvnWords__.reduce(function (ac, cr, i) {
      ac[cr] = i + 1;
      return ac;
    }, {});
    return item;
  }
  function isItemMustIncluded(queryItem, item) {
    if (!queryItem) return true;
    if (item.__nvnText__.indexOf(queryItem.__nvnText__) >= 0) {
      return true;
    }
    var dict1 = queryItem.__nvnWordDict__;
    var dict2 = item.__nvnWordDict__;
    for (var i in dict1) {
      for (var j in dict2) {
        if (j.indexOf(i) < 0) return false;
      }
    }
    return true;
  }
  function calcItemMatchScore(queryItem, item) {
    var score = 0;
    if (!item.__text__) return 0;
    var hwScore = 0;
    var i;
    for (i = 0; i < queryItem.__words__.length; ++i) {
      if (item.__wordDict__[queryItem.__words__[i]]) {
        hwScore += HAS_WORD_SCORE;
      } else if (item.__nvnWordDict__[queryItem.__nvnWords__[i]]) {
        hwScore += HAS_NVN_WORD_SCORE;
      }
    }
    score = hwScore;
    if (item.__text__ === queryItem.__text__) {
      score += EQUAL_MATCH_SCORE;
    }
    var extraIndex = item.__text__.indexOf(queryItem.__text__);
    if (extraIndex >= 0) {
      score += EXTRA_MATCH_SCORE + 200 - extraIndex - (item.__text__.length - queryItem.__text__.length);
    }
    extraIndex = item.__nvnText__.indexOf(queryItem.__nvnText__);
    if (extraIndex >= 0) {
      score += EXTRA_MATCH_SCORE + 200 - extraIndex - (item.__text__.length - queryItem.__text__.length);
    }
    var n = Math.max(queryItem.__words__.length + 1, 1);
    score = Math.max(score, wordsMatch(queryItem.__words__, item.__words__), wordsMatch(queryItem.__nvnWords__, item.__nvnWords__)) / n * 2 * WORD_MATCH_SCORE;
    return score;
  }
  function scoreCmp(a, b) {
    if (b.score === a.score) {
      if (b.item.__nvnText__ > a.item.__nvnText__) return -1;
      return 1;
    }
    return b.score - a.score;
  }
  function keyStringOf(o) {
    var type = _typeof(o);
    var keys;
    if (o && type === "object") {
      if (o.getTime) {
        return 'd(' + o.getTime() + ')';
      } else if (o.length && o.map) {
        return 'a(' + o.map(function (val) {
          return keyStringOf(val);
        }).join(',') + ')';
      } else {
        keys = Object.keys(o);
        keys.sort();
        return 'o(' + keys.map(function (key) {
          return key + ':' + keyStringOf(o[key]);
        }).join(',') + ')';
      }
    } else {
      return type[0] + '(' + o + ')';
    }
  }
  function matchFilter(item, filter) {
    if (!filter) return true;
    var keys = item.keys;
    if (!keys) return false;
    for (var i in filter) {
      if (!keyCmp(keys[i], filter[i])) return false;
    }
    return true;
  }
  function toComparable(x) {
    if (!x) return x;
    var type = _typeof(x);
    if (type === 'string') return x;
    if (type === "number") return x;
    if (type === "boolean") return x;
    if (type.getTime) return type.getTime();
    return x;
  }
  function keyCmp(itemKey, filterKey) {
    if (itemKey === filterKey) return true;
    if (!itemKey !== !filterKey) return false;
    if (!itemKey || !filterKey) return false;
    var filterKeyString = keyStringOf(filterKey);
    function withFilter(x) {
      var xString = keyStringOf(x);
      var res = xString === filterKeyString;
      if (!res && _typeof(filterKey) === "object") {
        if (filterKey.some) {
          res = filterKey.some(function (y) {
            return keyStringOf(y) === x;
          });
        } else if ('min' in filterKey || 'max' in filterKey) {
          res = true;
          if ('min' in filterKey) {
            res = res && toComparable(x) >= toComparable(filterKey.min);
          }
          if ('max' in filterKey) {
            res = res && toComparable(x) <= toComparable(filterKey.max);
          }
        }
      }
      return res;
    }
    if (itemKey.some) {
      return itemKey.some(withFilter);
    } else return withFilter(itemKey);
  }
  var benchmark = global.calcBenchmark();

  /******************************************************************************************************************/

  var slaves = {};
  function SearchingSlave(id) {
    this.id = id;
    this.items = [];
    this.itemVersion = -1;
    this.tranferFinished = true;
    this.pendingTask = null;
    this.taskSession = Math.random() + '';
    this.scoredHolders = [];
    this.searchingSession = Math.random() + '';
  }
  SearchingSlave.prototype.onReceiveItems = function (n, start, end, items, version) {
    if (this.scoredHolders.length > start) {
      this.scoredHolders.splice(start);
    }
    var cItems = this.items;
    if (cItems.length < n) {
      // sessionItems
      cItems.push(null);
    }
    if (cItems.length > n) {
      cItems.splice(n);
    }
    this.itemVersion = version;
    for (var i = start; i < end; ++i) {
      cItems[i] = items[i - start];
    }
    if (end === n) {
      this.tranferFinished = true;
      this.doTask();
    } else {
      this.tranferFinished = false;
    }
  };
  SearchingSlave.prototype.doTask = function () {
    if (!this.pendingTask) return;
    if (this.searchingSession === this.taskSession) return;
    var self = this;
    this.searchingSession = this.taskSession;
    var session = this.searchingSession;
    var items = this.items;
    var its = this.scoredHolders;
    var taskData = this.pendingTask;
    var itemVersion = this.itemVersion;
    var queryText = taskData.query.text;
    var filter = taskData.query.filter;
    var sort = taskData.query.sort;
    var queryTextItem = null;
    if (queryText) queryTextItem = prepareSearchForItem({
      text: queryText
    });
    var sortCmp = function sortCmp(a, b) {
      var aKeys = a.item.keys;
      var bKeys = b.item.keys;
      var key;
      var av, bv;
      var d = 0;
      if (aKeys && !bKeys) {
        d = 1;
      } else if (!aKeys && bKeys) {
        d = -1;
      } else if (aKeys && bKeys) {
        for (var i = 0; i < sort.length; ++i) {
          key = sort[i].key;
          d = aKeys[key] - bKeys[key];
          if (isNaN(d)) {
            if (aKeys[key] < bKeys[key]) {
              d = -1;
            } else if (aKeys[key] === bKeys[key]) {
              d = 0;
            } else {
              d = 1;
            }
          }
          if (sort[i].order === 'descending') d = -d;
          if (d !== 0) break;
        }
      }
      if (d === 0) {
        d = a.i - b.i;
      }
      return d;
    };
    function likeSort(items) {
      var minValue = Infinity;
      var maxValue = -Infinity;
      var i;
      var n = items.length;
      var item;
      for (i = 0; i < n; ++i) {
        item = items[i];
        if (item.score < minValue) minValue = item.score;
        if (item.score > maxValue) maxValue = item.score;
      }
      var segments = [[], [], [], [], [], [], [], []];
      var threshold = maxValue - (maxValue - minValue) / 4;
      if (maxValue < 3) threshold = maxValue - (maxValue - minValue) / 8;
      var d = (maxValue - threshold) / (segments.length - 1);
      var v;
      var k;
      for (i = 0; i < n; ++i) {
        item = items[i];
        v = item.score;
        if (item.mustIncluded) v = Math.max(threshold + 0.1, v);
        if (v < threshold || v < 0.8) continue;
        if (v >= maxValue) segments[segments.length - 1].push(item);else {
          k = (v - threshold) / d >> 0;
          segments[k].push(item);
        }
      }
      var res = [];
      var segment;
      while (segments.length > 0) {
        segment = segments.pop();
        if (segment.length > 0) {
          if (sort) {
            segment.sort(sortCmp);
          } else {
            if (segment.length + res.length < 1000) segment.sort(scoreCmp);
          }
          res = res.concat(segment);
        }
      }
      return res;
    }
    function sortScore() {
      var result = its;
      if (filter) {
        result = result.filter(function (x) {
          return !!x;
        });
      }

      // var now = new Date().getTime();

      if (queryTextItem) {
        result = likeSort(result);
      } else if (sort) {
        result.sort(sortCmp);
      }

      // console.log("SortTime:", new Date().getTime() - now)
      result = result.map(function (it) {
        return it.i;
      });
      self.searchingSession = 'done';
      global.emit('searchEnd', self.id, Object({
        hash: taskData.hash,
        idx: taskData.idx,
        result: result,
        itemVersion: self.itemVersion
      }));
    }
    function tick() {
      if (self.taskSession !== session) return;
      if (self.itemVersion !== itemVersion) {
        return;
      }
      if (its.length >= items.length) {
        sortScore();
        return;
      }
      var k = benchmark * 5;
      if (!queryTextItem) k *= 30;
      var i = its.length;
      var n = items.length;
      while (k-- && i < n) {
        if (!filter || matchFilter(items[i], filter)) {
          if (!items[i].prepare && queryTextItem) {
            items[i].prepare = true;
            prepareSearchForItem(items[i]);
          }
          its.push({
            i: i,
            item: items[i],
            score: queryTextItem ? calcItemMatchScore(queryTextItem, items[i]) : 0,
            mustIncluded: isItemMustIncluded(queryTextItem, items[i])
          });
        } else {
          its.push(null);
        }
        ++i;
      }
      setTimeout(tick, 5);
    }
    tick();
  };
  SearchingSlave.prototype.receiveTask = function (taskData) {
    this.pendingTask = taskData && taskData.query && taskData;
    this.taskSession = taskData && taskData.idx;
    this.scoredHolders = [];
    if (this.tranferFinished && this.pendingTask) this.doTask();
  };
  SearchingSlave.prototype.destroy = function () {
    this.items = null;
    delete slaves[this.id];
  };
  global.destroySlave = function (id) {
    slaves[id] && slaves[id].destroy();
  };

  /******************************************************************************************************************/
  var data = {};
  global.transferTask = function (id, taskData) {
    slaves[id] = slaves[id] || new SearchingSlave(id);
    slaves[id] && slaves[id].receiveTask(taskData);
  };
  global.transferSearchItems = function (id, n, start, end, items, version) {
    slaves[id] = slaves[id] || new SearchingSlave(id);
    slaves[id].onReceiveItems(n, start, end, items, version);
  };
  global.search = function (session, query) {
    var holder = data[session];
    if (!holder) return false;
    var searchingSession = Math.random() + '';
    holder.searchingSession = searchingSession;
    var now = new Date().getTime();
    var items = data[session] && data[session].items;
    var its = Array(items.length);
    var queryItem = prepareSearchForItem({
      text: query
    });
    var resolve;
    var sync = new Promise(function (rs) {
      resolve = rs;
    });
    function calcValue() {
      var i = 0;
      var n = items.length;
      function tick() {
        if (searchingSession !== holder.searchingSession) {
          resolve(false);
          return;
        }
        var c = benchmark * 5;
        while (c-- && i < n) {
          its[i] = {
            i: i,
            item: items[i],
            score: calcItemMatchScore(queryItem, items[i])
          };
          ++i;
        }
        if (i < n) {
          setTimeout(tick, 3);
        } else {
          setTimeout(sortScore, 3);
        }
      }
      tick();
    }
    function sortScore() {
      if (searchingSession !== holder.searchingSession) {
        resolve(false);
        return;
      }
      now = new Date().getTime();
      var result = likeSort(its).map(function (it) {
        return it.i;
      });
      resolve(result);
    }
    setTimeout(calcValue, 3);
    return sync;
  };
}
var _default = DTSearchFactor;
exports["default"] = _default;
DTSearchFactor.exportCode = function () {
  var res = DTSearchFactor + '' + '\n\nDTSearchFactor(this)';
  return res;
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _DTHead = _interopRequireDefault(__webpack_require__(63005));
var _DTBody = _interopRequireDefault(__webpack_require__(71098));
var _ACore = __webpack_require__(34093);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {DynamicTable} elt
 * @param {} data
 * @constructor
 */

function DTTable(wrapper, data) {
  this.wrapper = wrapper;
  this._elt = null;
  this._fixedXElt = null;
  this._fixedXYElt = null;
  this._fixedYElt = null;
  /***
   *
   * @type {DTDataTable|null|*|string}
   */
  this.adapter = this.wrapper._adapter;
  this.data = data;
  this.header = new _DTHead["default"](this, this.data.head);
  this.body = new _DTBody["default"](this, this.data.body);
}
DTTable.prototype.updateCopyEltSize = function () {
  if (!this._fixedYElt) return;
  var bound = this._elt.getBoundingClientRect();
  this._fixedYElt.parentElement.addStyle('width', bound.width + 'px');
  this.header.updateCopyEltSize();
  this.body.updateCopyEltSize();
};
DTTable.prototype.revokeResource = function () {
  this.wrapper = null;
  this._elt = null;
  this.adapter = null;
  this.data = null;
  this.body.revokeResource();
};
Object.defineProperty(DTTable.prototype, 'elt', {
  get: function get() {
    if (this._elt) return this._elt;
    this._elt = (0, _ACore._)({
      tag: 'table',
      "class": 'as-dynamic-table',
      child: [this.header.copyElt, this.body.elt]
    });
    return this._elt;
  }
});
Object.defineProperty(DTTable.prototype, 'fixedXElt', {
  get: function get() {
    if (this._fixedXElt) return this._fixedXElt;
    this._fixedXElt = (0, _ACore._)({
      elt: this.elt.cloneNode(false),
      "class": 'as-fixed-x',
      child: [this.header.fixedXElt, this.body.fixedXElt]
    });
    return this._fixedXElt;
  }
});
Object.defineProperty(DTTable.prototype, 'fixedYElt', {
  get: function get() {
    if (this._fixedYElt) return this._fixedYElt;
    this._fixedYElt = (0, _ACore._)({
      elt: this.elt.cloneNode(false),
      "class": 'as-dt-fixed-y',
      child: [this.header.elt]
    });
    return this._fixedYElt;
  }
});
Object.defineProperty(DTTable.prototype, 'fixedXYElt', {
  get: function get() {
    if (this._fixedXYElt) return this._fixedXYElt;
    this._fixedXYElt = (0, _ACore._)({
      elt: this.elt.cloneNode(false),
      "class": 'as-dt-fixed-y',
      child: [this.header.fixedXYElt]
    });
    return this._fixedXYElt;
  }
});
var _default = DTTable;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
/***
 *
 * @param {DynamicTable} tableElt
 * @constructor
 */
function DTWaitingViewController(tableElt) {
  this.tableElt = tableElt;
  this.tokens = {};
  this.traceToken = {};
  this.timeoutIdx = -1;
}
DTWaitingViewController.prototype.begin = function () {
  var token = Math.random() + '';
  if (this.tableElt.$searchInput) this.tableElt.$searchInput.waiting = true;
  this.tokens[token] = true;
  this.traceToken[token] = new Error(token);
  if (this.timeoutIdx > 0) {
    clearTimeout(this.timeoutIdx);
    this.timeoutIdx = -1;
  }
  return token;
};
DTWaitingViewController.prototype.end = function (token) {
  delete this.tokens[token];
  delete this.traceToken[token];
  if (this.timeoutIdx > 0) {
    clearTimeout(this.timeoutIdx);
  }
  this.timeoutIdx = setTimeout(function () {
    this.timeoutIdx = -1;
    for (var i in this.tokens) {
      return;
    }
    if (this.tableElt.$searchInput) this.tableElt.$searchInput.waiting = false;
  }.bind(this), 100);
};
var _default = DTWaitingViewController;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _DTDataAdapter = _interopRequireDefault(__webpack_require__(38064));
__webpack_require__(3505);
var _DTWaitingViewController = _interopRequireDefault(__webpack_require__(23242));
var _noop = _interopRequireDefault(__webpack_require__(5025));
var _utils = __webpack_require__(84512);
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _DomSignal = _interopRequireDefault(__webpack_require__(47341));
var _Dom = __webpack_require__(64821);
var _Scroller = __webpack_require__(87780);
var _Vec = _interopRequireDefault(__webpack_require__(73316));
var _DTTable = _interopRequireDefault(__webpack_require__(98933));
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
var _DynamicCSS = _interopRequireDefault(__webpack_require__(30401));
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _stringGenerate = __webpack_require__(10713);
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _attribute = __webpack_require__(18144);
var _Attributes = _interopRequireDefault(__webpack_require__(36447));
var _stringFormat = __webpack_require__(22294);
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 _loadStyleSheet = function loadStyleSheet() {
  var dynamicStyleSheet = {};
  var key = Array(20).fill(0).map(function (u, i) {
    return ['.as-dynamic-table-wrapper.as-hide-col-' + i + ' td[data-col-idx="' + i + '"]', '.as-dynamic-table-wrapper.as-hide-col-' + i + ' th[data-col-idx="' + i + '"]'].join(', ');
  }).join(',\n');
  dynamicStyleSheet[key] = {
    display: 'none'
  };
  (0, _utils.buildCss)(dynamicStyleSheet);
  _loadStyleSheet = _noop["default"];
};
function DynamicTableManager() {
  this.tables = [];
  this.storageChanged = false;
}
DynamicTableManager.prototype.STORE_KEY = 'DynamicTableSetting';
DynamicTableManager.prototype.VER = 2;
DynamicTableManager.prototype.initIfNeed = function () {
  if (this.css) return;
  this.css = new _DynamicCSS["default"]();
  this.css.elt.setAttribute('id', "dynamic_mng");
  this.tables = [];
  try {
    var json = localStorage.getItem(this.STORE_KEY);
    if (json) {
      this.data = JSON.parse(json);
      if (!this.data || this.data.ver !== this.VER) this.data = null;
    }
  } catch (er) {}
  this.data = this.data || {
    ver: this.VER,
    colWidth: {}
  };
  this.initCss();
};
DynamicTableManager.prototype.initCss = function () {
  var _this = this;
  Object.keys(this.data.colWidth).forEach(function (tableId) {
    Object.keys(_this.data.colWidth[tableId]).forEach(function (colId) {
      var value = _this.data.colWidth[tableId][colId];
      _this.css.setProperty("#".concat(tableId, " th[data-col-id=\"").concat(colId, "\"]"), 'width', value + 'px');
    });
  });
  this.css.commit();
};
DynamicTableManager.prototype.add = function (table) {
  this.tables.push(table);
};
DynamicTableManager.prototype.removeTrash = function () {
  this.tables = this.tables.filter(function (table) {
    return table.isDescendantOf(document.body);
  });
};
DynamicTableManager.prototype.commitColWidth = function (sender, tableId, colId, value, storage) {
  this.setColWidth(tableId, colId, value, storage);
  this.removeTrash();
  this.commit();
  this.tables.forEach(function (table) {
    if (table.id === table && table !== sender) {
      table.requestUpdateSize();
    }
  });
};
DynamicTableManager.prototype.hasColSize = function (tableId, colId) {
  return this.data.colWidth[tableId] && this.data.colWidth[tableId][colId];
};
DynamicTableManager.prototype.setColWidth = function (tableId, colId, value, storage) {
  if (storage) {
    this.data.colWidth[tableId] = this.data.colWidth[tableId] || {};
    this.data.colWidth[tableId][colId] = value;
    this.storageChanged = true;
  }
  this.css.setProperty("#".concat(tableId, " th[data-col-id=\"").concat(colId, "\"]:not([colspan])"), 'width', value + 'px');
};
DynamicTableManager.prototype.commit = function () {
  if (this.storageChanged) {
    localStorage.setItem(this.STORE_KEY, JSON.stringify(this.data));
    this.storageChanged = false;
  }
  this.css.commit();
};
var manager = new DynamicTableManager();
var pendingTables = {};

/***
 * @extends AElement
 * @constructor
 */
function DynamicTable() {
  var _this2 = this;
  this._pendingId = (0, _stringGenerate.randomIdent)(4);
  pendingTables[this._pendingId] = this;
  manager.initIfNeed();
  _loadStyleSheet();
  this.css = new _DynamicCSS["default"]();
  this._hiddenColumns = [];
  /***
   *
   * @type {SearchTextInput|null}
   */
  this.$searchInput = null;
  /***
   *
   * @type {AElement}
   */
  this.$table = (0, _ACore.$)('.as-dynamic-table', this);
  /***
   *
   * @type {AElement}
   */
  this.$thead = (0, _ACore.$)('.as-dynamic-table>thead', this.$table);
  /***
   *
   * @type {AElement}
   */
  this.$tbody = (0, _ACore.$)('.as-dynamic-table>tbody', this.$table);
  this.$filterInputs = [];
  this.$attachhook = (0, _ACore._)('attachhook').addTo(this);
  this.$domSignal = (0, _ACore._)('attachhook').addTo(this);
  this.domSignal = new _DomSignal["default"](this.$domSignal);
  //controller
  this.table = null;
  this.$space = (0, _ACore.$)('.as-dynamic-table-space', this);
  this.$fixedYCtn = (0, _ACore.$)('.as-dynamic-table-fixed-y-ctn', this);
  this.$fixedXCtn = (0, _ACore.$)('.as-dynamic-table-fixed-x-ctn', this);
  this.$fixedXYCtn = (0, _ACore.$)('.as-dynamic-table-fixed-xy-ctn', this);
  this.$viewport = (0, _ACore.$)('.as-dynamic-table-viewport', this);
  this.$hscrollbar = (0, _ACore.$)('.as-dynamic-table-hb', this);
  this.$vscrollbar = (0, _ACore.$)('.as-dynamic-table-vb', this);
  this.$pageSelector = new VirtualPageSelector(this);
  this.extendStyle = Object.assign(new _Attributes["default"](this), this.extendStyle);
  this.extendStyle.loadAttributeHandlers(this.styleHandlers);

  // this.$attachhook.requestUpdateSize = this.fixedContentCtrl.updateSize.bind(this.fixedContentCtrl);
  this.$attachhook.requestUpdateSize = this.requestUpdateSize.bind(this);
  var trashTO = -1;
  this.readySync = new Promise(function (rs) {
    _this2.onReady = rs;
  });
  this.$attachhook.once('attached', function () {
    delete pendingTables[_this2._pendingId];
    // setTimeout(()=>{
    //     Object.values(pendingTables).forEach(table=>{
    //         if (!table.isDescendantOf(document.body))
    //         table.revokeResource();
    //     });
    // }, 5000);
    _ResizeSystem["default"].add(_this2.$attachhook);
    _this2.layoutCtrl.onAttached();
    _this2.colSizeCtrl.onAttached();
    manager.add(_this2);
    setTimeout(function () {
      _this2.requestUpdateSize();
      if (_this2.onReady) {
        _this2.onReady();
        _this2.onReady = null;
      }
    }, 10);
    clearTimeout(trashTO);
    var checkAlive = function checkAlive() {
      if (_this2.isDescendantOf(document.body)) {
        setTimeout(checkAlive, 2000);
      } else {
        _this2.revokeResource();
      }
    };
    setTimeout(checkAlive, 500);
  });

  /***
   *
   * @type {{data: DTDataTable}||null}
   */
  this.adapter = null;
  this.waitingCtl = new _DTWaitingViewController["default"](this);
  this.layoutCtrl = new LayoutController(this);
  this.pointerCtrl = new PointerController(this);
  this.colSizeCtrl = new ColSizeController(this);
  this.rowDragCtrl = new RowDragController(this);
}
DynamicTable.tag = 'DynamicTable'.toLowerCase();
DynamicTable.render = function (data, domDesc) {
  var width = domDesc.style && domDesc.style.width;
  var classList = ['as-dynamic-table-wrapper'];
  if (width === 'match_parent' || width === '100%') {
    classList.push('as-width-match-parent');
  }
  return (0, _ACore._)({
    id: 'no-id-' + (0, _stringGenerate.randomIdent)(10),
    extendEvent: ['orderchange', 'colresize'],
    "class": classList,
    child: [{
      tag: _Hanger["default"].tag,
      "class": 'as-dynamic-table-viewport',
      child: [{
        "class": 'as-dynamic-table-space'
      }, {
        "class": 'as-dynamic-table-fixed-y-ctn'
      }, {
        "class": 'as-dynamic-table-fixed-x-ctn'
      }, {
        "class": 'as-dynamic-table-fixed-xy-ctn'
      }]
    }, {
      tag: _Scroller.VScrollbar,
      "class": 'as-dynamic-table-vb'
    }, {
      tag: _Scroller.HScrollbar,
      "class": 'as-dynamic-table-hb'
    }]
  });
};
DynamicTable.prototype.extendStyle = {}; //init value

DynamicTable.prototype.extendStyle.tableLayout = 'fixed';
DynamicTable.prototype.extendStyle.width = 'auto';
DynamicTable.prototype.extendStyle.minWidth = 'unset';
DynamicTable.prototype.styleHandlers = {};
DynamicTable.prototype.styleHandlers.minWidth = {
  set: function set(value) {
    var parsedValue = (0, _attribute.parseMeasureValue)(value);
    if (!parsedValue) value = 'unset';else if (parsedValue.value === 'match_parent') value = '100%';else if (parsedValue.unit === 'px') value = parsedValue.value + parsedValue.unit;
    if (parsedValue && parsedValue.unit) {
      this.style.minWidth = value;
      this.addClass('as-has-min-width');
    } else {
      this.removeClass('as-has-min-width');
    }
    return value;
  }
};
DynamicTable.prototype.styleHandlers.width = {
  set: function set(value) {
    var parsedValue = (0, _attribute.parseMeasureValue)(value);
    if (!parsedValue) value = 'auto';else if (parsedValue.value === 'match_parent') value = '100%';else if (parsedValue.unit === 'px') value = parsedValue.value + parsedValue.unit;
    if (parsedValue && parsedValue.unit) {
      this.style.width = value;
      this.removeClass('as-width-auto');
    } else {
      this.addClass('as-width-auto');
    }
    return value;
  }
};
DynamicTable.prototype.styleHandlers.height = {
  set: function set(value) {
    //todo: handle expression
    var parsedValue;
    if (value && value.indexOf && value.indexOf('--') > 0) {
      this.style.height = value;
    } else {
      parsedValue = (0, _attribute.computeMeasureExpression)(value, {
        elt: this,
        parentSize: 0
      });
      if (!parsedValue) value = 'auto';else if (parsedValue.value === 'match_parent') value = '100%';else if (parsedValue.unit === 'px') value = parsedValue.value + parsedValue.unit;
      if (parsedValue && parsedValue.unit) {
        this.style.height = value;
        this.removeClass('as-auto-height');
      } else {
        this.addClass('as-auto-height');
      }
    }
    return value;
  }
};

//
// DynamicTable.prototype.width = function (value) {
//     this.extendStyle.minWidth = value;
// };
//

DynamicTable.prototype.styleHandlers.tableLayout = {
  /***
   * @this {DynamicTable}
   * @param value
   */
  set: function set(value) {
    if (value === 'fixed') {
      this.addClass('as-table-layout-fixed');
    } else {
      this.removeClass('as-table-layout-fixed');
      value = 'auto';
    }
    return value;
  }
};
DynamicTable.prototype.addStyle = function (arg0, arg1) {
  if (typeof arg0 === "string" && arg0 in this.extendStyle) {
    if (arg0.indexOf('-') > 0) arg0 = (0, _stringFormat.kebabCaseToCamelCase)(arg0); //not --
    this.extendStyle[arg0] = arg1;
  } else {
    _AElement["default"].prototype.addStyle.apply(this, arguments);
  }
  return this;
};
DynamicTable.prototype.requestUpdateSize = function () {
  this.layoutCtrl.onResize();
};
DynamicTable.prototype.revokeResource = function () {
  this.$attachhook.cancelWaiting();
  delete pendingTables[this._pendingId];
  this.css.stop();
  this.css = null;
  this.revokeResource = _noop["default"];
  return;
  var row, cell, keys, key;
  var rows = this._adapterData && this._adapterData.data && this._adapterData.data.body && this._adapterData.data.body.rows;
  // if (rows) {
  //     while (rows.length) {
  //         row = rows.pop();
  //         while (row.cells.length) {
  //             cell = row.cells.pop();
  //             keys = Object.keys(cell);
  //             while (keys.length){
  //                 key = keys.pop();
  //                 cell[key] = null;
  //                 delete cell[key];
  //             }
  //         }
  //     }
  // }
  // revokeResource(rows);

  if (this.table) {
    this.table.revokeResource();
    this.table = null;
  }
  if (this._adapter) {
    this._adapter.revoke();
    this._adapter = null;
  }
  this.attachSearchInput(null);
  this.filterInputs = [];
  this.waitingCtl = null;
  this.layoutCtrl = null;
  this.pointerCtrl = null;
  this.colSizeCtrl = null;
  this.rowDragCtrl = null;
  manager.removeTrash();
  _ResizeSystem["default"].removeTrash();
};
DynamicTable.prototype.getSavedState = function () {
  var res = {};
  res.scrollTop = this.$vscrollbar.innerOffset;
  res.scrollLeft = this.$hscrollbar.innerOffset;
  return res;
};
DynamicTable.prototype.setSavedState = function (state) {
  var _this3 = this;
  this.readySync.then(function () {
    state = state || {};
    _this3.$vscrollbar.innerOffset = state.scrollTop || 0;
    _this3.$hscrollbar.innerOffset = state.scrollLeft || 0;
    _this3.$hscrollbar.emit('scroll');
    _this3.$vscrollbar.emit('scroll');
  });
};
DynamicTable.prototype.addRowBefore = function (rowData, bf) {
  return this.table.body.addRowBefore(rowData, bf);
};
DynamicTable.prototype.addRowAfter = function (rowData, at) {
  return this.table.body.addRowAfter(rowData, at);
};
DynamicTable.prototype.replaceRow = function (rowData, rp) {
  var row = this.rowOf(rp);
  if (row) {
    row.updateData(rowData);
  }
  _ResizeSystem["default"].requestUpdateSignal();
};
DynamicTable.prototype.addRow = function (rowData, idx) {
  return this.table.body.addRow(rowData, idx);
};
DynamicTable.prototype.addRows = function (rowsData, idx) {
  return this.table.body.addRows(rowsData, idx);
};
DynamicTable.prototype.removeRow = function (row) {
  return this.table.body.removeRow(row);
};
DynamicTable.prototype.rowAt = function (idx) {
  return this.table.body.rowAt(idx);
};
DynamicTable.prototype.rowOf = function (o) {
  return this.table.body.rowOf(o);
};
DynamicTable.prototype.rowIndexOf = function (o) {
  return this.table.body.rowIndexOf(o);
};
DynamicTable.prototype.getRows = function () {
  return this.table.body.rows.slice();
};
DynamicTable.prototype.requireRows = function (start, end) {
  return this.table.body.requireRows(start, end);
};
DynamicTable.prototype.clearRows = function () {
  return this.table.body.clearRows();
};
DynamicTable.prototype.viewIntoRow = function (row) {
  var _this4 = this;
  var counter = 300;
  var wait = function wait() {
    counter--;
    if (_this4.isDescendantOf(document.body)) {
      if (_this4.hasClass('as-adapt-infinity-grow') || !_this4.hasClass('as-overflow-y')) {
        row = _this4.rowOf(row);
        if (row) {
          (0, _utils.vScrollIntoView)(row.elt);
        }
      } else {
        _this4.table.body.viewIntoRow(row); //TODO: CHECK MORE
      }
    } else if (counter > 0) {
      setTimeout(wait, 30);
    }
  };
  setTimeout(wait, 130);
};
DynamicTable.prototype.attachSearchInput = function (inputElt) {
  if (this.$searchInput) {
    this.$searchInput.off('stoptyping', this.eventHandler.searchModify);
    this.$searchInput.off('keyup', this.eventHandler.searchKeyUp);
  }
  this.$searchInput = inputElt;
  if (this.$searchInput) {
    if (this.$searchInput.$table) {
      this.$searchInput.off('stoptyping', this.$searchInput.$table.eventHandler.searchModify);
      this.$searchInput.off('keyup', this.$searchInput.$table.eventHandler.searchKeyUp);
    }
    this.$searchInput.$table = this;
    this.$searchInput.on('stoptyping', this.eventHandler.searchModify);
    this.$searchInput.on('keyup', this.eventHandler.searchKeyUp);
  }
};
DynamicTable.prototype.filter = function (filter) {
  var query = {};
  var queryText = this.$searchInput && this.$searchInput.value || '';
  queryText = queryText.trim().replace(/\s\s+/g, ' ');
  var i;
  if (filter) {
    for (i in filter) {
      query.filter = filter;
      break;
    }
  }
  if (queryText && queryText.length > 0) query.text = queryText;
  for (i in query) {
    this.query(query);
    return;
  }
  this.query(null);
};
DynamicTable.prototype.makeQuery = function () {
  var query = {};
  var textQuery = this.$searchInput && this.$searchInput.value.trim().replace(/\s\s+/, ' ');
  if (textQuery && textQuery.length > 0) query.text = textQuery;
  var i;
  var filter = this.$filterInputs.reduce(function (ac, elt) {
    if (elt.exportFilter) {
      elt.exportFilter(ac);
    } else if (elt.name) {
      ac[elt.name] = elt.value;
    }
    return ac;
  }, {});
  var sort = (0, _ACore.$$)('th', this.table.header.elt).reduce(function (ac, cr) {
    var key = cr.attr('data-sort-key');
    var order = cr.attr('data-sort-order');
    if (key && order && order !== 'none') {
      ac.push({
        key: key,
        order: order
      });
    }
    return ac;
  }, []);
  for (i in filter) {
    query.filter = filter;
    break;
  }
  if (sort.length > 0) {
    query.sort = sort;
  }
  for (i in query) {
    return query;
  }
  return null;
};
DynamicTable.prototype.requestQuery = function () {
  var query = this.makeQuery();
  this.query(query);
};
DynamicTable.prototype.query = function (query) {
  this.table.body.query(query);
};
DynamicTable.prototype.addFilter = function (inputElt) {
  if (inputElt.$dynamicTable) {
    inputElt.$dynamicTable.removeFilter(inputElt);
  }
  inputElt.$dynamicTable = this;
  inputElt.on('change', this.eventHandler.searchModify);
  this.$filterInputs.push(inputElt);
};
DynamicTable.prototype.removeFilter = function (inputElt) {
  if (inputElt.$dynamicTable !== this) return;
  inputElt.$dynamicTable = null;
  inputElt.off('change', this.eventHandler.searchModify);
  var idx = this.$filterInputs.indexOf(inputElt);
  if (idx >= 0) this.$filterInputs.splice(idx, 1);
};
DynamicTable.prototype.notifyRowChange = function (row) {
  var idx = this.table.body.rowIndexOf(row);
  if (idx >= 0) this.table.body.onRowSplice(idx);
};
DynamicTable.prototype.notifyRowsChange = _noop["default"];
DynamicTable.property = {};
DynamicTable.property.adapter = {
  /***
   * @this DynamicTable
   * @param data
   */
  set: function set(data) {
    var _this5 = this;
    if (!data) return;
    this._adapterData = data;
    this._adapter = new _DTDataAdapter["default"](this, data);
    this.layoutCtrl.onAdapter();
    this.table = new _DTTable["default"](this, this._adapterData.data);
    this.$space.clearChild().addChild(this.table.elt);
    this.$fixedYCtn.clearChild().addChild(this.table.fixedYElt);
    this.$fixedXCtn.clearChild().addChild(this.table.fixedXElt);
    this.$fixedXYCtn.clearChild().addChild(this.table.fixedXYElt);
    if (this.extendStyle) this.addStyle(this.extendStyle);
    setTimeout(function () {
      _this5.requestUpdateSize();
    }, 10);
    setTimeout(function () {
      _this5.requestUpdateSize();
    }, 30);
    setTimeout(function () {
      _this5.requestUpdateSize();
    }, 100);
  },
  get: function get() {
    return this._adapterData;
  }
};
DynamicTable.property.filterInputs = {
  set: function set(inputs) {
    var _this6 = this;
    inputs = inputs || [];
    this.$filterInputs.slice().forEach(function (input) {
      _this6.removeFilter(input);
    });
    inputs.forEach(function (input) {
      return _this6.addFilter(input);
    });
  },
  get: function get() {
    return this.$filterInputs;
  }
};
DynamicTable.property.hiddenColumns = {
  set: function set(value) {
    value = value || [];
    this._hiddenColumns.forEach(function (idxV) {
      this.removeClass('as-hide-col-' + idxV);
    }.bind(this));
    this._hiddenColumns = value;
    this._hiddenColumns.forEach(function (idxV) {
      this.addClass('as-hide-col-' + idxV);
    }.bind(this));
    var c = this.parentElement;
    while (c) {
      if (c.hasClass && c.hasClass('absol-table-vscroller') && c.update) {
        c.update();
        break;
      }
      c = c.parentElement;
    }
    _ResizeSystem["default"].update();
    _ResizeSystem["default"].requestUpdateSignal();
  },
  get: function get() {
    return this._hiddenColumns;
  }
};

/***
 * @memberOf {DynamicTable#}
 * @type {{}}
 */
DynamicTable.eventHandler = {};

/***
 * @this DynamicTable#
 * @param event
 */
DynamicTable.eventHandler.searchModify = function (event) {
  this.requestQuery();
};

/***
 * @this DynamicTable#
 * @param event
 */
DynamicTable.eventHandler.searchKeyUp = function (event) {
  setTimeout(function () {
    var query = this.$searchInput.value;
    query = query.trim().replace(/\s+/, ' ');
    if (query.length) this.table.body.startSearchingIfNeed();
  }.bind(this), 30);
};
DynamicTable.prototype.getColWidth = function () {
  return this.colSizeCtrl.getColWidth();
};
DynamicTable.prototype.setColWidth = function (colId, value) {
  return this.colSizeCtrl.setColWidth(colId, value);
};
_ACore["default"].install(DynamicTable);
var _default = DynamicTable;
/***
 *
 * @param {DynamicTable} elt
 * @constructor
 */
exports["default"] = _default;
function LayoutController(elt) {
  var _this7 = this;
  /***
   *
   * @type {DynamicTable}
   */
  this.elt = elt;
  this.maxRows = Math.ceil(Math.max((0, _Dom.getScreenSize)().height / 40, 1080 / 40));
  this.offset = _Vec["default"].ZERO;
  Object.keys(this.constructor.prototype).forEach(function (key) {
    if (key.startsWith('ev_')) _this7[key] = _this7[key].bind(_this7);
  });
  this.elt.$hscrollbar.on('scroll', this.ev_hScrollbarScroll);
  this.elt.$vscrollbar.on('scroll', this.ev_vScrollbarScroll);
  this.elt.$viewport.on('scroll', this.ev_viewportScroll);
  this.elt.on('wheel', this.ev_wheel);
  this.scrollingDir = _Vec["default"].ZERO;
  this.scrollingStartOffset = _Vec["default"].ZERO;
}

/***
 *
 * @param {WheelEvent} event
 */
LayoutController.prototype.ev_wheel = function (event) {
  var vScroller = (0, _utils.findVScrollContainer)(event.target);
  if (vScroller && vScroller.hasClass && vScroller.hasClass('as-bscroller')) return;
  var isOverflowY = this.elt.hasClass('as-overflow-y');
  var isOverflowX = this.elt.hasClass('as-overflow-x');
  var dy = event.deltaY;
  var prevOffset;
  if (isOverflowY && (!event.shiftKey || !isOverflowX)) {
    prevOffset = this.elt.$vscrollbar.innerOffset;
    if (dy > 0) {
      this.elt.$vscrollbar.innerOffset = Math.max(Math.min(prevOffset + 100 / 40, this.elt.$vscrollbar.innerHeight - this.elt.$vscrollbar.outerHeight), 0);
      if (prevOffset !== this.elt.$vscrollbar.innerOffset) {
        event.preventDefault();
        this.elt.$vscrollbar.emit('scroll');
      }
    } else if (dy < 0) {
      this.elt.$vscrollbar.innerOffset = Math.max(Math.min(prevOffset - 100 / 40, this.elt.$vscrollbar.innerHeight - this.elt.$vscrollbar.outerHeight), 0);
      if (prevOffset !== this.elt.$vscrollbar.innerOffset) {
        event.preventDefault();
        this.elt.$vscrollbar.emit('scroll');
      }
    }
  } else if (isOverflowX && (event.shiftKey || !isOverflowY)) {
    prevOffset = this.elt.$hscrollbar.innerOffset;
    if (dy > 0) {
      this.elt.$hscrollbar.innerOffset = Math.max(Math.min(prevOffset + 100, this.elt.$hscrollbar.innerWidth - this.elt.$hscrollbar.outerWidth), 0);
      if (prevOffset !== this.elt.$hscrollbar.innerOffset) {
        event.preventDefault();
        this.elt.$hscrollbar.emit('scroll');
      }
    } else if (dy < 0) {
      this.elt.$hscrollbar.innerOffset = Math.max(Math.min(prevOffset - 100, this.elt.$hscrollbar.innerWidth - this.elt.$hscrollbar.outerWidth), 0);
      if (prevOffset !== this.elt.$hscrollbar.innerOffset) {
        event.preventDefault();
        this.elt.$hscrollbar.emit('scroll');
      }
    }
  }
};
LayoutController.prototype.onAdapter = function () {
  var adapter = this.elt.adapter;
  if (this.elt.style.height === 'auto') {
    this.elt.removeStyle('height');
    this.elt.addClass('as-adapt-infinity-grow');
  }
  if (adapter.fixedCol > 0) {
    this.elt.addClass('as-has-fixed-col');
  } else {
    this.elt.removeClass('as-has-fixed-col');
  }
  if (adapter.rowsPerPage === Infinity) {
    this.elt.addClass('as-adapt-infinity-grow');
  }
  if (!adapter.data.head || !adapter.data.head.rows || !adapter.data.head.rows[0] || !adapter.data.head.rows[0].cells || !adapter.data.head.rows[0].cells[0]) {
    this.elt.addClass('as-headless');
  } else {
    this.elt.removeClass('as-headless');
  }
};
LayoutController.prototype.handleMinWidth = function () {
  var minWidth = this.elt.extendStyle.minWidth || this.elt.table.elt.getComputedStyleValue('min-width');
  var mv = (0, _attribute.parseMeasureValue)(minWidth);
  if (!mv) return;
  if (mv.unit !== 'px') return;
  if (!this.elt.table.elt.firstChild || !this.elt.table.elt.firstChild.firstChild) return;
  var bound = this.elt.table.elt.firstChild.firstChild.getBoundingClientRect();
  if (bound.width >= mv.value) return;
  //copyElt
  var cells = this.elt.table.header.rows[0].cells;
  var freeCells = cells.filter(function (cell) {
    return !cell.data.style || !cell.data.style.width;
  });
  if (freeCells.length === 0) return;
  var cellWidths = freeCells.map(function (cell) {
    return cell.copyElt.getBoundingClientRect().width;
  });
  var sumWidth = cellWidths.reduce(function (ac, w) {
    return ac + w;
  }, 0);
  var needGrowUp = mv.value - bound.width;
  freeCells.forEach(function (cell, i) {
    var width = cellWidths[i];
    var newWidth = width + width / sumWidth * needGrowUp;
    var paddingLeft = cell.copyElt.getComputedStyleValue('padding-left') || '0px';
    var paddingRight = cell.copyElt.getComputedStyleValue('padding-right') || '0px';
    paddingLeft = parseFloat(paddingLeft.replace('px', ''));
    paddingRight = parseFloat(paddingRight.replace('px', ''));
    cell.copyElt.addStyle('width', newWidth + 'px');
    cell.copyElt.addStyle('--as-force-min-width', newWidth - paddingLeft - paddingRight - 1 + 'px');
    cell.elt.addClass('as-col-width-auto');
    cell.copyElt.addClass('as-col-width-auto');
    cell.elt.addStyle('--as-force-min-width', newWidth - paddingLeft - paddingRight - 1 + 'px');
    if (cell._copyElt1) {
      cell._copyElt1.addStyle('--as-force-min-width', newWidth - paddingLeft - paddingRight - 1 + 'px');
      cell._copyElt1.addClass('as-col-width-auto');
    }
    if (cell._copyElt2) {
      cell._copyElt2.addClass('as-col-width-auto');
      cell._copyElt2.addStyle('--as-force-min-width', newWidth - paddingLeft - paddingRight - 1 + 'px');
    }
  });
};
LayoutController.prototype.handleDisplay = function () {
  if (!this.elt.hasClass('as-width-match-parent')) {
    return;
  }
  var tableWidth = this.elt.table.elt.getBoundingClientRect().width;
  var viewportWidth = this.elt.$viewport.getBoundingClientRect().width;
  if (tableWidth < viewportWidth - 17 && !this.elt.hasClass('as-table-layout-fixed')) {
    this.elt.table.elt.addStyle('width', viewportWidth - 17 + 'px');
  }
  if (!this.elt.hasClass('as-table-layout-fixed')) {
    this.elt.table.elt.addStyle('min-width', viewportWidth - 17 + 'px');
  }
};
LayoutController.prototype.onAttached = function () {
  var _this8 = this;
  _ResizeSystem["default"].updateUp(this.elt.parentElement);
  this.update();
  if (this.elt.table) {
    this.handleDisplay();
    this.handleMinWidth();
    this.elt.table.updateCopyEltSize();
    this.updateOverflowStatus();
    this.elt.$vscrollbar.once('scroll', function () {
      // return;
      setTimeout(function () {
        if (_this8.elt.table.body.rows.length === 0) return;
        var tableId = _this8.elt.id;
        var rows = _this8.elt.table.header.rows;
        if (!rows || rows.length === 0) return;
        var changed = false;
        var colDict = {};
        rows.forEach(function (row) {
          var cells = row.cells;
          if (!cells) return;
          cells.forEach(function (cell) {
            var colId = cell.data.id;
            var bound;
            if (cell.colspan > 1) return;
            if (!colId && !colDict[cell.idx]) {
              //local style
              bound = cell.copyElt.getBoundingClientRect();
              if (bound.width > 0) {
                _this8.elt.css.setProperty("#".concat(_this8.elt.id, " th[data-col-idx=\"").concat(cell.idx, "\"]:not(colspan)"), 'width', bound.width + 'px').commit();
              }
              return;
            }
            if (!manager.hasColSize(tableId, colId)) {
              bound = cell.copyElt.getBoundingClientRect();
              if (bound.width) {
                manager.setColWidth(tableId, colId, bound.width);
                changed = true;
              }
            }
          });
        });
        if (changed) manager.commit();
      }, 100);
    });
  }
};
LayoutController.prototype.update = function () {
  var _this9 = this;
  var stWidth = this.elt.extendStyle.width;
  var psWidth = (0, _attribute.parseMeasureValue)(this.elt.extendStyle.width);
  var stHeight = this.elt.extendStyle.height;
  var psHeight = (0, _attribute.computeMeasureExpression)(stHeight, {
    elt: this,
    parentSize: this.elt.parentElement ? this.elt.parentElement.getBoundingClientRect().height : 0
  });
  var cpStyle = getComputedStyle(this.elt);
  var psMaxHeight = (0, _attribute.parseMeasureValue)(cpStyle.getPropertyValue('max-height'));
  var psMinWidth = (0, _attribute.parseMeasureValue)(cpStyle.getPropertyValue('min-width'));
  var parentElt = this.elt.parentElement;
  var parentCpStyle;
  var parentBound;
  var screenSize;
  var singleView = function () {
    var ctn = _this9.elt.parentElement && _this9.elt.parentElement.parentElement;
    if (!ctn) return false;
    if (!ctn.hasClass || !ctn.hasClass('absol-single-page-scroller-viewport')) return false;
    if (ctn.lastChild === ctn.firstChild && ctn.firstChild === _this9.elt) return singleView;
  }();
  var singleViewBound;
  var getMaxBoundHeight = function getMaxBoundHeight() {
    var mxH = Infinity;
    if (_this9.elt.hasClass('as-adapt-infinity-grow')) return Infinity;
    if (!psHeight) {} else if (psHeight.unit === 'px') {
      mxH = psHeight.value;
    } else if (psHeight.unit === '%' && parentElt) {
      parentBound = parentBound || parentElt.getBoundingClientRect();
      mxH = parentBound.height * psHeight.value / 100;
    } else if (psHeight.unit === 'vh') {
      screenSize = screenSize || (0, _Dom.getScreenSize)();
      mxH = screenSize.height * psHeight.value / 100;
    }
    if (psMaxHeight && psMaxHeight.unit === 'px') {
      mxH = Math.min(mxH, psMaxHeight.value);
    }
    return mxH;
  };
  var getMinInnerWidth = function getMinInnerWidth() {
    var mnWidth = 0;
    var paddingLeft, paddingRight;
    if (!psWidth) {} else if (psWidth.unit === 'px') {
      mnWidth = psWidth.value;
    } else if (psWidth.unit === '%' && parentElt) {
      parentBound = parentBound || parentElt.getBoundingClientRect();
      parentCpStyle = parentCpStyle || getComputedStyle(parentElt);
      paddingLeft = parseFloat((parentCpStyle.getPropertyValue('padding-left') || '0px').replace('px', ''));
      paddingRight = parseFloat((parentCpStyle.getPropertyValue('padding-right') || '0px').replace('px', ''));
      mnWidth = (parentBound.width - paddingLeft - paddingRight) * psWidth.value / 100;
    } else if (psWidth.unit === 'vw') {
      screenSize = screenSize || (0, _Dom.getScreenSize)();
      mnWidth = screenSize.width * psWidth.value / 100;
    }
    if (psMinWidth && psMinWidth.unit === 'px') {
      mnWidth = Math.max(mnWidth, psMinWidth.value);
    }
    return mnWidth;
  };
  var bound, tbBound;
  var maxHeight;
  if (!this.elt.table) return;
  if (stWidth === 'auto') {
    //table max-width is 100% of parentWidth
    this.elt.table.elt.addStyle('min-width', Math.max(getMinInnerWidth() - 17, 0) + 'px');
  } else if (psWidth.unit === 'px' || psWidth.unit === 'vw' || psWidth.unit === '%') {
    this.elt.table.elt.addStyle('min-width', getMinInnerWidth() - 17 + 'px');
    bound = this.elt.getBoundingClientRect();
    if (bound.width > 0 && !this.elt.table.body.offset) {
      //if overflowY this.elt.table.body.offset >0
      tbBound = this.elt.table.elt.getBoundingClientRect();
      // if (singleView) {
      //     // singleViewBound =
      // }
      // if (this.elt.parentElement && this.elt.parentElement.)
      maxHeight = getMaxBoundHeight();
      if (!maxHeight || maxHeight.value >= tbBound) {
        this.elt.table.elt.addStyle('min-width', getMinInnerWidth() + 'px');
        //isOverflowY = false;
      } else {
        //isOverflowY = true;
      }
    }
  }
};
LayoutController.prototype.onResize = function () {
  this.update();
  this.updateOverflowStatus();
  this.updateScrollbarStatus();
  if (this.elt.table) {
    this.elt.table.updateCopyEltSize();
    this.updateLines();
  }
};
LayoutController.prototype.updateOverflowStatus = function () {
  var contentBound = this.elt.table ? this.elt.table.elt.getBoundingClientRect() : {
    width: 0,
    height: 0
  };
  var bound = this.elt.getBoundingClientRect();
  var cpStyle = getComputedStyle(this.elt);
  var psMaxHeight = (0, _attribute.parseMeasureValue)(cpStyle.getPropertyValue('max-height'));
  if (bound.width < contentBound.width) {
    this.elt.addClass('as-overflow-x');
  } else {
    this.elt.removeClass('as-overflow-x');
    this.elt.$space.removeStyle('left');
  }
  if (this.elt.hasClass('as-adapt-infinity-grow')) {
    this.elt.removeClass('as-overflow-y');
    this.elt.$space.removeStyle('top');
  } else if (bound.height < contentBound.height || psMaxHeight && psMaxHeight.unit === 'px' && bound.width < contentBound.width + 17 && psMaxHeight.value < contentBound.height + 18) {
    this.elt.addClass('as-overflow-y');
  } else {
    this.elt.removeClass('as-overflow-y');
    this.elt.$space.removeStyle('top');
  }
  this.elt.addStyle('--dt-content-height', contentBound.height + 'px');
  this.elt.addStyle('--dt-content-width', contentBound.width + 'px');
};
LayoutController.prototype.updateScrollbarStatus = function () {
  //todo: not overflow y
  if (!this.elt.table) return;
  var childNodes = this.elt.table.body.elt.childNodes;
  var vBound = this.elt.$viewport.getBoundingClientRect();
  var headBound = this.elt.table.header.elt.getBoundingClientRect();
  var availableHeight = vBound.height - headBound.height;
  var rBound;
  var outer = 0;
  var sHeight = 1; //border of last row
  for (var i = 0; i < childNodes.length; ++i) {
    rBound = childNodes[childNodes.length - 1 - i].getBoundingClientRect();
    sHeight += rBound.height;
    if (sHeight >= availableHeight) {
      outer = i + (1 - (sHeight - availableHeight) / rBound.height);
      break;
    }
  }
  this.elt.$vscrollbar.outerHeight = outer;
  this.elt.$vscrollbar.innerHeight = this.elt.table.body.curentMode.viewedRows.length;
  this.elt.$vscrollbar.innerOffset = this.elt.table.body.curentMode.offset;
  var viewportBound = this.elt.$viewport.getBoundingClientRect();
  var tableBound = this.elt.table.elt.getBoundingClientRect();
  this.elt.$hscrollbar.innerWidth = tableBound.width;
  this.elt.$hscrollbar.outerWidth = viewportBound.width;
  if (this.elt.$hscrollbar.innerOffset + this.elt.$hscrollbar.outerWidth > this.elt.$hscrollbar.innerWidth) {
    this.elt.$hscrollbar.innerOffset = Math.max(0, this.elt.$hscrollbar.innerWidth - this.elt.$hscrollbar.outerWidth);
    this.elt.$hscrollbar.emit('scroll');
  }
  if (tableBound.width < viewportBound.width) {
    this.elt.$vscrollbar.addStyle('right', viewportBound.width - tableBound.width + 'px');
  } else {
    this.elt.$vscrollbar.removeStyle('right');
  }

  // this.$vscrollbar
};

LayoutController.prototype.updateLines = function () {
  var fixXBound, headerBound;
  if (this.elt.hasClass('as-overflow-x') && this.elt.hasClass('as-has-fixed-col')) {
    fixXBound = this.elt.$fixedXCtn.getBoundingClientRect();
    this.elt.addStyle('--dt-fixed-x-width', fixXBound.width + 'px');
  }
  if (this.elt.hasClass('as-overflow-y')) {
    headerBound = this.elt.$fixedYCtn.firstChild.getBoundingClientRect();
    this.elt.addStyle('--dt-header-height', headerBound.height + 'px');
  }
};
LayoutController.prototype.ev_hScrollbarScroll = function (event) {
  this.elt.$space.addStyle('left', -this.elt.$hscrollbar.innerOffset + 'px');
  this.elt.$fixedYCtn.addStyle('left', -this.elt.$hscrollbar.innerOffset + 'px');
  this.elt.$viewport.emit('scroll');
};
LayoutController.prototype.ev_vScrollbarScroll = function () {
  if (!this.elt.table || !this.elt.table.body) return;
  this.elt.table.body.offset = this.elt.$vscrollbar.innerOffset;
  this.elt.$viewport.emit('scroll');
};
LayoutController.prototype.ev_dragStart = function (event) {
  var isOverflowY = this.elt.hasClass('as-overflow-y');
  var isOverflowX = this.elt.hasClass('as-overflow-x');
  var dir = event.currentPoint.sub(event.startingPoint);
  if (isOverflowY && Math.abs(dir.y) > Math.abs(dir.x)) {
    this.scrollingDir = new _Vec["default"](0, 1);
    event.preventDefault();
  } else if (isOverflowX && Math.abs(dir.y) < Math.abs(dir.x)) {
    this.scrollingDir = new _Vec["default"](1, 0);
    event.preventDefault();
  } else {
    this.scrollingDir = _Vec["default"].ZERO;
  }
  this.scrollingStartOffset = new _Vec["default"](this.elt.$hscrollbar.innerOffset, this.elt.$vscrollbar.innerOffset);
};
LayoutController.prototype.ev_drag = function (event) {
  var changed = false;
  var dir = event.currentPoint.sub(event.startingPoint);
  var newOffset = new _Vec["default"](0, 0);
  if (this.scrollingDir.x !== 0) {
    newOffset.x = Math.max(0, Math.min(this.elt.$hscrollbar.innerWidth - this.elt.$hscrollbar.outerWidth, this.scrollingStartOffset.x - dir.x));
    if (this.elt.$hscrollbar.innerOffset !== newOffset.x) {
      changed = true;
      this.elt.$hscrollbar.innerOffset = newOffset.x;
      this.elt.$hscrollbar.emit('scroll');
    }
  } else if (this.scrollingDir.y !== 0) {
    newOffset.y = Math.max(0, Math.min(this.elt.$vscrollbar.innerHeight - this.elt.$vscrollbar.outerHeight, this.scrollingStartOffset.y - dir.y / 40));
    if (this.elt.$vscrollbar.innerOffset !== newOffset.y) {
      changed = true;
      this.elt.$vscrollbar.innerOffset = newOffset.y;
      this.elt.$vscrollbar.emit('scroll');
    }
  }
  if (changed) event.preventDefault();
};
LayoutController.prototype.ev_dragEnd = function (event) {};
LayoutController.prototype.ev_viewportScroll = function (event) {
  if (this.elt.$viewport.scrollLeft !== 0) {
    this.elt.$hscrollbar.innerOffset += this.elt.$viewport.scrollLeft;
    this.elt.$viewport.scrollLeft = 0;
    this.elt.$hscrollbar.emit('scroll');
  }
  if (this.elt.$viewport.scrollTop !== 0) {
    this.elt.$vscrollbar.innerOffset += this.elt.$viewport.scrollTop / 30; //todo: better solution
    this.elt.$viewport.scrollTop = 0;
    this.elt.$vscrollbar.emit('scroll');
  }
};

/***
 *
 * @param {DynamicTable} elt
 * @constructor
 */
function PointerController(elt) {
  var _this10 = this;
  Object.keys(this.constructor.prototype).forEach(function (key) {
    if (key.startsWith('ev_')) _this10[key] = _this10[key].bind(_this10);
  });
  /***
   *
   * @type {DynamicTable}
   */
  this.elt = elt;
  this.elt.$viewport.hangon = 5;
  this.elt.$viewport.on('draginit', this.ev_dragInit);
  this.elt.$viewport.on('dragstart', this.ev_dragStart);
  this.elt.$viewport.on('drag', this.ev_drag);
  this.elt.$viewport.on('dragend', this.ev_dragEnd);
  this.destHandler = null;
}
PointerController.prototype.isInDragZone = function (elt) {
  while (elt && elt !== this.elt) {
    if (elt.classList.contains('as-drag-zone')) return true;
    elt = elt.parentElement;
  }
  return false;
};
PointerController.prototype.isInInput = function (elt) {
  while (elt) {
    if (elt.tagName === 'INPUT') return true;
    if (elt.tagName === 'TD') return false;
    var clazz = elt.getAttribute('class') || '';
    if (clazz.indexOf('input') >= 0) return true;
    if (clazz.indexOf('input') >= 0) return true;
    if (clazz.indexOf('menu') >= 0) return true;
    elt = elt.parentElement;
  }
  return false;
};
PointerController.prototype.isInColResizer = function (elt) {
  return !!(elt.hasClass && elt.hasClass('as-dt-header-cell-resizer'));
};
PointerController.prototype.ev_dragInit = function (event) {
  if (this.isInDragZone(event.target)) {
    event.preventDefault();
    this.destHandler = this.elt.rowDragCtrl;
  }
  if (this.isInColResizer(event.target)) {
    event.preventDefault();
    this.destHandler = this.elt.colSizeCtrl;
  } else if (this.isInInput(event.target)) {
    event.cancel();
    return;
  } else if (event.isTouch) {
    // event.preventDefault();//todo: check
  }
};
PointerController.prototype.ev_dragStart = function (event) {
  var dir = event.currentPoint.sub(event.startingPoint).normalized();
  var ox = new _Vec["default"](1, 0);
  var oy = new _Vec["default"](0, 1);
  if (this.destHandler) {
    event.preventDefault && event.preventDefault();
    this.destHandler.ev_dragStart(event);
  } else if (event.isTouch && (Math.abs(dir.dot(ox)) < 0.3 || Math.abs(dir.dot(oy)) < 0.3)) {
    event.preventDefault && event.preventDefault();
    this.destHandler = this.elt.layoutCtrl;
    this.destHandler.ev_dragStart(event);
  } else {
    this.destHandler = null;
  }
};
PointerController.prototype.ev_drag = function (event) {
  if (this.destHandler) {
    event.preventDefault && event.preventDefault();
    this.destHandler.ev_drag(event);
  }
};
PointerController.prototype.ev_dragEnd = function (event) {
  if (this.destHandler) {
    event.preventDefault && event.preventDefault();
    this.destHandler.ev_dragEnd(event);
  }
  this.destHandler = null;
};
PointerController.prototype.ev_dragDeinit = function (event) {};

/***
 *
 * @param {DynamicTable} elt
 * @constructor
 */
function ColSizeController(elt) {
  this.elt = elt;
  this.colId = null; //number: col index, string: ident
  this.startingBound = null;
  this.cellElt = null;
  this.cell = null;
}
ColSizeController.prototype.onAttached = function () {};
ColSizeController.prototype.onAdapter = function () {};
ColSizeController.prototype.ev_dragStart = function (event) {
  var _this11 = this;
  if (!this.elt.isDescendantOf(document.body)) return;
  this.dragOK = true;
  this.colId = event.target.parentElement.attr('data-col-id') || parseInt(event.target.parentElement.attr('data-col-idx'));
  this.cell = this.elt.table.header.rows[0].cells.find(function (cell) {
    return cell.data.id === _this11.colId || cell.idx === _this11.colId;
  });
  if (!this.cell) {
    this.dragOK = false;
    return;
  }
  this.cellElt = this.cell.copyElt;
  this.startingBound = _Rectangle["default"].fromClientRect(this.cellElt.getBoundingClientRect());
};
ColSizeController.prototype.ev_drag = function (event) {
  if (!this.dragOK) return;
  if (!this.elt.isDescendantOf(document.body)) return;
  var newWidth = this.startingBound.width + event.currentPoint.sub(event.startingPoint).x;
  this.cellElt.addStyle('width', newWidth + 'px');
  this.elt.table.updateCopyEltSize();

  //todo: split code
  var viewportBound = this.elt.$viewport.getBoundingClientRect();
  var tableBound = this.elt.table.elt.getBoundingClientRect();
  if (tableBound.width < viewportBound.width) {
    this.elt.$vscrollbar.addStyle('right', viewportBound.width - tableBound.width + 'px');
  } else {
    this.elt.$vscrollbar.removeStyle('right');
  }
  this.elt.addStyle('--dt-content-height', tableBound.height + 'px');
  this.elt.addStyle('--dt-content-width', tableBound.width + 'px');
};
ColSizeController.prototype.ev_dragEnd = function (event) {
  var _this12 = this;
  if (!this.dragOK) return;
  if (!this.cell) return;
  if (!this.elt.isDescendantOf(document.body)) return;
  if (typeof this.colId === "string") {
    if (this.cell.colspan === 1) manager.commitColWidth(this.elt, this.elt.id, this.cell.data.id, this.cellElt.getBoundingClientRect().width, true);
    this.notifyColResize(event);
  } else {
    if (this.cell.colspan === 1) this.elt.css.setProperty("#".concat(this.elt.id, " th[data-col-idx=\"").concat(this.colId, "\"]:not([colspan])"), 'width', this.cellElt.getBoundingClientRect().width + 'px').commit();
  }
  this.elt.requestUpdateSize();
  setTimeout(function () {
    if (!_this12.cellElt.isDescendantOf(document.body)) return;
    _this12.cellElt.removeStyle('width');
    _this12.elt.requestUpdateSize();
  }, 150);
};
ColSizeController.prototype.getColWidth = function () {
  var res = {};
  this.elt.table.header.rows[0].cells.forEach(function (cell) {
    var id = cell.data.id;
    if (typeof id === "string" || typeof id === "number") id = '' + id;
    if (!id) return;
    Object.defineProperty(res, id, {
      enumerable: true,
      get: function get() {
        return cell.copyElt.getBoundingClientRect().width;
      }
    });
  });
  return res;
};
ColSizeController.prototype.setColWidth = function (colId, value) {
  var cell = this.elt.table.header.rows[0].cells.find(function (cell) {
    return cell.data.id === colId || cell.idx === colId;
  });
  cell.copyElt.removeStyle('width');
  if (typeof colId === "string") {
    if (cell.colspan !== 1) manager.commitColWidth(this.elt, this.elt.id, colId, value, true);
  } else {
    this.elt.css.setProperty("#".concat(this.elt.id, " th[data-col-idx=\"").concat(colId, "\"]:not([colspan])"), 'width', value + 'px').commit();
  }
  this.elt.requestUpdateSize();
};
ColSizeController.prototype.notifyColResize = function (originalEvent) {
  var _this13 = this;
  var event = {
    type: 'colresize',
    target: this,
    colId: this.colId,
    width: this.cellElt.getBoundingClientRect().width,
    originalEvent: originalEvent.originalEvent || event
  };
  var colWidth;
  Object.defineProperty(event, 'colWidth', {
    get: function get() {
      if (colWidth) return colWidth;
      colWidth = _this13.getColWidth();
      return colWidth;
    }
  });
  this.elt.emit('colresize', event, this);
};

/**
 * new version
 * @param {DynamicTable} elt
 * @constructor
 */
function RowDragController(elt) {
  this.elt = elt;
  this._isDragging = false;
}
RowDragController.prototype._findRow = function (cElt) {
  while (cElt && cElt !== this.elt) {
    if (cElt.dtBodyRow) {
      return cElt.dtBodyRow;
    }
    cElt = cElt.parentElement;
  }
  return null;
};
RowDragController.prototype._getZIndex = function () {
  var e = this.elt.$fixedXYCtn;
  return (0, _utils.findMaxZIndex)(e);
};
RowDragController.prototype._updateClass = function () {
  var _this14 = this;
  this.row.body.rows.forEach(function (row, i) {
    if (!row._elt) return;
    if (_this14.newIdx < _this14.rowIdx) {
      if (i < _this14.newIdx || i >= _this14.rowIdx) {
        row._elt.addStyle('transform', "translate(0, 0)");
      } else if (i < _this14.rowIdx) {
        row._elt.addStyle('transform', "translate(0, ".concat(_this14.rowRect.height, "px)"));
      }
    } else if (_this14.newIdx > _this14.rowIdx) {
      if (i <= _this14.rowIdx || i > _this14.newIdx) {
        row._elt.addStyle('transform', "translate(0, 0)");
        row._elt._transformY = _this14.rowRect.height;
      } else if (i <= _this14.newIdx) {
        row._elt.addStyle('transform', "translate(0, ".concat(-_this14.rowRect.height, "px)"));
        row._elt._transformY = -_this14.rowRect.height;
      }
    } else {
      row._elt.addStyle('transform', "translate(0, 0)");
      row._elt._transformY = 0;
    }
  });
};
RowDragController.prototype._computeRowBound = function () {
  this.firstBoundIdx = this.elt.rowIndexOf(this.row.body.elt.firstChild);
  this.bounds = Array.prototype.map.call(this.row.body.elt.childNodes, function (elt, i) {
    var rect = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    rect.y -= elt._transformY || 0;
    return rect;
  });
};
RowDragController.prototype._computeNewIdx = function () {
  var firstBound = _Rectangle["default"].fromClientRect(this.row.body.elt.firstChild.getBoundingClientRect());
  var delta = firstBound.A().sub(this.bounds[0].A());
  var cBound = _Rectangle["default"].fromClientRect(this.ctn.getBoundingClientRect());
  var y0 = this.bounds[0].y + delta.y;
  var nearest = Infinity;
  this.newIdx = this.firstBoundIdx;
  var cur;
  var S = [];
  S['-1'] = 0;
  var i, y;
  for (i = 0; i < this.bounds.length; ++i) {
    S.push(S[i - 1] + this.bounds[i].height);
  }
  for (i = 0; i < this.bounds.length; ++i) {
    cur = this.firstBoundIdx + i;
    if (cur <= this.rowIdx) {
      y = y0 + S[i - 1];
    } else {
      y = y0 + S[i] - cBound.height;
    }
    if (nearest > Math.abs(cBound.y - y) + 0.1 && this.row.body.rows[cur].draggable) {
      nearest = Math.abs(cBound.y - y);
      this.newIdx = cur;
    }
  }
};
RowDragController.prototype.ev_dragStart = function (event) {
  if (this.elt.table.body.curentMode.name !== 'normal') return;
  this.elt.addClass('as-row-dragging');
  this.row = this._findRow(event.target);
  this.body = this.row.body;
  this.rowIdx = this.elt.rowIndexOf(this.row);
  this.newIdx = this.rowIdx;
  this.clonedTable = this._cloneTableRow(this.row);
  this.ctn = (0, _ACore._)({
    "class": 'as-dt-body-row-cloned-ctn',
    style: {
      zIndex: this._getZIndex() + 20,
      cursor: 'move',
      opacity: 0.9
    },
    child: (0, _ACore.$)(this._cloneTableRow(this.row)).removeStyle('transform')
  }).addTo(document.body);
  this.row.elt.addClass('as-dragging');
  this.rowRect = _Rectangle["default"].fromClientRect(this.row.elt.getBoundingClientRect());
  this.elt.addStyle('--dt-dragging-row-height', this.rowRect.height);
  this.viewportRect = _Rectangle["default"].fromClientRect(this.elt.$viewport.getBoundingClientRect());
  this.headerRect = _Rectangle["default"].fromClientRect(this.elt.$fixedYCtn.getBoundingClientRect());
  this.pointeroffset = event.startingPoint.sub(this.rowRect.A());
  this.ctn.addStyle({
    top: this.rowRect.y + 'px',
    left: this.rowRect.x + 'px'
  });
  this._computeRowBound();
  this._computeNewIdx();
  this._updateClass();
  this._isDragging = true;
};
RowDragController.prototype.ev_rowRenderChange = function () {
  if (!this._isDragging) return;
  this._computeRowBound();
  this._computeNewIdx();
  this._computeNewIdx();
  this._updateClass();
};

/**
 *
 * @param {DTBodyRow}row
 * @private
 */
RowDragController.prototype._cloneTableRow = function (row) {
  var tableElt = (0, _ACore.$)(row.body.table.elt.cloneNode(false)).addStyle({
    tableLayout: 'fixed',
    width: row.body.table.elt.getBoundingClientRect().width + 'px'
  });
  var tBodyElt = (0, _ACore.$)(row.body.elt.cloneNode(false));
  tableElt.addChild(tBodyElt);
  var rowElt = (0, _ACore.$)(this.row.elt.cloneNode(false)).addStyle({
    height: this.row.elt.getBoundingClientRect().height + 'px',
    backgroundColor: this.row.elt.getComputedStyleValue('background-color')
  });
  tBodyElt.addChild(rowElt);
  this.row.cells.forEach(function (cell) {
    var width = cell.elt.getBoundingClientRect().width;
    (0, _ACore.$)(cell.elt.cloneNode(true)).addStyle({
      width: width + 'px'
    }).addTo(rowElt);
  });
  return tableElt;
};
RowDragController.prototype.ev_drag = function (event) {
  var _this15 = this;
  var newY = event.currentPoint.sub(this.pointeroffset).y;
  this.ctn.addStyle('top', newY + 'px');
  clearTimeout(this._dragOutTO);
  var ctnBound = _Rectangle["default"].fromClientRect(this.ctn.getBoundingClientRect());
  var onDragOutPositive = function onDragOutPositive() {
    var dy = ctnBound.D().y - _this15.viewportRect.D().y;
    dy /= 1000 / 60 / 4 * _this15.rowRect.height;
    dy = Math.min(dy, _this15.elt.$vscrollbar.innerHeight - _this15.elt.$vscrollbar.outerHeight - _this15.elt.$vscrollbar.innerOffset);
    if (dy > 0.5) {
      //dy may be very small
      _this15.elt.$vscrollbar.innerOffset += dy;
      _this15.elt.$vscrollbar.emit('scroll');
    }
    _this15._computeNewIdx();
    _this15._updateClass();
    clearTimeout(_this15._dragOutTO);
    _this15._dragOutTO = setTimeout(onDragOutPositive, 33);
  };
  var onDragOutNegative = function onDragOutNegative() {
    var dy = ctnBound.y - _this15.headerRect.D().y;
    dy /= 1000 / 60 / 4 * _this15.rowRect.height;
    dy = Math.max(dy, -_this15.elt.$vscrollbar.innerOffset);
    if (dy < -0.5) {
      //dy may be very small
      _this15.elt.$vscrollbar.innerOffset += dy;
      _this15.elt.$vscrollbar.emit('scroll');
    }
    _this15._computeNewIdx();
    _this15._updateClass();
    clearTimeout(_this15._dragOutTO);
    _this15._dragOutTO = setTimeout(onDragOutNegative, 33);
  };
  if (this.viewportRect.D().y < ctnBound.D().y) {
    this._dragOutTO = setTimeout(onDragOutPositive, 1000 / 60);
  } else if (this.headerRect.D().y > ctnBound.y) {
    this._dragOutTO = setTimeout(onDragOutNegative, 100 / 60);
  } else {
    this._computeNewIdx();
    this._updateClass();
  }
};
RowDragController.prototype.ev_dragEnd = function (event) {
  this.elt.addClass('as-row-dragging');
  this.elt.removeClass('as-row-dragging');
  this.elt.removeStyle('--dragging-row-height');
  this.row.elt.removeClass('as-dragging');
  this._isDragging = false;
  clearTimeout(this._dragOutTO);
  this.ctn.remove();
  this.row.body.rows.forEach(function (row) {
    if (row._elt) {
      row._elt.removeStyle('transform');
      row._elt._transformY = 0;
    }
  });
  if (this.newIdx !== this.rowIdx) {
    this.row.body.moveRowAt(this.rowIdx, this.newIdx);
    var eventData = {
      type: 'orderchange',
      target: this.row,
      from: this.rowIdx,
      to: this.newIdx,
      originalEvent: event,
      row: this.row,
      data: this.row.data
    };
    if (this.row.data.on && this.row.data.on.orderchange) {
      this.row.data.on.orderchange.call(this.row, eventData, this.row);
    }
    this.elt.emit('orderchange', eventData, this.body.table.wrapper);
  }
};
function VirtualPageSelector(elt) {
  this.elt = elt;
}
VirtualPageSelector.prototype.getSelectedPage = function () {
  return this.elt.$vscrollbar.innerOffset / 25;
};
VirtualPageSelector.prototype.selectPage = function (value) {
  this.elt.$vscrollbar.innerOffset = value * 25;
  this.elt.$vscrollbar.emit('scroll');
};

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _utils = __webpack_require__(84512);
var _catalog = _interopRequireDefault(__webpack_require__(82398));
var _MessageInput = _interopRequireDefault(__webpack_require__(42049));
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 thumbnailCache = {};
var dbSync;
var getDb = function getDb() {
  dbSync = dbSync || new Promise(function (resolve) {
    var request = window.indexedDB.open('FileThumbnailDB', 1);
    request.onupgradeneeded = function (event) {
      var db = event.target.result;
      db.createObjectStore("files", {});
    };
    request.onsuccess = function (event) {
      var db = event.target.result;
      var request1;
      if (localStorage.getItem('FileThumbnail_clear_cache') === '1') {
        localStorage.removeItem('FileThumbnail_clear_cache');
        request1 = db.transaction('files', 'readwrite').objectStore('files').clear();
        request1.onsuccess = function () {
          resolve(db);
        };
        request1.onerror = function () {
          resolve(null);
        };
      } else resolve(db);
    };
    request.onerror = function () {
      resolve(null);
    };
  });
  return dbSync;
};
var dbGetItem = function dbGetItem(key) {
  return getDb().then(function (db) {
    if (!db) return null;
    var request = db.transaction('files').objectStore('files').get(key);
    return new Promise(function (resolve) {
      request.onsuccess = function (event) {
        var data = event.target.result;
        resolve(data);
      };
      request.onerror = function () {
        resolve(null);
      };
    });
  });
};
var dbSetItem = function dbSetItem(key, value) {
  return getDb().then(function (db) {
    if (!db) return null;
    var objectStore = db.transaction('files', 'readwrite').objectStore('files');
    var request = objectStore.put(value, key);
    return new Promise(function (resolve) {
      request.onsuccess = function (event) {
        var data = event.target.result;
        resolve(data);
      };
      request.onerror = function () {
        resolve(null);
      };
    });
  });
};
document.addEventListener('keydown', function (event) {
  if (event.ctrlKey && event.key === 'F5') {
    localStorage.setItem('FileThumbnail_clear_cache', '1');
  }
});
var url2small = function url2small(url) {
  return new Promise(function (resolve) {
    var image = new Image();
    image.crossOrigin = 'anonymous';
    image.crossorigin = 'anonymous';
    image.src = url;
    image.onload = function () {
      var now = new Date();
      if (image.naturalWidth <= 200 && image.naturalHeight < 200) {
        resolve(url);
        return;
      }
      var scale = Math.min(200 / image.naturalWidth, 200 / image.naturalHeight);
      var width = Math.round(image.naturalWidth * scale);
      var height = Math.round(image.naturalHeight * scale);
      var canvas = document.createElement('canvas');
      canvas.width = width;
      canvas.height = height;
      var ctx = canvas.getContext('2d');
      for (var i = 0; i < 20; ++i) {
        for (var j = 0; j < 20; ++j) {
          ctx.fillStyle = (i ^ j) & 1 ? '#BBBBBB' : '#FFFFFF';
          ctx.fillRect(i * 10, j * 10, 10, 10);
        }
      }
      ctx.drawImage(image, 0, 0, width, height);
      resolve(canvas.toDataURL('image/jpeg', 0.5));
    };
  });
};
var getThumbnailUrl = function getThumbnailUrl(url) {
  if (!thumbnailCache[url]) {
    thumbnailCache[url] = dbGetItem(url).then(function (result) {
      if (!result) {
        result = url2small(url).then(function (canvasResult) {
          if (canvasResult) dbSetItem(url, canvasResult);
          return canvasResult;
        });
      }
      return result;
    });
  }
  return thumbnailCache[url];
};
function FileThumbnail() {
  this._value = null;
  this.$fileName = (0, _ACore.$)('.as-file-thumbnail-file-name', this);
  this.$bg = (0, _ACore.$)('.as-file-thumbnail-background', this);
  /***
   * @type {string}
   * @name fileName
   * @memberOf FileThumbnail#
   */
  /***
   * @type {string|null}
   * @name fileType
   * @memberOf FileThumbnail#
   */
  /***
   * @type {string|null}
   * @name thumbnail
   * @memberOf FileThumbnail#
   */
  /***
   * @type {boolean}
   * @name isDirectory
   * @memberOf FileThumbnail#
   */
}

FileThumbnail.tag = 'FileThumbnail'.toLowerCase();
FileThumbnail.render = function () {
  return (0, _ACore._)({
    "class": 'as-file-thumbnail',
    child: [{
      "class": 'as-file-thumbnail-background'
    }, {
      "class": 'as-file-thumbnail-file-name',
      child: []
    }, {
      "class": 'as-file-thumbnail-check',
      child: 'span.mdi.mdi-check-bold'
    }]
  });
};
FileThumbnail.prototype._updateFileName = function () {
  var fileName = this.fileName;
  if (!fileName) {
    return;
  }
  var parts;
  var matched;
  matched = fileName.match(/([^_+\-.]+)|([_+\-.]+)/g);
  parts = matched || [];
  if (parts.length > 2 && parts[parts.length - 2] === '.') {
    parts[parts.length - 2] += parts[parts.length - 1];
    parts.pop();
  }
  parts = parts.map(function (txt) {
    return (0, _ACore._)({
      tag: 'span',
      child: {
        text: txt
      }
    });
  });
  this.$fileName.clearChild().addChild(parts);
};
FileThumbnail.prototype._updateThumbnail = function () {
  var _this = this;
  var previewUrl;
  var thumbnail = this.thumbnail;
  var fileType = this.isDirectory ? 'folder' : this.fileType;
  if (thumbnail) {
    if (typeof thumbnail === "string") {
      this._previewUrl = thumbnail;
      getThumbnailUrl(thumbnail).then(function (smallerUrl) {
        if (thumbnail !== _this._previewUrl) return;
        _this.$bg.addStyle('backgroundImage', 'url("' + smallerUrl + '")');
      });
    } else if (thumbnail instanceof Blob || thumbnail instanceof File) {
      thumbnail.url = thumbnail.url || URL.createObjectURL(thumbnail);
      this._previewUrl = thumbnail.url;
    }
  }
  if (_catalog["default"].indexOf(fileType) >= 0) {
    previewUrl = _MessageInput["default"].iconAssetRoot + '/' + fileType + '.svg';
  } else {
    previewUrl = _MessageInput["default"].iconAssetRoot + '/' + 'blank' + '.svg';
  }
  if (previewUrl) {
    this.$bg.addStyle('backgroundImage', 'url("' + encodeURI(previewUrl) + '")');
  } else {
    this.$bg.removeStyle('backgroundImage');
  }
};
FileThumbnail.property = {};
FileThumbnail.property.value = {
  set: function set(value) {
    value = value || null;
    this._value = value;
    this._valueInfo = (0, _utils.fileInfoOf)(value);
    this._updateFileName();
    this._updateThumbnail();
  },
  get: function get() {
    return this._value;
  }
};
FileThumbnail.property.fileName = {
  set: function set(value) {
    this._fileName = value;
    this._updateFileName();
  },
  get: function get() {
    return this._fileName || this._valueInfo && this._valueInfo.name || null;
  }
};
FileThumbnail.property.fileType = {
  set: function set(value) {
    this._fileType = value;
    this._updateThumbnail();
  },
  /***
   * @this FileInputBox
   * @return {*}
   */
  get: function get() {
    if (this.isDirectory) return null;
    return this._fileType || this._valueInfo && this._valueInfo.type || null;
  }
};
FileThumbnail.property.checked = {
  set: function set(value) {
    if (value) {
      this.addClass('as-checked');
    } else {
      this.removeClass('as-checked');
    }
  },
  get: function get() {
    return this.hasClass('as-checked');
  }
};
FileThumbnail.property.thumbnail = {
  set: function set(value) {
    this._thumbnail = value || null;
    this._updateThumbnail();
  },
  get: function get() {
    return this._thumbnail;
  }
};
FileThumbnail.property.isDirectory = {
  set: function set(value) {
    if (value) {
      this.addClass('as-is-directory');
    } else {
      this.removeClass('as-is-directory');
    }
  },
  get: function get() {
    return this.hasClass('as-is-directory');
  }
};
_ACore["default"].install(FileThumbnail);
var _default = FileThumbnail;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.FinderCommands = void 0;
exports.FinderFileSystem = FinderFileSystem;
exports["default"] = void 0;
__webpack_require__(92209);
__webpack_require__(82287);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _FlexiconButton = _interopRequireDefault(__webpack_require__(78266));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ExpTree = __webpack_require__(87326);
var _MessageInput = _interopRequireDefault(__webpack_require__(42049));
var _ext2MineType = _interopRequireDefault(__webpack_require__(13578));
var _utils = __webpack_require__(84512);
var _random = __webpack_require__(88917);
var _TaskManager = _interopRequireDefault(__webpack_require__(95619));
var _Modal = _interopRequireDefault(__webpack_require__(4061));
var _MessageDialog = _interopRequireDefault(__webpack_require__(11674));
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
var _Vec = _interopRequireDefault(__webpack_require__(73316));
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _WindowBox = _interopRequireDefault(__webpack_require__(24405));
var _FileSaver = __webpack_require__(53069);
var _DropZone = _interopRequireDefault(__webpack_require__(31790));
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _EventEmitter = _interopRequireWildcard(__webpack_require__(46833));
var _ContextMenu = _interopRequireDefault(__webpack_require__(24733));
var _TextArea = _interopRequireDefault(__webpack_require__(52072));
var _FileThumbnail = _interopRequireDefault(__webpack_require__(34571));
var _noop = _interopRequireDefault(__webpack_require__(5025));
var _Searcher = _interopRequireDefault(__webpack_require__(47106));
var _Context = _interopRequireDefault(__webpack_require__(16311));
var _stringFormat = __webpack_require__(22294);
var _stringGenerate = __webpack_require__(10713);
var _DomSignal = _interopRequireDefault(__webpack_require__(47341));
var _RibbonButton = _interopRequireDefault(__webpack_require__(93856));
var _Dom = __webpack_require__(64821);
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 _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var isMobile = _BrowserDetector["default"].isMobile;

/***
 * @extends AElement
 * @constructor
 */
function Finder() {
  var _this = this;
  if (isMobile) this.addClass('as-mobile');
  // if (BrowserDetector.isMobile) alert("Chưa hỗ trợ điện thoại!");

  this.$attachhook = (0, _ACore._)('attachhook').addTo(this);
  this.$attachhook.requestUpdateSize = function () {
    _this.layoutCtn.update();
    _this.navCtrl.notifyVisibleContentItems();
  };
  this.$attachhook.once('attached', function () {
    _ResizeSystem["default"].add(_this.$attachhook);
    _this.layoutCtn.update();
    _this.navCtrl.onStart();
    _this.navCtrl.notifyVisibleContentItems();
    _ContextMenu["default"].auto();
  });
  this.domSignal = new _DomSignal["default"]((0, _ACore._)('attachhook').addTo(this));
  this.$header = (0, _ACore.$)('.as-finder-header', this);
  this.$nomalActionCtn = (0, _ACore.$)('.as-finder-normal-action-button-ctn', this);
  this.$tinyActionCtn = (0, _ACore.$)('.as-finder-tiny-action-button-ctn', this);
  this.$contentHeader = (0, _ACore.$)('.as-finder-content-header', this);
  this.$navCtn = (0, _ACore.$)('.as-finder-nav-ctn', this);
  this.$nav = (0, _ACore.$)(_ExpTree.ExpGroup.tag, this.$navCtn);
  this.$searchCtn = (0, _ACore.$)('.as-finder-search-ctn', this);
  this.$contentCtn = (0, _ACore.$)('.as-finder-content-ctn', this);
  this.$content = (0, _ACore.$)('.as-finder-content', this);
  this.$body = (0, _ACore.$)('.as-finder-body', this);
  this.$commandButtons = (0, _ACore.$$)('.as-finder-nav-header button', this).concat((0, _ACore.$$)('.as-finder-content-header button', this)).concat((0, _ACore.$$)('.as-finder-search-footer button', this)).concat((0, _ACore.$$)('.as-finder-search-header button', this)).reduce(function (ac, cr) {
    var name = cr.attr('name');
    ac[name] = cr;
    if (cr.items) {
      //ribbon button
      cr.on('select', function (event) {
        _this.execCommand(name, event.item.value, event.item);
      });
    } else {
      cr.on('click', function () {
        _this.execCommand(name);
      });
    }
    return ac;
  }, {});
  this.$searchTypeSelect = (0, _ACore.$)('.as-finder-search-type-select', this);
  this.$searchText = (0, _ACore.$)('.as-finder-search-text', this);
  this.fileSystem = new AbsolFileSystem();
  this.layoutCtn = new LayoutController(this);
  this.navCtrl = new NavigatorController(this);
  this.selectCtrl = isMobile ? new MobileSelectController(this) : new SelectController(this);
  this.uploadCtrl = new UploadController(this);
  this.commandCtrl = new CommandController(this);
  this.folderDialog = new FolderDialog(this);
  this.searchCtrl = new SearchController(this);

  /***
   * @type {string}
   * @name displayPath
   * @memberOf Finder#
   */
  /***
   * @type {string}
   * @name path
   * @memberOf Finder#
   */
  /***
   * @type {string}
   * @name rootPath
   * @memberOf Finder#
   */

  /***
   * @type {string}
   * @name accept
   * @memberOf Finder#
   */
}

Finder.tag = 'Finder'.toLowerCase();
Finder.render = function () {
  return (0, _ACore._)({
    "class": 'as-finder',
    extendEvent: ['selectedchange', 'dblclickfile'],
    attr: {
      'data-selected-file-count': '0',
      'data-selected-folder-count': '0'
    },
    child: [{
      "class": 'as-finder-header',
      child: [{
        "class": 'as-finder-normal-action-button-ctn'
        /* child: Finder.prototype.actions.map(act => ({
             tag: FlexiconButton.tag,
             attr: { name: act.name },
             props: {
                 text: act.text,
                 // icon: act.icon
             }
         }))*/
      }, {
        "class": 'as-finder-tiny-action-button-ctn'
        /*child: Finder.prototype.actions.map(act => ({
            tag: 'button',
            attr: { name: act.name, title: act.text },
            child: act.icon
        }))*/
      }]
    }, {
      "class": ['as-finder-nav-ctn'],
      child: [{
        "class": 'as-finder-nav-header',
        child: [{
          "class": 'as-finder-nav-header-left',
          child: [{
            tag: 'button',
            "class": 'as-transparent-button',
            attr: {
              title: "Close Navigator",
              name: 'nav_toggle'
            },
            child: 'span.mdi.mdi-menu-open'
          }]
        }, {
          "class": 'as-finder-nav-header-right',
          child: [{
            tag: 'button',
            "class": 'as-transparent-button',
            attr: {
              title: "Search",
              name: 'switch_to_search'
            },
            child: 'span.mdi.mdi-magnify'
          }, {
            tag: 'button',
            "class": 'as-transparent-button',
            attr: {
              title: "Expand All",
              name: 'nav_expand_all'
            },
            child: 'span.mdi.mdi-arrow-expand-vertical'
          }, {
            tag: 'button',
            "class": 'as-transparent-button',
            attr: {
              title: "Collapse All",
              name: 'nav_collapse_all'
            },
            child: 'span.mdi.mdi-arrow-collapse-vertical'
          }, {
            tag: 'button',
            "class": 'as-transparent-button',
            attr: {
              title: "Reload",
              name: 'reload'
            },
            child: 'span.mdi.mdi-reload'
          }]
        }]
      }, {
        tag: _ExpTree.ExpGroup.tag,
        "class": 'as-bscroller'
      }]
    }, {
      "class": 'as-finder-search-ctn',
      child: [{
        "class": 'as-finder-search-header',
        child: [{
          tag: 'button',
          "class": 'as-transparent-button',
          attr: {
            title: "Close Navigator",
            name: 'nav_toggle'
          },
          child: 'span.mdi.mdi-menu-open'
        }]
      }, {
        "class": 'as-finder-search-body',
        child: [{
          tag: _Searcher["default"].tag,
          "class": 'as-finder-search-text'
        }, {
          "class": 'as-finder-search-field',
          child: [{
            child: {
              text: 'Kiểu'
            }
          }, {
            child: {
              tag: 'selectmenu',
              "class": 'as-finder-search-type-select',
              props: {
                items: [{
                  text: 'Tất cả',
                  value: 'all',
                  icon: 'span.mdi.mdi-asterisk'
                }, {
                  text: 'Hình ảnh',
                  value: 'image',
                  icon: 'span.mdi.mdi-image-outline'
                }, {
                  text: 'Tài liệu',
                  value: 'document',
                  icon: 'span.mdi.mdi-file-document'
                }]
              }
            }
          }]
        }, {
          "class": 'as-finder-search-footer',
          child: [{
            tag: _FlexiconButton["default"].tag,
            attr: {
              name: 'start_search'
            },
            props: {
              text: 'OK'
            }
          }, {
            tag: _FlexiconButton["default"].tag,
            attr: {
              name: 'cancel_search'
            },
            props: {
              text: 'Hủy'
            }
          }]
        }]
      }]
    }, {
      tag: _DropZone["default"].tag,
      attr: {
        'data-view-as': 'list'
      },
      "class": ['as-finder-body'],
      child: [{
        "class": 'as-finder-content-header',
        child: [{
          "class": 'as-finder-content-header-left',
          child: [{
            tag: 'button',
            attr: {
              title: 'Open Navigator',
              name: 'nav_toggle'
            },
            "class": 'as-transparent-button',
            child: ['span.mdi.mdi-menu']
          }, {
            tag: _RibbonButton["default"],
            attr: {
              title: 'View As',
              name: 'content_view_as'
            },
            "class": 'as-transparent-button',
            props: {
              text: 'List',
              icon: 'span.mdi.mdi-format-list-bulleted-square',
              items: [{
                icon: 'span.mdi.mdi-format-list-bulleted-square',
                text: 'List',
                value: 'list'
              }, {
                text: 'Medium Icons',
                icon: 'span.mdi.mdi-grid',
                value: 'content'
              }, {
                text: 'Lage Icons',
                icon: 'span.mdi.mdi-image-outline',
                value: 'lage_icons'
              }]
            }
            // child: ['span.mdi.mdi-format-list-bulleted-square']
          }]
        }, {
          "class": 'as-finder-content-header-right'
        }]
      }, {
        tag: _Hanger["default"].tag,
        "class": 'as-finder-content-ctn',
        props: {
          hangOn: 5
        },
        child: {
          "class": ['as-finder-content']
        }
      }, {
        "class": 'as-finder-upload-overlay',
        child: [{
          "class": 'as-finder-upload-overlay-icon-ctn',
          child: 'span.mdi.mdi-cloud-upload-outline'
        }, {
          child: {
            text: 'Thả file vào đây để tải lên'
          }
        }]
      }]
    }]
  });
};
Finder.property = {};
Finder.property.fileSystem = {
  set: function set(fs) {
    this._fileSystem = fs;
  },
  get: function get() {
    return this._fileSystem;
  }
};
Finder.property.path = {
  set: function set(path) {
    this.navCtrl.path = path;
  },
  get: function get() {
    return this.navCtrl.path;
  }
};
Finder.property.displayPath = {
  // set: function (path) {
  //     this.navCtrl.path = path;
  // },
  get: function get() {
    return this.navCtrl.displayPath;
  }
};
Finder.property.rootPath = {
  set: function set(path) {
    this.navCtrl.rootPath = path;
  },
  get: function get() {
    return this.navCtrl.rootPath;
  }
};
Finder.property.selectedFiles = {
  get: function get() {
    return this.selectCtrl.$selectedItems.filter(function (elt) {
      return elt.stat && !elt.stat.isDirectory;
    }).map(function (elt) {
      return elt.stat;
    });
  }
};
Finder.prototype.execCommand = function (name) {
  return this.commandCtrl.execCommand.apply(this.commandCtrl, arguments);
};
Finder.prototype.addCommand = function (name, descriptor) {
  this.commandCtrl.addCommand(name, descriptor);
};
Finder.prototype.addButton = function (name, bf) {
  this.commandCtrl.addButton(name, bf);
};

/****
 *
 * @param {string} name
 * @param {string=} bf
 */
Finder.prototype.addFolderMenuItem = function (name, bf) {
  this.commandCtrl.addFolderMenuItem(name, bf);
};
Finder.prototype.findZIndex = function () {
  var c = this;
  var res = 0;
  var zIndex;
  while (c) {
    zIndex = parseInt(getComputedStyle(c).getPropertyValue('z-index'));
    if (!isNaN(zIndex)) res = Math.max(zIndex, res);
    c = c.parentElement;
  }
  return res;
};
_ACore["default"].install(Finder);
var _default = Finder;
exports["default"] = _default;
var FinderCommands = {};
exports.FinderCommands = FinderCommands;
Finder.prototype.commands = FinderCommands;
FinderCommands.upload = {
  text: 'Tải lên',
  icon: 'span.mdi.mdi-upload-outline',
  match: function match(fileElt) {
    return !fileElt && this.searchCtrl.state !== 'RUNNING' && this.dirStat && this.dirStat.writable;
  },
  /***
   * @this Finder
   */
  exec: function exec() {
    var _this2 = this;
    (0, _utils.openFileDialog)({
      multiple: true
    }).then(function (files) {
      if (files && files.length > 0) {
        _this2.uploadCtrl.upload(files);
      }
    });
  }
};
FinderCommands.upload_to_folder = {
  text: 'Tải lên',
  icon: 'span.mdi.mdi-upload-outline',
  match: function match(treElt) {
    return treElt && treElt.stat && treElt.stat.writable;
  },
  /***
   * @this Finder
   */
  exec: function exec() {
    var _this3 = this;
    //todo: selected folder
    (0, _utils.openFileDialog)({
      multiple: true
    }).then(function (files) {
      if (files && files.length > 0) {
        _this3.uploadCtrl.upload(files);
      }
    });
  }
};
FinderCommands["delete"] = {
  icon: 'span.mdi.mdi-delete-outline',
  text: 'Xóa',
  /***
   * @this Finder
   */
  match: function match(fileElt) {
    return fileElt && this.selectCtrl.$selectedItems.length > 0 && this.selectCtrl.$selectedItems.every(function (elt) {
      return elt.stat && !elt.stat.isDirectory && elt.stat.writable;
    });
  },
  /***
   * @this Finder
   */
  exec: function exec() {
    var _this4 = this;
    var paths = this.selectCtrl.$selectedItems.map(function (elt) {
      return elt.stat.path;
    });
    var names = this.selectCtrl.$selectedItems.map(function (elt) {
      return elt.fileName;
    });
    if (names.length === 0) return;
    var contentElt = (0, _ACore._)({
      style: {
        maxHeight: '50vh',
        overflow: 'auto'
      },
      child: {
        style: {
          display: 'table'
        },
        child: names.map(function (name) {
          return {
            style: {
              display: 'table-row'
            },
            child: [{
              style: {
                display: 'table-cell',
                padding: '5px 20px 5px 10px'
              },
              child: {
                style: {
                  'min-width': '30em'
                },
                child: {
                  text: name
                }
              }
            }, {
              style: {
                display: 'table-cell',
                padding: '5px 10px'
              },
              child: {
                "class": 'as-finder-task-check',
                style: {
                  'min-width': '3em',
                  textAlign: 'right'
                },
                child: 'span'
              }
            }]
          };
        })
      }
    });
    var modal = (0, _ACore._)({
      tag: _Modal["default"].tag,
      style: {
        zIndex: this.findZIndex() + 9000
      },
      child: {
        tag: _MessageDialog["default"].tag,
        props: {
          dialogTitle: 'Xóa file',
          dialogActions: [{
            name: "ok",
            text: "OK"
          }, {
            name: 'cancel',
            text: 'Hủy'
          }]
        },
        child: [{
          child: {
            tag: 'span',
            child: {
              text: "Xác nhận xóa những file dưới đây: "
            }
          }
        }, contentElt],
        on: {
          action: function action(event, sender) {
            var promises;
            var errors = [];
            if (event.action.name === 'ok') {
              sender.$actionBtns[0].disabled = true;
              sender.$actionBtns[0].text = "Đang tiến hành xóa..";
              sender.$actionBtns[1].disabled = true;
              promises = paths.map(function (path, i) {
                return _this4.fileSystem.unlink(path).then(function () {
                  (0, _ACore.$)('.as-finder-task-check', contentElt.firstChild.childNodes[i]).addChild((0, _ACore._)('span.mdi.mdi-check'));
                })["catch"](function (err) {
                  errors.push(err);
                  (0, _ACore.$)('.as-finder-task-check', contentElt.firstChild.childNodes[i]).addChild((0, _ACore._)('span.mdi.mdi-alert-decagram-outline')).addChild((0, _ACore._)({
                    tag: 'span',
                    "class": '.as-finder-task-error-message',
                    child: {
                      text: err.message
                    }
                  }));
                });
              });
              Promise.all(promises).then(function () {
                var commands = {};
                if (errors.length > 0) {
                  errors.forEach(function (err) {
                    if (err.command) {
                      commands[err.command] = true;
                    }
                  });
                  if (commands.reload) _this4.execCommand('reload');
                  sender.$actionBtns[1].disabled = false;
                  sender.$actionBtns[0].text = "Hoàn thành";
                } else {
                  _this4.navCtrl.reload(_this4.path, true).then(function () {
                    return modal.remove();
                  });
                }
              });
            } else {
              modal.remove();
            }
          }
        }
      }
    }).addTo(document.body);
  }
};
FinderCommands.view = {
  icon: 'span.mdi.mdi-eye-outline',
  text: 'Xem',
  match: function match(fileElt) {
    return !!fileElt;
  },
  /***
   * @this Finder
   */
  exec: function exec() {
    var elt = this.selectCtrl.$selectedItems[0];
    if (!elt) return;
    if (elt.stat.isDirectory) {
      this.navCtrl.viewDir(elt.stat.path);
      return;
    }
    var url = elt.stat.url;
    if (!url) return;
    var type = elt.fileType;
    if (type === 'xlsx' || type === 'docx' || type === 'xls' || type === 'doc' || type === 'ppt' || type === 'pptx') {
      url = 'https://view.officeapps.live.com/op/embed.aspx?src=' + encodeURIComponent(url);
    } else {
      url = encodeURI(url);
    }
    var mineType = _ext2MineType["default"][type] || 'none';
    var content;
    if (mineType.startsWith('video')) {
      content = (0, _ACore._)({
        tag: 'video',
        style: {
          maxWidth: 'calc(90vw - 20px)',
          maxHeight: 'calc(90vh - 80px)',
          width: '900px',
          height: 'auto'
        },
        attr: {
          autoplay: 'true',
          controls: 'true'
        },
        props: {
          src: url
        }
      });
    } else if (mineType.startsWith('audio')) {
      content = (0, _ACore._)({
        tag: 'audio',
        style: {
          margin: '5px'
        },
        attr: {
          autoplay: 'true',
          controls: 'true'
        },
        props: {
          src: url
        }
      });
    } else if (mineType.startsWith('image')) {
      content = (0, _ACore._)({
        tag: 'img',
        style: {
          maxWidth: 'calc(90vw - 20px)',
          maxHeight: 'calc(90vh - 80px)',
          width: 'auto',
          height: 'auto'
        },
        attr: {},
        props: {
          src: url
        }
      });
    } else {
      content = (0, _ACore._)({
        tag: 'iframe',
        style: {
          maxWidth: 'calc(90vw - 20px)',
          maxHeight: 'calc(90vh - 80px)',
          width: '900px',
          height: '600px'
        },
        props: {
          src: url,
          onload: function onload() {
            // console.log(this.contentWindow.document.body.offsetHeight, this.contentWindow.document.body.offsetWidth)
          }
        }
      });
    }
    var modal = (0, _ACore._)({
      tag: _Modal["default"].tag,
      style: {
        zIndex: this.findZIndex() + 9000
      },
      child: {
        tag: _WindowBox["default"].tag,
        child: content,
        props: {
          windowTitle: elt.stat.displayName || elt.stat.name,
          windowActions: [{
            name: 'close',
            icon: 'span.mdi.mdi-close'
          }]
        },
        on: {
          action: function action() {
            modal.remove();
          }
        }
      }
    }).addTo(document.body);
  }
};
FinderCommands.download = {
  icon: 'span.mdi.mdi-download-outline',
  text: 'Tải về',
  match: function match(elt) {
    return elt && this.selectCtrl.$selectedItems.length > 0 && this.selectCtrl.$selectedItems.every(function (elt) {
      return elt.stat && !elt.stat.isDirectory;
    });
  },
  /***
   * @this Finder
   */
  exec: function exec() {
    var taskMng = new _TaskManager["default"]({
      limit: 4
    });
    this.selectCtrl.$selectedItems.forEach(function (elt) {
      if (elt.isDirectory) return;
      var url = elt.stat.url;
      if (!url) return;
      taskMng.requestTask(function (onFinish, bundle) {
        (0, _FileSaver.saveAs)(bundle.url, bundle.name);
        setTimeout(onFinish, 100);
      }, {
        url: url,
        name: elt.fileName
      });
    });
  }
};
FinderCommands.rename = {
  icon: 'span.mdi.mdi-rename',
  text: 'Đổi tên',
  /***
   * @this Finder
   */
  match: function match(elt) {
    return elt && this.selectCtrl.$selectedItems.length === 1 && elt.stat && !elt.stat.isDirectory && elt.stat.writable; //todo: rename folder
  },

  /***
   * @this Finder
   */
  exec: function exec() {
    var _this5 = this;
    var elt = this.selectCtrl.$selectedItems[0];
    if (!elt) return;
    var path = elt.stat.path;
    var value = elt.fileName;
    var input = (0, _ACore._)({
      tag: _TextArea["default"].tag,
      style: {
        outline: 'none',
        position: 'absolute',
        zIndex: 100,
        left: 0,
        bottom: 0,
        width: '100%'
      },
      props: {
        value: elt.fileName
      },
      on: {
        blur: function blur() {
          var newValue = input.value.replace(/<>:\\\/\|\?\*\^/g, '').trim();
          input.remove();
          if (!value) return;
          if (value === newValue) return;
          _this5.fileSystem.rename(path, newValue).then(function (newStat) {
            elt.stat = newStat;
            elt.value = newStat.url;
            elt.fileName = newStat.displayName || newStat.name;
          });
        }
      }
    });
    elt.addChild(input);
    input.on('keydown', function (event) {
      if (event.key.match(/<>:\\\/\|\?\*\^/)) {
        event.preventDefault();
        setTimeout(function () {
          return input.updateSize();
        }, 30);
      } else if (event.key === 'Enter') {
        input.blur();
      } else if (event.key === 'Escape') {
        input.value = value;
        input.updateSize();
        input.blur();
      }
    }, true);
    input.updateSize();
    input.focus();
    var ext = value.match(/\.[a-zA-Z0-9]+$/);
    if (ext) {
      ext = ext[0];
    } else {
      ext = '';
    }
    input.setSelectionRange(0, value.length - ext.length);
  }
};
FinderCommands.copy = {
  icon: 'span.mdi.mdi-content-copy',
  text: 'Sao chép',
  exec: function exec() {}
};
FinderCommands.move = {
  text: 'Di chuyển',
  icon: 'span.mdi.mdi-file-move-outline',
  match: function match(fileElt) {
    if (arguments.length === 0) {
      return this.selectCtrl.$selectedItems.every(function (elt) {
        return elt.stat.writable;
      });
    }
    return fileElt && fileElt.stat && fileElt.stat.writable;
  },
  /***
   * @this Finder
   */
  exec: function exec() {
    var _this6 = this;
    var itemElements = this.selectCtrl.$selectedItems.slice();
    var paths = itemElements.map(function (elt) {
      return elt.stat.path;
    });
    var names = itemElements.map(function (elt) {
      return elt.fileName;
    });
    if (names.length === 0) return;
    var currentFolderPath = this.path;
    this.folderDialog.open(currentFolderPath, false, function (newFolderPath, stat) {
      return newFolderPath !== currentFolderPath && stat.writable;
    }, 'Di chuyển file').then(function (newFolderPath) {
      if (!newFolderPath) return;
      if (newFolderPath === currentFolderPath) return;
      var contentElt = (0, _ACore._)({
        style: {
          maxHeight: '50vh',
          overflow: 'auto'
        },
        child: {
          style: {
            display: 'table'
          },
          child: names.map(function (name) {
            return {
              style: {
                display: 'table-row'
              },
              child: [{
                style: {
                  display: 'table-cell',
                  padding: '5px 20px 5px 10px'
                },
                child: {
                  style: {
                    'min-width': '30em'
                  },
                  child: {
                    text: name
                  }
                }
              }, {
                style: {
                  display: 'table-cell',
                  padding: '5px 10px'
                },
                child: {
                  "class": 'as-finder-task-check',
                  style: {
                    'min-width': '3em',
                    textAlign: 'right'
                  },
                  child: 'span'
                }
              }]
            };
          })
        }
      });
      var modal = (0, _ACore._)({
        tag: _Modal["default"].tag,
        style: {
          zIndex: _this6.findZIndex() + 9000
        },
        child: {
          tag: _MessageDialog["default"].tag,
          props: {
            dialogTitle: 'Di chuyển file',
            dialogActions: [{
              name: 'close',
              text: 'Đóng'
            }]
          },
          child: [{
            child: {
              tag: 'span',
              child: {
                text: "Danh sách đang di chuyển: "
              }
            }
          }, contentElt],
          on: {
            action: function action(event, sender) {
              modal.remove();
            }
          }
        }
      }).addTo(document.body);
      var errors = [];
      var promises = paths.map(function (path, i) {
        var newPath = newFolderPath + '/' + path.split('/').pop();
        return _this6.fileSystem.move(path, newPath).then(function () {
          (0, _ACore.$)('.as-finder-task-check', contentElt.firstChild.childNodes[i]).addChild((0, _ACore._)('span.mdi.mdi-check'));
        })["catch"](function (err) {
          errors.push(err);
          (0, _ACore.$)('.as-finder-task-check', contentElt.firstChild.childNodes[i]).addChild((0, _ACore._)('span.mdi.mdi-alert-decagram-outline')).addChild((0, _ACore._)({
            tag: 'span',
            "class": '.as-finder-task-error-message',
            child: {
              text: err.message
            }
          }));
        });
      });
      Promise.all(promises).then(function () {
        var commands = {};
        if (errors.length > 0) {
          errors.forEach(function (err) {
            if (err.command) {
              commands[err.command] = true;
            }
          });
          if (commands.reload) _this6.execCommand('reload');
        } else {
          _this6.navCtrl.reload(_this6.path, true).then(function () {
            return modal.remove();
          });
        }
      });
    });
  }
};
FinderCommands.move_dir = {
  text: 'Di chuyển',
  icon: 'span.mdi.mdi-folder-arrow-right-outline',
  match: function match(expElt) {
    return expElt && expElt.stat && expElt.stat.writable && !expElt.stat.isVirtual;
  },
  /***
   * @this Finder
   */
  exec: function exec(expElt) {
    var _this7 = this;
    var path = expElt.stat.path;
    var currentFolderPath = path.split('/');
    var name = currentFolderPath.pop();
    currentFolderPath = currentFolderPath.join('/');
    this.folderDialog.open(currentFolderPath, true, function (newPath) {
      return !newPath.startsWith(path);
    }, 'Di chuyển thư mục').then(function (newFolderPath) {
      if (!newFolderPath) return;
      return _this7.fileSystem.move(path, newFolderPath + '/' + name).then(function () {
        _this7.path = newFolderPath + '/' + name;
        _this7.navCtrl.reload(_this7.rootPath).then(function () {
          _this7.navCtrl.viewDir(_this7.path);
        });
      });
    });
  }
};
FinderCommands.rmdir = {
  text: 'Xóa',
  icon: 'span.mdi.mdi-delete-outline',
  /***
   * @this Finder
   * @param elt
   */
  match: function match(elt) {
    if (elt.stat && elt.stat.isVirtual) return false;
    if (elt) return elt.stat && elt.stat.writable;
    return false;
  },
  exec: function exec(elt) {}
};
FinderCommands.select_all = {
  text: 'Chọn tất cả',
  icon: 'span.mdi.mdi-select-all',
  match: function match(fileElt) {
    return !fileElt;
  },
  /***
   * @this Finder
   */
  exec: function exec() {
    this.selectCtrl.selectAll();
  }
};
FinderCommands.nav_expand_all = {
  /***
   * @this Finder
   */
  exec: function exec() {
    this.navCtrl.expandAll();
  }
};
FinderCommands.nav_collapse_all = {
  /***
   * @this Finder
   */
  exec: function exec() {
    this.navCtrl.collapseAll();
  }
};
FinderCommands.reload = {
  /***
   * @this Finder
   */
  exec: function exec() {
    var _this8 = this;
    this.fileSystem.clearCache();
    this.navCtrl.reload().then(function () {
      _this8.navCtrl.viewDir(_this8.path);
    });
  }
};
FinderCommands.content_view_as = {
  /***
   * @this Finder
   */
  exec: function exec(value, item) {
    this.$commandButtons['content_view_as'].text = item.text;
    this.$commandButtons['content_view_as'].icon = item.icon;
    this.$body.attr('data-view-as', value);
  }
};
FinderCommands.switch_to_search = {
  /***
   * @this Finder
   */
  exec: function exec() {
    this.searchCtrl.start();
  }
};
FinderCommands.cancel_search = {
  /***
   * @this Finder
   */
  exec: function exec() {
    this.searchCtrl.stop();
    this.navCtrl.viewDir(this.path);
  }
};
FinderCommands.start_search = {
  /***
   * @this Finder
   */
  exec: function exec() {
    this.searchCtrl.search();
  }
};
FinderCommands.nav_toggle = {
  icon: 'span.mdi.mdi-menu',
  exec: function exec() {
    if (this.hasClass('as-nav-open')) {
      this.removeClass('as-nav-open');
    } else {
      this.addClass('as-nav-open');
    }
  }
};

/***
 *
 * @param {Finder} elt
 * @constructor
 */
function LayoutController(elt) {
  this.elt = elt;
  this.actionButtonWidth = 0;
  this.elt.domSignal.on('requestUpdateActionButtonSize', this.updateActionButtonSize.bind(this));
  this.elt.on('click', this.ev_click.bind(this));
}
LayoutController.prototype.requestUpdateActionButtonSize = function () {
  this.elt.domSignal.emit('requestUpdateActionButtonSize');
};
LayoutController.prototype.updateActionButtonSize = function () {
  var font = this.elt.$nomalActionCtn.getComputedStyleValue('font');
  var fontSize = this.elt.$nomalActionCtn.getFontSize();
  this.actionButtonWidth = Array.prototype.reduce.call(this.elt.$nomalActionCtn.childNodes, function (ac, cr) {
    return ac + Math.max(110, 0.715 * fontSize * 2 + (0, _utils.measureText)(cr.text, font).width) + 10;
  }, 60);
  this.update();
};
LayoutController.prototype.update = function () {
  var bound = this.elt.getBoundingClientRect();
  if (bound.width < 500) {
    if (!this.elt.hasClass('as-mini-layout')) this.elt.addClass('as-mini-layout');
  } else {
    if (this.elt.hasClass('as-mini-layout')) {
      this.elt.removeClass('as-mini-layout');
      this.elt.removeClass('as-nav-open');
    }
  }
  if (this.elt.hasClass('as-action-button-minimized')) {
    if (this.actionButtonWidth <= bound.width) {
      this.elt.removeClass('as-action-button-minimized');
    }
  } else {
    if (this.actionButtonWidth > bound.width) {
      this.elt.addClass('as-action-button-minimized');
    }
  }
  var bodyBound = this.elt.$body.getBoundingClientRect();
  var col = Math.floor(bodyBound.width / 300) || 1;
  this.elt.$body.addStyle('--col', col + '');
};
LayoutController.prototype.ev_click = function (event) {
  if (event.target === this.elt) {
    this.elt.removeClass('as-nav-open');
  }
};

/***
 *
 * @param {Finder} elt
 * @constructor
 */

function CommandController(elt) {
  var _this9 = this;
  Object.keys(this.constructor.prototype).forEach(function (key) {
    if (key.startsWith('ev_')) {
      _this9[key] = _this9[key].bind(_this9);
    }
  });
  this.elt = elt;
  this.$normalActionCtn = this.elt.$nomalActionCtn;
  this.$tinyActionCtn = this.elt.$tinyActionCtn;
  this.commands = Object.assign({}, this.elt.commands);
  this.buttonNames = ['upload', 'view', 'download', 'move', 'rename', 'delete'];
  this.folderMenuItemNames = ['upload_to_folder', 'move_dir'];
  this.contentMenuItemNames = ['view', 'download', 'upload', 'select_all', 'move', 'delete', 'rename'];
  this.$navCtn = this.elt.$navCtn;
  this.$navCtn.defineEvent('contextmenu').on('contextmenu', this.ev_navContextMenu);
  this.$contentCtn = this.elt.$contentCtn;
  this.$contentCtn.defineEvent('contextmenu').on('contextmenu', this.ev_contentContextMenu);
  this.updateButtons();
}
CommandController.prototype.updateButtons = function () {
  var _this10 = this;
  this.$normalActionCtn.clearChild();
  var buttons = this.buttonNames.map(function (name) {
    var desc = _this10.commands[name] || {};
    return (0, _ACore._)({
      tag: _FlexiconButton["default"].tag,
      attr: {
        name: name
      },
      props: {
        text: desc.text || name
      },
      on: {
        click: function click() {
          _this10.execCommand(name);
        }
      }
    });
  });
  this.$normalActionCtn.addChild(buttons);
  buttons = this.buttonNames.map(function (name) {
    var desc = _this10.commands[name] || {};
    return (0, _ACore._)({
      tag: 'button',
      "class": 'as-transparent-button',
      attr: {
        name: name
      },
      child: desc.icon,
      on: {
        click: function click() {
          _this10.execCommand(name);
        }
      }
    });
  });
  this.$tinyActionCtn.addChild(buttons);
  this.elt.layoutCtn.requestUpdateActionButtonSize();
};
CommandController.prototype.execCommand = function (name) {
  var args = Array.prototype.slice.call(arguments, 1);
  var desc = this.commands[name];
  if (desc && typeof desc.exec === 'function') {
    return desc.exec.apply(this.elt, args);
  }
  return null;
};
CommandController.prototype.addCommand = function (name, desc) {
  this.commands[name] = Object.assign({}, this.commands[name], desc);
};

/****
 *
 * @param {string} name
 * @param {string=} bf
 */
CommandController.prototype.addButton = function (name, bf) {
  var _this11 = this;
  var idx = this.buttonNames.indexOf(bf);
  var bfElt, smallBfElt;
  if (idx >= 0) {
    this.buttonNames.splice(idx, 0, name);
    bfElt = (0, _ACore.$)("button[name=\"".concat(name, "\"]"), this.$normalActionCtn);
    smallBfElt = (0, _ACore.$)("button[name=\"".concat(name, "\"]"), this.$tinyActionCtn);
  } else {
    this.buttonNames.push(name);
  }
  var desc = this.commands[name] || {};
  this.$normalActionCtn.addChildBefore((0, _ACore._)({
    tag: _FlexiconButton["default"].tag,
    attr: {
      name: name
    },
    props: {
      text: desc.text || name
    },
    on: {
      click: function click() {
        _this11.execCommand(name);
      }
    }
  }), bfElt);
  this.$tinyActionCtn.addChild((0, _ACore._)({
    tag: 'button',
    "class": 'as-transparent-button',
    attr: {
      name: name
    },
    child: desc.icon,
    on: {
      click: function click() {
        _this11.execCommand(name);
      }
    }
  }), smallBfElt);
  this.elt.layoutCtn.requestUpdateActionButtonSize();
};

/****
 *
 * @param {string} name
 * @param {string=} bf
 */
CommandController.prototype.addFolderMenuItem = function (name, bf) {
  idx = this.folderMenuItemNames.indexOf(name);
  if (idx >= 0) return;
  var idx = this.folderMenuItemNames.indexOf(bf);
  if (idx >= 0) this.folderMenuItemNames.splice(idx, 0, name);else this.folderMenuItemNames.push(name);
};

/****
 *
 * @param {string} name
 * @param {string=} bf
 */
CommandController.prototype.addContentMenuItem = function (name, bf) {
  idx = this.folderMenuItemNames.indexOf(name);
  if (idx >= 0) return; //todo
  var idx = this.folderMenuItemNames.indexOf(bf);
  if (idx >= 0) this.folderMenuItemNames.splice(idx, 0, name);else this.folderMenuItemNames.push(name);
};
CommandController.prototype.ev_navContextMenu = function (event) {
  var _this12 = this;
  var expTree;
  var c = event.target;
  while (c && !expTree) {
    if (c.stat) expTree = c;
    c = c.parentElement;
  }
  if (expTree) this.elt.navCtrl.viewDir(expTree.stat.path, [this.elt.rootPath].concat(expTree.getPath()).join('/'));
  var items = this.folderMenuItemNames.map(function (name) {
    var desc = _this12.commands[name];
    if (!desc) return null;
    if (typeof desc.match === "function") {
      if (!desc.match.call(_this12.elt, expTree)) return null;
    }
    return {
      text: desc.text,
      icon: desc.icon,
      cmd: name
    };
  }).filter(function (x) {
    return !!x;
  });
  if (items.length > 0) {
    event.showContextMenu({
      items: items
    }, function (event) {
      var cmd = event.menuItem.cmd;
      _this12.execCommand(cmd, expTree);
    });
  }
};
CommandController.prototype.ev_contentContextMenu = function (event) {
  var _this13 = this;
  var fileElt;
  var c = event.target;
  while (c && !fileElt) {
    if (c.stat) fileElt = c;
    c = c.parentElement;
  }
  var selectedElements = this.elt.selectCtrl.$selectedItems;
  if (fileElt && selectedElements.indexOf(fileElt) < 0) {
    this.elt.selectCtrl.deselectAll();
    this.elt.selectCtrl.select(fileElt);
  }
  // if (expTree) this.elt.navCtrl.viewDir(expTree.stat.path, [this.elt.rootPath].concat(expTree.getPath()).join('/'));
  var items = this.contentMenuItemNames.map(function (name) {
    var desc = _this13.commands[name];
    if (!desc) return null;
    if (typeof desc.match === "function") {
      if (!desc.match.call(_this13.elt, fileElt)) return null;
    }
    return {
      text: desc.text,
      icon: desc.icon,
      cmd: name
    };
  }).filter(function (x) {
    return !!x;
  });
  if (items.length > 0) {
    event.showContextMenu({
      items: items
    }, function (event) {
      var cmd = event.menuItem.cmd;
      _this13.execCommand(cmd, fileElt);
    });
  }
};

/***
 * for desktop
 * @param {Finder} elt
 * @constructor
 */
function SelectController(elt) {
  var _this14 = this;
  this.elt = elt;
  this.$selectedItems = []; // first element is focus
  this.$content = this.elt.$content;
  this.$contentCtn = this.elt.$contentCtn;
  Object.keys(this.constructor.prototype).forEach(function (key) {
    if (key.startsWith('ev_')) {
      _this14[key] = _this14[key].bind(_this14);
    }
  });
  this._setupSelectTool();
}

/***
 *
 * @protected
 */
SelectController.prototype._setupSelectTool = function () {
  this._draged = false;
  this._dragOffset = new _Vec["default"](0, 0);
  this.$selectArea = (0, _ACore._)('.as-finder-select-area');
  this.$contentCtn.on('draginit', this.ev_dragInit).on('dragdeinit', this.ev_dragDeinit).on('dragstart', this.ev_dragStart).on('drag', this.ev_drag).on('dragend', this.ev_dragEnd);
};
SelectController.prototype.deselectAll = function () {
  while (this.$selectedItems.length > 0) {
    this.$selectedItems.pop().checked = false;
  }
  this._updateCount();
  this.elt.emit('selectedchange');
};
SelectController.prototype.select = function (elt) {
  //todo: more option
  this.deselectAll();
  this.$selectedItems.push(elt);
  elt.checked = true;
  this._updateCount();
  this.elt.emit('selectedchange');
};
SelectController.prototype.selectAll = function () {
  //todo: more option
  this.deselectAll();
  var fileElements = Array.prototype.slice.call(this.$content.childNodes);
  this.$selectedItems.push.apply(this.$selectedItems, fileElements);
  fileElements.forEach(function (elt) {
    elt.checked = true;
  });
  this._updateCount();
  this.elt.emit('selectedchange');
};
SelectController.prototype.ev_dragInit = function (event) {
  if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {
    event.cancel();
    return;
  }
  // event.preventDefault();
  this._draged = false;
};
SelectController.prototype.ev_dragDeinit = function (event) {
  if (!this._draged) this.ev_click(event);
};
SelectController.prototype.ev_dragStart = function (event) {
  this._draged = true;
  this.elt.addClass('as-dragging');
  this.$selectArea.addStyle('z-index', this.elt.findZIndex() + 100 + '').addTo(document.body);
  var bound = _Rectangle["default"].fromClientRect(this.$content.getBoundingClientRect());
  this._dragOffset = event.currentPoint.sub(bound.A());
  var pos = bound.A().add(this._dragOffset);
  this.$selectArea.addStyle({
    left: pos.x + 'px',
    top: pos.y + 'px'
  });
};
SelectController.prototype.ev_drag = function (event) {
  this._draged = true;
  var bound = _Rectangle["default"].fromClientRect(this.$content.getBoundingClientRect());
  var A = bound.A().add(this._dragOffset);
  var C = event.currentPoint;
  var sRect = _Rectangle["default"].boundingPoints([A, C]);
  this.$selectArea.addStyle({
    left: sRect.x + 'px',
    top: sRect.y + 'px',
    width: sRect.width + 'px',
    height: sRect.height + 'px'
  });
};
SelectController.prototype.ev_dragEnd = function () {
  var _this15 = this;
  while (this.$selectedItems.length > 0) {
    this.$selectedItems.pop().checked = false;
  }
  var selectBound = _Rectangle["default"].fromClientRect(this.$selectArea.getBoundingClientRect());
  Array.prototype.forEach.call(this.$content.childNodes, function (elt) {
    var bound = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    if (selectBound.isCollapse(bound, 0)) {
      _this15.$selectedItems.push(elt);
      elt.checked = true;
    }
  });
  this._draged = true;
  this.$selectArea.remove();
  this.elt.removeClass('as-dragging');
  this._updateCount();
  this.elt.layoutCtn.update();
  this.elt.emit('selectedchange');
};
SelectController.prototype._updateCount = function () {
  var folderCount = this.$selectedItems.filter(function (elt) {
    return elt.stat.isDirectory;
  }).length;
  this.elt.attr('data-selected-file-count', this.$selectedItems.length - folderCount + '');
  this.elt.attr('data-selected-folder-count', folderCount + '');
};
SelectController.prototype.ev_click = function (event) {
  event = event.originalEvent || event.originEvent || event;
  var c = event.target;
  var itemElt;
  while (c && !itemElt) {
    if (c.hasClass && c.hasClass('as-file-thumbnail')) {
      itemElt = c;
      break;
    }
    c = c.parentElement;
  }
  var focusIdx;
  var currentIdx;
  if (this.$selectedItems.length === 0 && itemElt) {
    this.$selectedItems.push(itemElt);
    itemElt.checked = true;
  } else if ((0, _EventEmitter.isMouseRight)(event)) {} else if (!event.ctrlKey && !event.shiftKey) {
    while (this.$selectedItems.length > 0) {
      this.$selectedItems.pop().checked = false;
    }
    if (itemElt) {
      this.$selectedItems.push(itemElt);
      itemElt.checked = true;
    }
  } else if (event.shiftKey) {
    if (itemElt) {
      focusIdx = Array.prototype.indexOf.call(this.$content.childNodes, this.$selectedItems[0]);
      currentIdx = Array.prototype.indexOf.call(this.$content.childNodes, itemElt);
      while (this.$selectedItems.length > 1) {
        this.$selectedItems.pop().checked = false;
      }
      while (currentIdx !== focusIdx) {
        itemElt = this.$content.childNodes[currentIdx];
        this.$selectedItems.push(itemElt);
        itemElt.checked = true;
        if (currentIdx < focusIdx) currentIdx++;else currentIdx--;
      }
    }
  } else if (event.ctrlKey) {
    if (itemElt) {
      currentIdx = this.$selectedItems.indexOf(itemElt);
      if (currentIdx >= 0) {
        this.$selectedItems.splice(currentIdx, 1);
        itemElt.checked = false;
      } else {
        this.$selectedItems.unshift(itemElt);
        itemElt.checked = true;
      }
    }
  }
  this._updateCount();
  this.elt.layoutCtn.update();
  this.elt.emit('selectedchange');
};

/***
 * @extends SelectController
 * @param elt
 * @constructor
 */
function MobileSelectController(elt) {
  SelectController.apply(this, arguments);
}
_OOP["default"].mixClass(MobileSelectController, SelectController);
MobileSelectController.prototype._setupSelectTool = function () {
  this.$content.on('click', this.ev_click);
};

/***
 *
 * @param {Finder} elt
 * @constructor
 */
function UploadController(elt) {
  var _this16 = this;
  /***
   *
   * @type {Finder}
   */
  this.elt = elt;
  this.$body = this.elt.$body;
  Object.keys(this.constructor.prototype).forEach(function (key) {
    if (key.startsWith('ev_')) {
      _this16[key] = _this16[key].bind(_this16);
    }
  });
  this.$body.on({
    fileenter: this.ev_fileEnter,
    filedrop: this.ev_fileDrop
  });
}
UploadController.prototype.upload = function (files) {
  var _this17 = this;
  var screenSize = (0, _Dom.getScreenSize)();
  var contentElt = (0, _ACore._)({
    style: {
      maxHeight: '50vh',
      overflow: 'auto'
    },
    child: {
      style: {
        display: 'table'
      },
      child: files.map(function (file) {
        return {
          style: {
            display: 'table-row'
          },
          child: [{
            style: {
              display: 'table-cell',
              padding: '5px 20px 5px 10px'
            },
            child: {
              style: {
                'width': Math.min(screenSize.width - 180, 800) / 14 + 'em',
                textOverflow: 'ellipsis',
                overflow: 'hidden'
              },
              child: {
                text: file.name
              }
            }
          }, {
            style: {
              display: 'table-cell',
              padding: '5px 10px'
            },
            child: {
              "class": 'as-upload-percent',
              style: {
                'min-width': '3em',
                textAlign: 'right',
                color: 'rgb(30,237,219)'
              },
              child: {
                text: ''
              }
            }
          }]
        };
      })
    }
  });
  var modal = (0, _ACore._)({
    tag: _Modal["default"].tag,
    style: {
      zIndex: this.elt.findZIndex() + 9000
    },
    child: {
      tag: _MessageDialog["default"].tag,
      props: {
        dialogTitle: 'Tải lên'
      },
      child: contentElt
    }
  }).addTo(document.body);
  var syncs = files.map(function (file, i) {
    var percentText = (0, _ACore.$)('.as-upload-percent', contentElt.firstChild.childNodes[i]);
    return _this17.elt.fileSystem.writeFile(_this17.elt.path + '/' + file.name, file, function (done) {
      var textBound = percentText.getBoundingClientRect();
      var ctnBound = contentElt.getBoundingClientRect();
      if (textBound.bottom > ctnBound.bottom) {
        contentElt.scrollTop += textBound.bottom - ctnBound.bottom;
      }
      percentText.firstChild.data = Math.round(done * 100) + '%';
    });
  });
  Promise.all(syncs).then(function () {
    _this17.elt.navCtrl.reload(_this17.elt.path, true).then(function () {
      return modal.remove();
    });
  });
};
UploadController.prototype.ev_fileEnter = function (event) {
  var files = Array.prototype.slice.call(event.dataTransfer.files);
  if (files.length === 0) return;
};
UploadController.prototype.ev_fileDrop = function (event) {
  if (this.elt.searchCtrl.state === "RUNNING") return;
  var files = event.files;
  if (files.length > 0) this.upload(files);
};

/***
 * @extends EventEmitter
 * @param {Finder} elt
 * @constructor
 */
function FolderDialog(elt) {
  _EventEmitter["default"].call(this);
  this.elt = elt;
}
_OOP["default"].mixClass(FolderDialog, _EventEmitter["default"]);
FolderDialog.prototype._init = function () {
  if (this.$modal) return;
  this.$modal = (0, _ACore._)({
    tag: 'modal',
    "class": 'as-finder-folder-dialog-modal',
    child: {
      tag: _MessageDialog["default"].tag,
      props: {
        dialogTitle: 'Duyệt thư mục',
        dialogActions: [{
          name: 'ok',
          text: 'OK'
        }, {
          name: 'cancel',
          text: 'Hủy'
        }]
      },
      child: [{
        "class": 'as-finder-folder-dialog-content',
        child: [{
          "class": 'as-finder-folder-dialog-selected-ctn',
          child: [{
            tag: 'span',
            child: {
              text: 'Đã chọn thư mục: '
            }
          }, {
            tag: 'span',
            child: {
              text: ' ... '
            }
          }]
        }, {
          "class": 'as-finder-folder-dialog-tree-ctn',
          child: [{
            tag: _ExpTree.ExpGroup.tag
          }, {
            tag: _ExpTree.ExpTree.tag,
            "class": 'as-finder-folder-dialog-tree-root',
            props: {
              name: 'root',
              icon: 'span.mdi.mdi-harddisk'
            }
          }]
        }]
      }]
    }
  });
  this.$dialog = (0, _ACore.$)(_MessageDialog["default"].tag, this.$modal);
  this.$treeCtn = (0, _ACore.$)('.as-finder-folder-dialog-tree-ctn', this.$modal);
  this.$rootTree = (0, _ACore.$)('.as-finder-folder-dialog-tree-root', this.$modal);
  this.$content = (0, _ACore.$)('.as-finder-folder-dialog-content', this.$modal);
  this.$expGroup = (0, _ACore.$)(_ExpTree.ExpGroup.tag, this.$content);
  this.$selectedCtn = (0, _ACore.$)('.as-finder-folder-dialog-selected-ctn', this.$content);
  this.$selectedPath = this.$selectedCtn.childNodes[1];
  this.$activeNode = null;
};
FolderDialog.prototype.open = function (initPath, showRoot, checkFunc, title) {
  var _this18 = this;
  var cPath = initPath;
  this._init();
  var fileSystem = this.elt.fileSystem;
  var zIndex = this.elt.findZIndex() + 9000;
  this.$modal.addStyle('z-index', zIndex + '');
  this.$modal.addTo(document.body);
  if (this.$activeNode) {
    this.$activeNode.active = false;
    this.$activeNode = null;
  }
  this.$dialog.$actionBtns[0].disabled = true;
  this.$dialog.dialogTitle = title || 'Duyệt';
  var makeTree = function makeTree(path, ctnElt, level) {
    level = level || 0;
    return fileSystem.readDir(path).then(function (dirs) {
      return Promise.all(dirs.map(function (dir) {
        return fileSystem.stat(path + '/' + dir);
      }));
    }).then(function (stats) {
      return stats.filter(function (stat) {
        return stat.isDirectory;
      });
    }).then(function (stats) {
      var syncs = [];
      ctnElt.clearChild();
      var children = stats.map(function (stat) {
        var nodePath = path + '/' + stat.name;
        var node = (0, _ACore._)({
          tag: _ExpTree.ExpTree.tag,
          props: {
            stat: stat,
            name: stat.displayName || stat.name,
            icon: {
              tag: 'img',
              props: {
                src: _MessageInput["default"].iconAssetRoot + '/folder.svg'
              }
            },
            path: nodePath
          },
          on: {
            statuschage: function statuschage() {},
            press: function press() {
              if (_this18.$activeNode) _this18.$activeNode.active = false;
              _this18.$activeNode = node;
              _this18.$activeNode.active = true;
              _this18.$selectedPath.firstChild.data = node.getPath().join('/');
              cPath = nodePath;
              if (checkFunc && !checkFunc(cPath, stat)) {
                _this18.$dialog.$actionBtns[0].disabled = true;
              } else {
                _this18.$dialog.$actionBtns[0].disabled = false;
              }
            }
          }
        });
        if (nodePath === cPath) {
          node.active = true;
          _this18.$activeNode = node;
        }
        if (checkFunc && !checkFunc(nodePath, stat)) {
          node.getNode().addStyle('opacity', 0.3 + '');
        }
        node.getNode().on({
          dblclick: function dblclick() {
            if (node.status === 'close') {
              node.status = 'open';
            } else if (node.status === 'open') {
              node.status = 'close';
            }
          }
        });
        if (stat.name !== 'node_modules') syncs.push(makeTree(nodePath, node, level + 1));
        return node;
      });
      children.forEach(function (c) {
        ctnElt.addChild(c);
      });
      if (children.length) {
        ctnElt.status = level > 1 ? 'close' : 'open';
      } else {
        ctnElt.status = 'none';
      }
      return Promise.all(syncs);
    });
  };
  var onRootPress;
  if (showRoot) {
    this.$expGroup.addStyle('display', 'none');
    this.$rootTree.removeStyle('display');
    if (cPath === this.elt.rootPath) {
      this.$activeNode = this.$rootTree;
      this.$activeNode.active = true;
    }
    onRootPress = function onRootPress() {
      var node = _this18.$rootTree;
      var nodePath = _this18.elt.rootPath;
      if (_this18.$activeNode) _this18.$activeNode.active = false;
      _this18.$activeNode = node;
      _this18.$activeNode.active = true;
      _this18.$selectedPath.firstChild.data = node.getPath().join('/');
      cPath = nodePath;
      if (cPath === initPath || checkFunc && !checkFunc(cPath, {
        writable: true
      })) {
        _this18.$dialog.$actionBtns[0].disabled = true;
      } else {
        _this18.$dialog.$actionBtns[0].disabled = false;
      }
    };
    this.$rootTree.on('press', onRootPress);
  } else {
    this.$expGroup.removeStyle('display');
    this.$rootTree.addStyle('display', 'none');
  }
  makeTree(this.elt.rootPath, showRoot ? this.$rootTree : this.$expGroup).then(function () {
    var p;
    if (_this18.$activeNode) {
      _this18.$selectedPath.firstChild.data = _this18.$activeNode.getPath().join('/');
      p = _this18.$activeNode.getParent();
      while (p) {
        if (p.status === 'close') {
          p.status = 'open';
        }
        p = p.getParent && p.getParent();
      }
      setTimeout(function () {
        (0, _utils.vScrollIntoView)(_this18.$activeNode.firstChild);
      }, 10);
    }
  });
  return new Promise(function (resolve) {
    var finish = function finish(event) {
      _this18.$dialog.off('action', finish);
      _this18.$modal.remove();
      if (event.action.name === 'cancel') resolve(null);else resolve(cPath);
      if (onRootPress) {
        _this18.$rootTree.off('press', onRootPress);
      }
    };
    _this18.$dialog.on('action', finish);
  });
};
var isMatchAccept = function isMatchAccept(accept, statInfo) {
  if (accept && _typeof(accept) === "object" && accept.accept) accept = accept.accept;
  if (typeof accept !== "string") return true;
  if (!accept) return true;
  if (statInfo.isDirectory) return true;
  var fileInfo = (0, _utils.fileInfoOf)(statInfo);
  if (accept.startsWith('image')) {
    return fileInfo.mimeType && fileInfo.mimeType.startsWith('image');
  }
  return true; // not handle other case
};

/***
 *
 * @param {Finder} elt
 * @constructor
 */
function NavigatorController(elt) {
  var _this19 = this;
  this.elt = elt;
  this.path = '';
  this.rootPath = '';
  this._states = {};
  this._notifiedVisibleIdx = 0;
  this.$navCtn = this.elt.$navCtn;
  this.$nav = this.elt.$nav;
  this.$contentCtn = this.elt.$contentCtn;
  this.$content = this.elt.$content;
  Object.keys(this.constructor.prototype).forEach(function (key) {
    if (key.startsWith('ev_')) {
      _this19[key] = _this19[key].bind(_this19);
    }
  });
  this.$contentCtn.on('scroll', this.ev_contentScroll);
}
NavigatorController.prototype.onStart = function () {
  /**
   *
   * @type {AbsolFileSystem}
   */
  this.fileSystem = this.elt.fileSystem;
  this.$treeByPath = {};
  this.$treeByPath[this.rootPath || '..'] = this.$nav;
  this.reload(this.rootPath, true);
};
NavigatorController.prototype.reload = function (fromPath, autoOpen) {
  var _this20 = this;
  var opened = !autoOpen;
  var makeTree = function makeTree(path, ctnElt) {
    if (!opened && ctnElt.path) {
      _this20.viewDir(ctnElt.path, [_this20.elt.rootPath].concat(ctnElt.getPath()).join('/'));
      opened = true;
    }
    return _this20.fileSystem.readDir(path).then(function (dirs) {
      return Promise.all(dirs.map(function (dir) {
        return _this20.fileSystem.stat(path + '/' + dir);
      }));
    }).then(function (stats) {
      return stats.filter(function (stat) {
        return stat.isDirectory;
      });
    }).then(function (stats) {
      var syncs = [];
      ctnElt.clearChild();
      var children = stats.map(function (stat) {
        var nodePath = path + '/' + stat.name;
        var node = (0, _ACore._)({
          tag: _ExpTree.ExpTree.tag,
          props: {
            stat: stat,
            name: stat.displayName || stat.name,
            icon: {
              tag: 'img',
              props: {
                src: _MessageInput["default"].iconAssetRoot + '/folder.svg'
              }
            },
            path: nodePath
          },
          on: {
            statuschage: function statuschage() {
              _this20._states[path + '/' + stat.name] = node.status;
            },
            press: function press() {
              if (_this20.path !== nodePath) _this20.viewDir(nodePath, [_this20.elt.rootPath].concat(node.getPath()).join('/'));
            }
          }
        });
        node.getNode().on({
          dblclick: function dblclick() {
            if (node.status === 'close') {
              node.status = 'open';
            } else if (node.status === 'open') {
              node.status = 'close';
            }
            _this20._states[nodePath] = node.status;
          }
        });
        _this20.$treeByPath[nodePath] = node;
        if (stat.name !== 'node_modules') syncs.push(makeTree(nodePath, node));
        if (!opened) {
          _this20.viewDir(nodePath, [_this20.elt.rootPath].concat(node.getPath()).join('/'));
          opened = true;
        }
        return node;
      });
      children.forEach(function (c) {
        ctnElt.addChild(c);
      });
      if (children.length) {
        if (_this20._states[ctnElt.path] === 'close' || _this20._states[ctnElt.path] === 'open') {
          ctnElt.status = _this20._states[ctnElt.path];
        } else {
          ctnElt.status = 'close';
        }
      } else {
        ctnElt.status = 'none';
      }
      return Promise.all(syncs);
    });
  };
  if (this.$treeByPath[fromPath || '..']) return makeTree(fromPath, this.$treeByPath[fromPath || '..']);
  return Promise.resolve();
};
NavigatorController.prototype.viewDir = function (path) {
  var _this21 = this;
  this.elt.selectCtrl.deselectAll();
  if (this.$treeByPath[this.path]) {
    this.$treeByPath[this.path].active = false;
    this.$treeByPath[this.path].active = false;
  }
  this.path = path;
  this.$treeByPath[this.path].active = true;
  var c = this.$treeByPath[this.path].getParent();
  while (c) {
    if (c.status === 'close') c.status = 'open';
    c = c.getParent && c.getParent();
  }
  (0, _utils.vScrollIntoView)(this.$treeByPath[this.path].firstChild);
  this.fileSystem.stat(path).then(function (stat) {
    _this21.elt.dirStat = stat;
    if (_this21.path !== path) return;
    if (stat.writable) _this21.elt.addClass('as-writable-folder');else _this21.elt.removeClass('as-writable-folder');
    if (stat.isVirtual) {
      _this21.elt.addClass('as-virtual-folder');
    } else {
      _this21.elt.removeClass('as-virtual-folder');
    }
  });
  this.fileSystem.readDir(path).then(function (dirs) {
    return Promise.all(dirs.map(function (dir) {
      return _this21.fileSystem.stat(path + '/' + dir);
    }));
  }).then(function (stats) {
    if (_this21.path !== path) return;
    stats.sort(function (a, b) {
      var aName, bName;
      if (a.isDirectory === b.isDirectory) {
        aName = a.displayName || a.name;
        bName = b.displayName || b.name;
        if (aName < bName) return -1;
        return 1;
      } else {
        if (a.isDirectory) return -1;
        return 1;
      }
    });
    stats = stats.filter(function (x) {
      return isMatchAccept(_this21.elt.accept, x);
    });
    _this21.viewContent(stats);
  });
};
NavigatorController.prototype.viewContent = function (stats) {
  var _this22 = this;
  this.clearContent();
  stats.forEach(function (stat) {
    _this22.pushContentItem(stat);
  });
  this.notifyVisibleContentItems();
};
NavigatorController.prototype.clearContent = function () {
  this._notifiedVisibleIdx = 0;
  this.$content.clearChild();
};
NavigatorController.prototype.pushContentItem = function (stat) {
  var _this23 = this;
  var elt = (0, _ACore._)({
    tag: _FileThumbnail["default"].tag,
    extendEvent: ['visible'],
    attr: {
      title: stat.displayName || stat.name
    },
    props: {
      isDirectory: stat.isDirectory,
      value: stat.url,
      fileName: stat.displayName || stat.name,
      stat: stat
    },
    on: {
      visible: function visible() {
        var mineType = _ext2MineType["default"][elt.fileType];
        if (mineType && mineType.startsWith('image/')) {
          elt.thumbnail = stat.url;
        }
      },
      dblclick: function dblclick() {
        var prevented = false;
        var event;
        if (!stat.isDirectory) {
          event = {
            fileElt: elt,
            stat: stat,
            preventDefault: function preventDefault() {
              prevented = true;
            }
          };
          _this23.elt.emit('dblclickfile', event);
        }
        if (!prevented) _this23.elt.execCommand('view');
      }
    }
  });
  this.$content.addChild(elt);
};
NavigatorController.prototype.notifyVisibleContentItems = function () {
  var elt;
  var bound = this.$contentCtn.getBoundingClientRect();
  var eBound;
  while (this._notifiedVisibleIdx < this.$content.childNodes.length) {
    elt = this.$content.childNodes[this._notifiedVisibleIdx];
    eBound = elt.getBoundingClientRect();
    if (eBound.top < bound.bottom) {
      elt.emit('visible');
    } else {
      break;
    }
    this._notifiedVisibleIdx++;
  }
};
NavigatorController.prototype.expandAll = function () {
  var _this24 = this;
  var visit = function visit(nodeElt) {
    if (nodeElt.status === 'close') {
      nodeElt.status = 'open';
      _this24._states[nodeElt.path] = 'open';
    }
    if (nodeElt.status === 'open') {
      nodeElt.getChildren().forEach(visit);
    }
  };
  Array.prototype.forEach.call(this.$nav.childNodes, visit);
};
NavigatorController.prototype.collapseAll = function () {
  var _this25 = this;
  var visit = function visit(nodeElt) {
    if (nodeElt.status === 'open') {
      nodeElt.status = 'close';
      _this25._states[nodeElt.path] = 'close';
    }
    if (nodeElt.status === 'close') {
      nodeElt.getChildren().forEach(visit);
    }
  };
  Array.prototype.forEach.call(this.$nav.childNodes, visit);
};
NavigatorController.prototype.ev_contentScroll = function (event) {
  this.notifyVisibleContentItems();
};
var fileTextQuery2Regex = function fileTextQuery2Regex(text) {
  var code = (0, _stringFormat.nonAccentVietnamese)(text.toLowerCase()).replace(/[.,+^$()\[\]{}|\\]/g, function (x) {
    return '\\' + x;
  }).replace(/\*+/g, '(.*)').replace(/\?/g, '.');
  return new RegExp(code, 'i');
};

/***
 * @extends Context
 * @param {Finder} elt
 * @constructor
 */
function SearchController(elt) {
  var _this26 = this;
  _Context["default"].apply(this);
  this.elt = elt;
  this.$searchText = this.elt.$searchText.on('keydown', function (event) {
    if (event.key === 'Enter') {
      _this26.$searchText.blur();
      _this26.search();
    }
  });
}
_OOP["default"].mixClass(SearchController, _Context["default"]);
SearchController.prototype.onStart = function () {
  // console.log('start')
  this.elt.addClass('as-searching');
  this.$searchText.value = '';
  this.$searchText.focus();
};
SearchController.prototype.onStop = function () {
  this.elt.removeClass('as-searching');
  this.session = (0, _stringGenerate.randomIdent)(10);
  this.$searchText.waiting = false;
};
SearchController.prototype.search = function () {
  var _this27 = this;
  var session = (0, _stringGenerate.randomIdent)(10);
  this.session = session;
  this.elt.navCtrl.clearContent();
  this.$searchText.waiting = true;
  var fileSystem = this.elt.fileSystem;
  var rootPath = this.elt.rootPath;
  var result = [];
  var type = this.elt.$searchTypeSelect.value;
  var text = this.$searchText.value.trim();
  var regex = fileTextQuery2Regex(text);
  var isMatched = function isMatched(stat) {
    var fileInfo = (0, _utils.fileInfoOf)(stat.displayName || stat.name);
    var mineType = fileInfo.mimeType || '';
    var fileType = fileInfo.type || '';
    fileType = fileType.toLowerCase();
    if (mineType && type !== 'all') {
      if (type === 'image' && !mineType.startsWith('image') && type !== 'svg') {
        return false;
      } else if (type === 'document' && ['doc', 'docx', 'pdf', 'xlsx'].indexOf(fileType) < 0 && !mineType.startsWith('text')) {
        return false;
      }
    }
    if (text.length === 0) return true;
    if (stat.displayName && stat.displayName.match(regex)) return true;
    if (stat.name && (0, _stringFormat.nonAccentVietnamese)(stat.name.toLowerCase()).match(regex)) return true;
    return false;
  };
  var handleStat = function handleStat(stat) {
    if (session !== _this27.session) return;
    if (stat.isDirectory) return new Promise(function (rs) {
      setTimeout(function () {
        rs(visitDir(stat.path));
      }, 5);
    });
    if (isMatched(stat)) {
      _this27.elt.navCtrl.pushContentItem(stat);
      _this27.elt.navCtrl.notifyVisibleContentItems();
    }
  };
  var handleDirResult = function handleDirResult(dir, names) {
    var syncs = names.map(function (name) {
      return fileSystem.stat(dir + '/' + name).then(function (stat) {
        if (session !== _this27.session) return;
        if (stat) return handleStat(stat);
      });
    });
    return Promise.all(syncs);
  };
  var visitDir = function visitDir(path) {
    return fileSystem.readDir(path).then(function (names) {
      return handleDirResult(path, names);
    });
  };
  visitDir(rootPath).then(function () {
    if (session !== _this27.session) return;
    _this27.$searchText.waiting = false;
  });
};

/***
 *
 * @constructor
 */
function FinderFileSystem() {}
FinderFileSystem.prototype.supporteDisplayName = false;
FinderFileSystem.prototype.readDir = function (path) {};
FinderFileSystem.prototype.unlink = function (path) {
  console.log(path);
};
FinderFileSystem.prototype.stat = function (path) {};
FinderFileSystem.prototype.rmdir = function (path) {};
FinderFileSystem.prototype.mkdir = function (path) {};
FinderFileSystem.prototype.writeFile = function (file, data) {};
FinderFileSystem.prototype.copy = function () {};
FinderFileSystem.prototype.rename = function (path, name) {};
FinderFileSystem.prototype.move = function (oldPath, newPath) {};
FinderFileSystem.prototype.clearCache = function () {};

/***
 * @extends FinderFileSystem
 * @constructor
 */
function AbsolFileSystem() {
  FinderFileSystem.apply(this, arguments);
  this.sync = Promise.resolve();
  this.cache = {
    readDir: {},
    stats: {}
  };
  this.taskMng = new _TaskManager["default"]({
    limit: 4
  });
}
_OOP["default"].mixClass(AbsolFileSystem, FinderFileSystem);
AbsolFileSystem.prototype.API_PREFIX = location.href.indexOf('localhost') >= 0 ? 'https://absol.cf' : '';
AbsolFileSystem.prototype.clearCache = function () {
  this.cache = {
    readDir: {},
    stats: {}
  };
};
AbsolFileSystem.prototype.readDir = function (path) {
  var _this28 = this;
  this.sync = this.sync.then(function () {
    if (_this28.cache.readDir[path || '..']) return _this28.cache.readDir[path || '..'];
    return fetch(_this28.API_PREFIX + '/filesystem/ls.php', {
      method: 'POST',
      cache: "no-cache",
      headers: {
        "Content-Type": "application/json"
      },
      body: JSON.stringify({
        path: path
      })
    }).then(function (res) {
      return res.json();
    }).then(function (res) {
      res = res.filter(function (c) {
        return c.path.startsWith('/html');
      });
      res.forEach(function (c) {
        c.name = c.path.split('/').pop();
        c.url = c.path.replace('/html', _this28.API_PREFIX || location.origin);
      });
      _this28.cache.readDir[path || '..'] = res.map(function (c) {
        return c.name;
      });
      res.forEach(function (c) {
        _this28.cache.stats[c.path] = c;
      });
    }).then(function () {
      return _this28.cache.readDir[path || '..'];
    });
  });
  return this.sync;
};
AbsolFileSystem.prototype.stat = function (path) {
  var _this29 = this;
  return this.sync.then(function () {
    path = path || '';
    if (_this29.cache.stats[path || '..']) return _this29.cache.stats[path || '..'];
    var dir = path.split('/');
    dir.pop();
    dir = dir.join('/');
    return _this29.readDir(dir).then(function () {
      return _this29.cache.stats[path || '..'];
    });
  });
};

/***
 *
 * @param file
 * @param {File|Blob}data
 * @param {function(done: number):void=}onProcess
 */
AbsolFileSystem.prototype.writeFile = function (file, data, onProcess) {
  var _this30 = this;
  if (file.toLowerCase().endsWith('.php')) file += '.txt';
  var folderPath = file.split('/');
  folderPath.pop();
  folderPath = folderPath.join('/');
  delete this.cache.readDir[folderPath];
  var prefix = ['file', new Date().getTime(), (0, _random.randomArbitrary)(0, 1000000) >> 0].join('_');
  var parts = [];
  var chuck_limit = 2 << 20;
  var partName;
  var fileSize = data.size;
  var fileStartOffset = 0;
  var fileEndOffset = 0;
  var idx = 0;
  var syncs = [];
  var syncDone = 0;
  var bundle;
  var began = false;
  var handle = function handle(bundle) {
    return new Promise(function (rs) {
      _this30.taskMng.requestTask(function (finishTask, bundle) {
        if (typeof onProcess === "function" && !began) {
          began = true;
          onProcess(syncDone / (syncs.length || 1));
        }
        var form = new FormData();
        form.append('action', 'upload_part');
        form.append('fileUpload', bundle.file, bundle.name);
        fetch(_this30.API_PREFIX + '/filesystem/writefile.php', {
          method: 'POST',
          body: form
        }).then(function (res) {
          return res.text();
        }).then(function (text) {
          if (text !== 'OK') throw new Error(text);
          syncDone++;
          if (typeof onProcess === "function") {
            onProcess(syncDone / (syncs.length || 1));
          }
          rs(location.origin);
          finishTask();
        });
      }, bundle);
    });
  };
  while (fileStartOffset < fileSize) {
    fileEndOffset = Math.min(fileStartOffset + chuck_limit, fileSize);
    partName = prefix + '.p' + idx;
    parts.push(partName);
    bundle = {
      file: data.slice(fileStartOffset, fileEndOffset),
      idx: idx,
      name: partName
    };
    idx++;
    fileStartOffset = fileEndOffset;
    syncs.push(handle(bundle));
  }
  return Promise.all(syncs).then(function () {
    var form = new FormData();
    form.append('action', 'join_parts');
    form.append('parts', parts.join(';'));
    form.append('path', file);
    fetch(_this30.API_PREFIX + '/filesystem/writefile.php', {
      method: 'POST',
      body: form
    }).then(function (res) {
      return res.text();
    }).then(function (text) {
      if (text !== 'OK') throw new Error(text);
    });
  });
};
AbsolFileSystem.prototype.unlink = function (path) {
  var folderPath = path.split('/');
  folderPath.pop();
  folderPath = folderPath.join('/');
  delete this.cache.readDir[folderPath];
  var form = new FormData();
  form.append('action', 'delete_files');
  form.append('paths', path);
  return fetch(this.API_PREFIX + '/filesystem/writefile.php', {
    method: 'POST',
    body: form
  }).then(function (res) {
    return res.text();
  }).then(function (text) {
    if (text !== 'OK') throw new Error(text);
  });
};
AbsolFileSystem.prototype.rename = function (path, name) {
  var _this31 = this;
  var folderPath = path.split('/');
  folderPath.pop();
  folderPath = folderPath.join('/');
  var form = new FormData();
  form.append('action', 'rename');
  form.append('path', path);
  form.append('new_name', name);
  return fetch(this.API_PREFIX + '/filesystem/writefile.php', {
    method: 'POST',
    body: form
  }).then(function (res) {
    return res.text();
  }).then(function (text) {
    if (text !== 'OK') throw new Error(text);
    var newPath = folderPath + '/' + name;
    delete _this31.cache.readDir[folderPath];
    delete _this31.cache.stats[path];
    return {
      url: newPath.replace('/html', _this31.API_PREFIX || location.origin),
      path: newPath,
      name: name
    };
  });
};
AbsolFileSystem.prototype.move = function (oldPath, newPath) {
  var _this32 = this;
  var oldFolderPath = oldPath.split('/');
  oldFolderPath.pop();
  oldFolderPath = oldFolderPath.join('/');
  var newFolderPath = newPath.split('/');
  newFolderPath.pop();
  newFolderPath = newFolderPath.join('/');
  var form = new FormData();
  form.append('action', 'move');
  form.append('old_path', oldPath);
  form.append('new_path', newPath);
  return fetch(this.API_PREFIX + '/filesystem/writefile.php', {
    method: 'POST',
    body: form
  }).then(function (res) {
    return res.text();
  }).then(function (text) {
    if (text !== 'OK') throw new Error(text);
    delete _this32.cache.readDir[oldFolderPath];
    delete _this32.cache.readDir[newFolderPath];
    delete _this32.cache.stats[oldPath];
  });
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _utils = __webpack_require__(84512);
/***
 *
 * @param {SelectionItem[]} arr
 * @constructor
 */

function ItemDictionary(arr, opt) {
  this.opt = Object.assign({
    depth: true
  }, opt || {});
  this.arr = arr;
  this.dict = {};
  this.dupKeys = [];
  this.update();
}
ItemDictionary.prototype.update = function () {
  this.dict = {};
  var dict = this.dict;
  var depth = this.opt.depth;
  var dupKeyDict = {};
  function scan(arr) {
    var item;
    var key;
    for (var i = 0; i < arr.length; ++i) {
      item = arr[i];
      key = (0, _utils.keyStringOf)(item.value);
      if (dict[key]) {
        dict[key].dupItems = dict[key].dupItems || [];
        dict[key].dupItems.push(item);
        dupKeyDict[key] = 1;
      } else {
        dict[key] = {
          idx: i,
          item: item
        };
      }
      if (depth && item.items && item.items.length > 0) {
        scan(item.items);
      }
    }
  }
  scan(this.arr);
  this.dupKeys = Object.keys(dupKeyDict);
};

/***
 *
 * @param {String | Number} value
 * @returns {SelectionItem | null}
 */
ItemDictionary.prototype.getItemByValue = function (value) {
  var iDict = this.dict[(0, _utils.keyStringOf)(value)];
  if (iDict) return iDict.item;
  return null;
};

/***
 *
 * @param {String | Number} value
 * @returns {Array<SelectionItem> }
 */
ItemDictionary.prototype.getAllItemByValue = function (value) {
  var key = (0, _utils.keyStringOf)(value);
  var iDict = this.dict[key];
  if (iDict) return [iDict.item].concat(iDict.dupItems[key] || []);
  return [];
};
ItemDictionary.prototype.getDuplicateKeys = function () {
  return this.dupKeys;
};
var _default = ItemDictionary;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = ListSearchFactor;
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 ListSearchFactor(global) {
  /***
   * @typedef SelectionItem2
   * @property {String} text
   * @property {String} desc
   * @property {String} __text__
   * @property {String} __nvnText__
   * @property {Array<String>} __words__
   * @property {Array<String>} __nvnWords__
   * @property {object} __wordDict__
   * @property {object} __nvnWordDict__
   * @module SelectionItem2
   */

  function revokeResource(o) {
    if (!o) return;
    var oc, ocs;
    var keys, key;
    if (Array.isArray(o)) {
      while (o.length) {
        oc = o.pop();
        try {
          revokeResource(oc);
        } catch (err) {}
      }
    } else if (o.removeResource) {
      o.removeResource();
    } else if (_typeof(o) === "object") {
      keys = [];
      ocs = [];
      for (key in o) {
        keys.push(key);
      }
      while (keys.length) {
        key = keys.pop();
        ocs.push(o[keys]);
        try {
          delete o[key];
        } catch (err) {}
      }
      while (ocs.length) {
        try {
          revokeResource(ocs.pop());
        } catch (err) {}
      }
    }
    ocs = undefined;
    oc = undefined;
    keys = undefined;
    key = undefined;
    o = undefined;
  }
  function nonAccentVietnamese(s) {
    return s.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, "a").replace(/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ/g, "A").replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, "e").replace(/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/g, "E").replace(/ì|í|ị|ỉ|ĩ/g, "i").replace(/Ì|Í|Ị|Ỉ|Ĩ/g, "I").replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, "o").replace(/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ/g, "O").replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, "u").replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, "U").replace(/ỳ|ý|ỵ|ỷ|ỹ/g, "y").replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, "Y").replace(/đ/g, "d").replace(/Đ/g, "D").replace(/\u0300|\u0301|\u0303|\u0309|\u0323/g, "").replace(/\u02C6|\u0306|\u031B/g, "");
  }
  function harmonicMean(a, b) {
    return 2 / (1 / a + 1 / b);
  }
  function wordLike(a, b) {
    var m = a.length;
    var n = b.length;
    function map(i, j) {
      return i * (n + 1) + j;
    }
    var Q = Array((m + 1) * (n + 1)).fill(0);
    for (var i = 0; i < m; ++i) {
      for (var j = 0; j < n; ++j) {
        if (a.charAt(i) == b.charAt(j)) {
          if (Q[map(i + 1, j + 1)]) {
            if (Q[map(i + 1, j + 1)] < Q[map(i, j)] + 1) Q[map(i + 1, j + 1)] = Q[map(i, j)] + 1;
          } else Q[map(i + 1, j + 1)] = Q[map(i, j)] + 1;
        } else Q[map(i + 1, j + 1)] = Math.max(Q[map(i + 1, j)], Q[map(i, j + 1)]);
      }
    }
    return Q[map(m, n)] / harmonicMean(m, n);
  }
  function wordsMatch(sq1, sq2, matchWordPow) {
    matchWordPow = matchWordPow === undefined ? 1 : matchWordPow;
    var m = sq1.length;
    var n = sq2.length;
    function map(i, j) {
      return i * (n + 1) + j;
    }
    var Q = Array((m + 1) * (n + 1)).fill(0);
    var e = 0.0;
    for (var i = 0; i < m; ++i) {
      for (var j = 0; j < n; ++j) {
        e = Math.pow(wordLike(sq1[i], sq2[j]), matchWordPow);
        if (Q[map(i + 1, j + 1)]) {
          if (Q[map(i + 1, j + 1)] < Q[map(i, j)] + e) Q[map(i + 1, j + 1)] = Q[map(i, j)] + e;
        } else Q[map(i + 1, j + 1)] = Q[map(i, j)] + e;
        e = Math.max(Q[map(i + 1, j)], Q[map(i, j + 1)]);
        if (e > Q[map(i + 1, j + 1)]) Q[map(i + 1, j + 1)] = e;
      }
    }
    return Q[map(m, n)];
  }
  var EXTRA_MATCH_SCORE = 9;
  var NVN_EXTRA_MATCH_SCORE = 8;
  var EQUAL_MATCH_SCORE = 10;
  var WORD_MATCH_SCORE = 3;
  var HAS_WORD_SCORE = 30;
  var HAS_NVN_WORD_SCORE = 29;

  /***
   *
   * @param {SelectionItem2} item
   * @returns {*}
   */
  function prepareSearchForItem(item) {
    if (!item.text || !item.text.charAt) item.text = item.text + '';
    var spliter = /[\s/]+/;
    var __text__ = item.text.replace(/([\s\b\-()\[\]"']|&#8239;|&nbsp;|&#xA0;|\s")+/g, ' ').trim().toLowerCase();
    var __nvnText__ = nonAccentVietnamese(__text__);
    item.__words__ = __text__.split(spliter);
    item.__text__ = item.__words__.join(' ');
    item.__words__.sort();
    item.__wordDict__ = item.__words__.reduce(function (ac, cr, i) {
      ac[cr] = i + 1;
      return ac;
    }, {});
    item.__nvnWords__ = __nvnText__.split(spliter);
    item.__nvnText__ = item.__nvnWords__.join(' ');
    item.__nvnWords__.sort();
    item.__nvnWordDict__ = item.__nvnWords__.reduce(function (ac, cr, i) {
      ac[cr] = i + 1;
      return ac;
    }, {});
    return item;
  }
  function isItemMustIncluded(queryItem, item) {
    if (!queryItem) return true;
    if (item.__nvnText__.indexOf(queryItem.__nvnText__) >= 0) {
      return true;
    }
    var dict1 = queryItem.__nvnWordDict__;
    var dict2 = item.__nvnWordDict__;
    for (var i in dict1) {
      for (var j in dict2) {
        if (j.indexOf(i) < 0) return false;
      }
    }
    return true;
  }
  function calcItemMatchScore(queryItem, item) {
    var score = 0;
    if (!item.__text__) return 0;
    var hwScore = 0;
    var i;
    for (i = 0; i < queryItem.__words__.length; ++i) {
      if (item.__wordDict__[queryItem.__words__[i]]) {
        hwScore += HAS_WORD_SCORE;
      } else if (item.__nvnWordDict__[queryItem.__nvnWords__[i]]) {
        hwScore += HAS_NVN_WORD_SCORE;
      }
    }
    score = hwScore;
    if (item.__text__ === queryItem.__text__) {
      score += EQUAL_MATCH_SCORE;
    }
    var extraIndex = item.__text__.indexOf(queryItem.__text__);
    if (extraIndex >= 0) {
      score += EXTRA_MATCH_SCORE;
    }
    extraIndex = item.__nvnText__.indexOf(queryItem.__nvnText__);
    if (extraIndex >= 0) {
      score += EXTRA_MATCH_SCORE;
    }
    var n = Math.max(queryItem.__words__.length + 1, 1);
    score = Math.max(score, wordsMatch(queryItem.__words__, item.__words__) / n * 2 * WORD_MATCH_SCORE, wordsMatch(queryItem.__nvnWords__, item.__nvnWords__) / n * 2 * WORD_MATCH_SCORE);
    return score;
  }
  function scoreCmp(a, b) {
    if (b.score === a.score) {
      if (b.item.__nvnText__ > a.item.__nvnText__) return -1;
      return 1;
    }
    return b.score - a.score;
  }
  function keyStringOf(o) {
    var type = _typeof(o);
    var keys;
    if (o && type === "object") {
      if (o.getTime) {
        return 'd(' + o.getTime() + ')';
      } else if (o.length && o.map) {
        return 'a(' + o.map(function (val) {
          return keyStringOf(val);
        }).join(',') + ')';
      } else {
        keys = Object.keys(o);
        keys.sort();
        return 'o(' + keys.map(function (key) {
          return key + ':' + keyStringOf(o[key]);
        }).join(',') + ')';
      }
    } else {
      return type[0] + '(' + o + ')';
    }
  }
  function matchFilter(item, filter) {
    if (!filter) return true;
    var keys = item.keys;
    if (!keys) return false;
    for (var i in filter) {
      if (!keyCmp(keys[i], filter[i])) return false;
    }
    return true;
  }
  function toComparable(x) {
    if (!x) return x;
    var type = _typeof(x);
    if (type === 'string') return x;
    if (type === "number") return x;
    if (type === "boolean") return x;
    if (type.getTime) return type.getTime();
    return x;
  }
  function keyCmp(itemKey, filterKey) {
    if (itemKey === filterKey) return true;
    if (!itemKey !== !filterKey) return false;
    if (!itemKey || !filterKey) return false;
    var filterKeyString = keyStringOf(filterKey);
    function withFilter(x) {
      var xString = keyStringOf(x);
      var res = xString === filterKeyString;
      if (!res && _typeof(filterKey) === "object") {
        if (filterKey.some) {
          res = filterKey.some(function (y) {
            return keyStringOf(y) === x;
          });
        } else if ('min' in filterKey || 'max' in filterKey) {
          res = true;
          if ('min' in filterKey) {
            res = res && toComparable(x) >= toComparable(filterKey.min);
          }
          if ('max' in filterKey) {
            res = res && toComparable(x) <= toComparable(filterKey.max);
          }
        }
      }
      return res;
    }
    if (itemKey.some) {
      return itemKey.some(withFilter);
    } else return withFilter(itemKey);
  }
  function Slave() {
    this.items = [];
  }
  Slave.prototype.revokeResource = function () {
    revokeResource(this.items);
    this.items = undefined;
  };
  Slave.prototype.processItems = function (items) {
    this.items = items;
    this.items.forEach(function visit(item) {
      prepareSearchForItem(item);
      if (item.items) item.items.forEach(visit);
    });
  };
  Slave.prototype.callQuery = function (query) {
    prepareSearchForItem(query);
    var minScore = Infinity;
    var maxScore = -Infinity;
    var scoreHolders = this.items.map(function visit(item) {
      var res = {};
      res.score = calcItemMatchScore(query, item);
      res.mustIncluded = isItemMustIncluded(query, item);
      res.value = item.value;
      res.maxChildScore = -Infinity;
      if (item.items) {
        res.child = item.items.map(visit);
        res.maxChildScore = res.child.reduce(function (ac, cr) {
          return Math.max(ac, cr.maxChildScore, cr.score);
        }, res.maxChildScore);
      }
      minScore = Math.min(minScore, res.score);
      maxScore = Math.max(maxScore, res.score);
      return res;
    });
    var threshold = maxScore - (maxScore - minScore) / 4;
    if (maxScore < 3) threshold = maxScore - (maxScore - minScore) / 8;
    var resDict = scoreHolders.reduce(function rValue(ac, cr) {
      if (Math.max(cr.maxChildScore, cr.score) >= threshold || cr.mustIncluded) ac[cr.value] = [cr.score, cr.maxChildScore];
      if (cr.child) cr.child.reduce(rValue, ac);
      return ac;
    }, {});
    return resDict;
  };
  var slaves = {};
  global.transferSearchItems = function (id, items) {
    if (!slaves[id]) slaves[id] = new Slave();
    slaves[id].processItems(items);
  };
  global.callQuery = function (id, query) {
    if (slaves[id]) return slaves[id].callQuery(query);
    return null;
  };
  global.destroySlave = function (id) {
    revokeResource(slaves);
    delete slaves[id];
  };
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _stringGenerate = __webpack_require__(10713);
var _Thread = _interopRequireDefault(__webpack_require__(44067));
var _ListSearchFactor = _interopRequireDefault(__webpack_require__(89194));
var _utils = __webpack_require__(84512);
var _noop = _interopRequireDefault(__webpack_require__(5025));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function ListSearchMaster() {
  this.prepare();
  this.id = (0, _stringGenerate.randomIdent)(8);
  this.cache = {};
  this.share.instances.push(this.id);
}
ListSearchMaster.prototype.share = {
  worker: null,
  instances: []
};
ListSearchMaster.prototype.prepare = function () {
  if (this.share.worker) return;
  this.share.worker = new _Thread["default"]({
    methods: {
      init: _ListSearchFactor["default"]
    },
    extendCode: 'init(this)'
  });
};
ListSearchMaster.prototype.transfer = function (items) {
  this.prepare();
  this.cache = {};
  return this.share.worker.invoke('transferSearchItems', this.id, items);
};
ListSearchMaster.prototype.query = function (query) {
  var key = (0, _utils.calcDTQueryHash)(query);
  if (!this.cache[key]) {
    this.cache[key] = this.share.worker.invoke('callQuery', this.id, query);
  }
  return this.cache[key];
};
ListSearchMaster.prototype.destroy = function () {
  // return;
  this.cache = {};
  this.share.worker.invoke('destroySlave', this.id);
  return;
  this.destroy = _noop["default"];
  var idx = this.share.instances.indexOf(this.id);
  if (idx >= 0) {
    this.share.instances.splice(idx, 1);
    if (this.share.instances.length === 0) {
      this.share.worker.revokeResource();
      this.share.worker = null;
    }
  }
};
ListSearchMaster.prototype.revokeResource = function () {
  return;
  this.destroy();
  this.revokeResource = _noop["default"];
};
var _default = ListSearchMaster;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.depthIndexingByValue = depthIndexingByValue;
exports.indexingByValue = indexingByValue;
function depthIndexingByValue(items, context) {
  context = context || {
    idx: 0,
    dict: {}
  };
  return items.reduce(function (ac, cr, idx) {
    var value = typeof cr === "string" ? cr : cr.value + '';
    ac[value] = ac[value] || [];
    ac[value].push({
      idx: context.idx++,
      item: cr
    });
    if (cr && cr.items && cr.items.length > 0) {
      depthIndexingByValue(cr.items, context);
    }
    return ac;
  }, context.dict);
}
function indexingByValue(items, dict) {
  return items.reduce(function (ac, cr, idx) {
    var value = typeof cr === "string" ? cr : cr.value + '';
    ac[value] = ac[value] || [];
    ac[value].push({
      idx: idx,
      item: cr
    });
    return ac;
  }, dict || {});
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.calcItemMatchScore = calcItemMatchScore;
exports["default"] = prepareSearchForItem;
exports.prepareSearchForList = prepareSearchForList;
exports.searchCheckListByText = searchCheckListByText;
exports.searchListByText = searchListByText;
exports.searchTreeListByText = searchTreeListByText;
var _stringFormat = __webpack_require__(22294);
var _stringMatching = __webpack_require__(59163);
var UNCASE_MATCH_SCORE = 4;
var UVN_MATCH_SCORE = 3;
var EXTRA_MATCH_SCORE = 9;
var NVN_EXTRA_MATCH_SCORE = 8;
var EQUAL_MATCH_SCORE = 10;
var WORD_MATCH_SCORE = 3;
var HAS_WORD_SCORE = 30;
var HAS_NVN_WORD_SCORE = 29;

/***
 *
 * @param {SelectionItem} item
 * @returns {*}
 */
function prepareSearchForItem(item) {
  if (!item.text || !item.text.charAt) item.text = item.text + '';
  var spliter = /\s+/;
  var __text__ = item.text.replace(/([\s\b\-()\[\]"']|&#8239;|&nbsp;|&#xA0;|\s")+/g, ' ').trim().toLowerCase();
  var __words__ = __text__.split(spliter);
  __text__ = __words__.join(' ');
  var __wordDict__ = __words__.reduce(function (ac, cr, i) {
    ac[cr] = ac[cr] || i + 1;
    return ac;
  }, {});
  var __textNoneCase__ = __text__;
  var __nvnText__ = (0, _stringFormat.nonAccentVietnamese)(__text__);
  var __nvnTextNoneCase__ = __nvnText__;
  var __nvnWordDict__ = __words__.reduce(function (ac, cr, i) {
    ac[cr] = ac[cr] || i + 1;
    return ac;
  }, {});
  Object.defineProperties(item, {
    __text__: {
      configurable: true,
      enumerable: false,
      writable: true,
      value: __text__
    },
    __words__: {
      configurable: true,
      enumerable: false,
      writable: true,
      value: __text__.split(spliter)
    },
    __wordDict__: {
      configurable: true,
      enumerable: false,
      writable: true,
      value: __wordDict__
    },
    __textNoneCase__: {
      configurable: true,
      enumerable: false,
      writable: true,
      value: __textNoneCase__
    },
    __wordsNoneCase__: {
      configurable: true,
      enumerable: false,
      writable: true,
      value: __textNoneCase__.split(spliter)
    },
    __nvnText__: {
      configurable: true,
      enumerable: false,
      writable: true,
      value: __nvnText__
    },
    __nvnWords__: {
      configurable: true,
      enumerable: false,
      writable: true,
      value: __nvnText__.split(spliter)
    },
    __nvnWordDict__: {
      configurable: true,
      enumerable: false,
      writable: true,
      value: __nvnWordDict__
    },
    __nvnTextNoneCase__: {
      configurable: true,
      enumerable: false,
      writable: true,
      value: __nvnTextNoneCase__
    },
    __nvnWordsNoneCase__: {
      configurable: true,
      enumerable: false,
      writable: true,
      value: __nvnTextNoneCase__.split(spliter)
    }
  });
  return item;
}
function prepareSearchForList(items) {
  var item;
  for (var i = 0; i < items.length; ++i) {
    if (typeof items[i] == 'string') {
      items[i] = {
        text: items[i],
        value: items[i]
      };
    }
    item = items[i];
    prepareSearchForItem(item);
    if (item.items) prepareSearchForList(item.items);
  }
  return items;
}
function calcItemMatchScore(queryItem, item) {
  var score = 0;
  if (!item.__text__) return 0;
  var hwScore = 0;
  var i;
  for (i = 0; i < queryItem.__words__.length; ++i) {
    if (item.__wordDict__[queryItem.__words__[i]]) {
      hwScore += HAS_WORD_SCORE;
    } else if (item.__nvnWordDict__[queryItem.__nvnWords__[i]]) {
      hwScore += HAS_NVN_WORD_SCORE;
    }
  }
  score = hwScore;
  if (item.__text__ === queryItem.__text__) {
    score += EQUAL_MATCH_SCORE;
  }
  var extraIndex = item.__text__.indexOf(queryItem.__text__);
  if (extraIndex >= 0) {
    score += EXTRA_MATCH_SCORE;
  }
  extraIndex = item.__nvnText__.indexOf(queryItem.__nvnText__);
  if (extraIndex >= 0) {
    score += EXTRA_MATCH_SCORE;
  }
  var n = Math.max(queryItem.__words__.length + 1, 1);
  score = Math.max(score, (0, _stringMatching.wordsMatch)(queryItem.__words__, item.__words__), (0, _stringMatching.wordsMatch)(queryItem.__nvnWords__, item.__nvnWords__)) / n * 2 * WORD_MATCH_SCORE;
  return score;
}
function isItemMustIncluded(queryItem, item) {
  if (!queryItem) return true;
  if (item.__nvnText__.indexOf(queryItem.__nvnText__) >= 0) {
    return true;
  }
  var dict1 = queryItem.__nvnWordDict__;
  var dict2 = item.__nvnWordDict__;
  for (var i in dict1) {
    for (var j in dict2) {
      if (j.indexOf(i) < 0) return false;
    }
  }
  return true;
}

/***
 *
 * @param  {String} query
 * @param {Array<SelectionItem>} items
 */
function searchListByText(query, items) {
  query = (query || '').trim();
  if (query.length === 0 || items.length === 0) return items;
  var queryItem = prepareSearchForItem({
    text: query
  });
  var its = items.map(function (item) {
    return {
      item: item,
      score: calcItemMatchScore(queryItem, item),
      mustIncluded: isItemMustIncluded(queryItem, item)
    };
  });
  its.sort(function (a, b) {
    if (b.score - a.score == 0) {
      if (b.item.__nvnText__ > a.item.__nvnText__) return -1;
      return 1;
    }
    return b.score - a.score;
  });
  var midValue = (its[0].score + its[its.length - 1].score) / 2;
  if (midValue === 0) midValue += 0.1;
  if (midValue < 1) midValue = 1;
  return its.filter(function (it) {
    return it.score >= midValue || it.mustIncluded;
  }).map(function (it) {
    return it.item;
  });
}

/***
 *
 * @param  {String} query
 * @param {Array<SelectionItem>} items
 */
function searchTreeListByText(query, items) {
  query = (query || '').trim();
  if (query.length == 0 || items.length == 0) return items;
  var queryItem = prepareSearchForItem({
    text: query
  });
  var gmaxScore = 0;
  var gminScore = 1000;
  function makeScoreRecursive(item) {
    var score = calcItemMatchScore(queryItem, item);
    var mustIncluded = isItemMustIncluded(queryItem, item);
    gmaxScore = Math.max(score, gmaxScore);
    gminScore = Math.min(score, gminScore);
    var children = (item.items || []).map(function (item) {
      return makeScoreRecursive(item);
    });
    mustIncluded = mustIncluded || children.some(function (c) {
      return c.mustIncluded;
    });
    var maxScore = children.reduce(function (ac, cr) {
      return Math.max(ac, cr.maxScore);
    }, score);
    return {
      score: score,
      maxScore: maxScore,
      item: item,
      children: children,
      mustIncluded: mustIncluded
    };
  }
  function sortcmp(a, b) {
    return b.maxScore - a.maxScore;
  }
  function filterItems(nodes, medScore) {
    nodes.sort(sortcmp);
    return nodes.filter(function (node) {
      return node.maxScore >= medScore || node.mustIncluded;
    }).map(function (node) {
      var res;
      if (typeof node.item == 'string') {
        res = node.item;
      } else {
        res = Object.assign({}, node.item);
        res.ref = node.item;
        if (node.children && node.children.length > 0) {
          res.items = filterItems(node.children, medScore);
          if (res.items.length == 0) delete res.items;
        }
      }
      return res;
    });
  }
  var scoredItems = items.map(makeScoreRecursive);
  var medianScore = (gminScore + gmaxScore) / 2;
  var items = filterItems(scoredItems, medianScore);
  return items;
}

/***
 * checked is bestValue
 * @param  {String} query
 * @param {Array<SelectionItem|{checked:boolean, text: string}>} items
 */
function searchCheckListByText(query, items) {
  var res = items.filter(function (it) {
    return it.checked;
  });
  var nItems = items.filter(function (it) {
    return !it.checked;
  });
  prepareSearchForList(items);
  nItems = searchListByText(query, nItems);
  return res.concat(nItems);
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = treeListToList;
/***
 *
 * @param {Array<SelectionItem>} items
 * @returns {Array<SelectionItem>}
 */
function treeListToList(items) {
  var arr = [];
  function visit(level, node) {
    Object.defineProperty(node, 'level', {
      configurable: true,
      writable: true,
      value: level
    });
    arr.push(node);
    if (Array.isArray(node.items) && node.items.length > 0) node.items.forEach(visit.bind(null, level + 1));
  }
  if (items && items.forEach) items.forEach(visit.bind(null, 0));
  return arr;
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _MessageInputPlugin = _interopRequireDefault(__webpack_require__(22232));
var _ACore = __webpack_require__(34093);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/****
 * @extends MessageInputPlugin
 * @constructor
 */
function MIEmojiPlugin(inputElt) {
  _MessageInputPlugin["default"].call(this, inputElt, {
    id: 'emoji_picker',
    icon: 'span.mdi.mdi-emoticon-happy-outline'
  });
  for (var key in this) {
    if (key.startsWith('ev_')) {
      this[key] = this[key].bind(this);
    }
  }
}
_OOP["default"].mixClass(MIEmojiPlugin, _MessageInputPlugin["default"]);
MIEmojiPlugin.prototype.createContent = function () {
  return (0, _ACore._)('emojipicker') //.addTo(this.$emojiPickerCtn)
  .on('pick', this.ev_PickEmoji);
};
MIEmojiPlugin.prototype.ev_PickEmoji = function (event) {
  var text = this.inputElt.$preInput.value;
  var selected = this._lastInputSelectPosion;
  var newText = text.substr(0, selected.start) + event.key + text.substr(selected.end);
  var newOffset = selected.start + event.key.length;
  this._lastInputSelectPosion = {
    start: newOffset,
    end: newOffset
  };
  this.inputElt.$preInput.focus();
  this.inputElt.$preInput.applyData(newText, newOffset);
  this.inputElt.$preInput.commitChange(newText, newOffset);
  this.inputElt.notifySizeChange();
  this.inputElt.$preInput.focus();
};
MIEmojiPlugin.prototype.onOpen = function () {
  var value = this.inputElt.$preInput.value;
  this._lastInputSelectPosion = this.inputElt.$preInput.getSelectPosition() || {
    start: value.length,
    end: value.length
  };
  this.inputElt.$preInput.focus();
};
var _default = MIEmojiPlugin;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.MODE_NEW = exports.MODE_EDIT = void 0;
exports.MessageQuote = MessageQuote;
exports["default"] = void 0;
exports.parseMessage = parseMessage;
exports.prepareIcon = prepareIcon;
__webpack_require__(44647);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _utils = __webpack_require__(84512);
var _EmojiAnims = __webpack_require__(98541);
var _EmojiPicker = _interopRequireDefault(__webpack_require__(24169));
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _stringGenerate = __webpack_require__(10713);
var _CMDRunner = _interopRequireDefault(__webpack_require__(34470));
var _keyboard = __webpack_require__(95141);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _tiutils = __webpack_require__(94614);
var _MessageInputPlugin = _interopRequireDefault(__webpack_require__(22232));
var _MIEmojiPlugin = _interopRequireDefault(__webpack_require__(57244));
var _catalog = _interopRequireDefault(__webpack_require__(82398));
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); }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;
var $$ = _ACore["default"].$$;

/***
 *
 * @typedef {{text:string, desc: string, img?:string, file?:string}|string} MessageInputQuote
 */

var MODE_NEW = 0;
exports.MODE_NEW = MODE_NEW;
var MODE_EDIT = 1;
exports.MODE_EDIT = MODE_EDIT;
var isMobile = _BrowserDetector["default"].isMobile;

/***
 * @extends AElement
 * @constructor
 */
function MessageInput() {
  this._cmdRunner = new _CMDRunner["default"](this);
  this._keyMaps = {};
  this._plugins = [];
  this._mode = MODE_NEW; //edit
  this._editingText = "";
  prepareIcon();
  /**
   * @type {import('../PreInput').default}
   */
  this.$preInput = $('.as-message-input-pre', this);
  this.$preInput.on('change', this.eventHandler.preInputChange).on('keyup', this.eventHandler.preInputKeyUp).on('keydown', this.eventHandler.preInputKeyDown).on('pasteimg', this.eventHandler.preInputPasteImg).on('focus', this.eventHandler.preInputFocus).on('blur', this.eventHandler.preInputBlur);
  // //every can make size change
  this._imageFiles = [];
  this._files = [];
  this._latBound = {};
  this.$quote = $('messagequote.as-message-input-quote', this).on('pressremove', this.eventHandler.clickQuoteRemoveBtn);
  this.$left = $('.as-message-input-left', this);
  this.$right = $('.as-message-input-right', this);
  this.$attachmentCtn = $('.as-message-input-attachment-ctn', this);
  this.$fileBtn = $('.as-message-input-plugin-file', this).on('click', this.openFileDialog.bind(this));
  this.$attachmentAddBtn = $('.as-message-input-attachment-add-btn', this).on('click', this.openFileDialog.bind(this));
  this.$sendBtn = $('.as-message-input-plugin-send', this).on('click', this.notifySend.bind(this));
  this.$cancelBtn = $('.as-message-input-plugin-cancel', this).on('click', this.notifyCancel.bind(this));
  this.$attachhook = _('attachhook').addTo(this).on('attached', this.notifySizeChange.bind(this)).on('attached', this._updateSize.bind(this));
  this.on('drop', this.eventHandler.drop).on('dragover', this.eventHandler.dragover);
  _OOP["default"].drillProperty(this, this.$preInput, 'tagList');
  this.autoSend = false;
  /***
   *
   * @type {MessageInputQuote|null}
   */
  this.quote = null;
  this.addPlugin(new _MIEmojiPlugin["default"](this));
}
MessageInput.MODE_EDIT = MODE_EDIT;
MessageInput.MODE_NEW = MODE_NEW;
MessageInput.iconAssetRoot = function () {
  if (location.hostname.match(/^.*(\.?absol\.cf|absol\.ddns\.net)$/) || location.hostname === 'localhost') return 'https://absol.cf/exticons/vivid';
  return '/vivid_exticons';
}();
MessageInput.tag = 'MessageInput'.toLowerCase();
MessageInput.render = function (data) {
  data = data || {};
  data.iconAssetRoot = data.iconAssetRoot || MessageInput.iconAssetRoot;
  return _({
    attr: {
      'data-icon-asset-root': MessageInput.iconAssetRoot
    },
    "class": ['as-message-input'].concat(data.v2 ? ['as-v2'] : []),
    extendEvent: ['sendtext', 'sendimage', 'sendfile', 'sendquote', 'cancel', 'change', 'sizechange', 'send', 'useraddfile'],
    child: [{
      "class": 'as-message-input-right',
      child: [{
        tag: 'button',
        "class": ['as-message-input-plugin-btn', 'as-message-input-plugin-file'],
        child: 'span.mdi.mdi-attachment.mdi-rotate-90'
      }, {
        tag: 'button',
        "class": ['as-message-input-plugin-btn', 'as-message-input-plugin-send'],
        child: 'span.mdi.mdi-send'
      }, {
        tag: 'button',
        "class": ['as-message-input-plugin-btn', 'as-message-input-plugin-cancel'],
        child: 'span.mdi.mdi-close'
      }]
    }, {
      "class": 'as-message-input-pre-ctn',
      child: ['messagequote.as-message-input-quote.as-removable.as-shorten-text', {
        "class": 'as-message-input-left'
      }, {
        "class": ['as-message-input-attachment-ctn', 'as-bscroller'],
        child: [{
          tag: 'button',
          "class": 'as-message-input-attachment-add-btn',
          child: ['span.mdi.mdi-arrow-down-bold.as-message-input-attachment-add-btn-drop', {
            tag: 'span',
            "class": 'as-message-input-attachment-add-btn-plus',
            child: {
              text: "+"
            }
          }]
        }]
      }, (data.v2 ? 'tokenizehyperinput' : 'preinput') + '.as-message-input-pre.absol-bscroller']
    }]
  });
};
MessageInput.prototype.notifyChange = function () {
  this.emit('change', {
    name: 'change',
    target: this
  }, this);
  if (this.autoSend) {
    if (this.files.length > 0 || this.images.length > 0) this.notifySend();
  }
};
MessageInput.prototype.notifySend = function () {
  var eventData = {
    imageRemovePrevented: false,
    fileRemovePrevented: false,
    textRemovePrevented: false,
    quoteRemovePrevented: false,
    target: this,
    files: this.files,
    images: this.images,
    text: this.text
  };
  if (eventData.files.length > 0) {
    this.emit('sendfile', Object.assign(eventData, {
      type: 'sendfile',
      preventDefault: function preventDefault() {
        this.fileRemovePrevented = true;
      }
    }), this);
  }
  if (eventData.images.length > 0) {
    this.emit('sendimage', Object.assign(eventData, {
      type: 'sendimage',
      preventDefault: function preventDefault() {
        this.imageRemovePrevented = true;
      }
    }), this);
  }
  if (typeof this.quote === "string" || this.quote) {
    this.emit('sendquote', Object.assign(eventData, {
      type: 'sendquote',
      preventDefault: function preventDefault() {
        this.quoteRemovePrevented = true;
      }
    }), this);
  }
  if (this.files.length > 0 || eventData.images.length > 0 || eventData.text || typeof this.quote === "string" || this.quote) {
    if (eventData.text) this.$preInput.focus();
    this.emit('send', Object.assign(eventData, {
      type: 'send',
      preventDefault: function preventDefault() {
        this.imageRemovePrevented = true;
        this.fileRemovePrevented = true;
        this.imageRemovePrevented = true;
        this.quoteRemovePrevented = true;
      }
    }), this);
  }
  if (!eventData.fileRemovePrevented) this.files = [];
  if (!eventData.imageRemovePrevented) this.images = [];
  if (!eventData.textRemovePrevented) this.text = '';
  if (!eventData.quoteRemovePrevented) this.quote = null;
};
MessageInput.prototype.notifyCancel = function () {
  this.emit('cancel', {
    type: 'cancel',
    name: 'send',
    target: this,
    clearAllContent: this.clearAllContent.bind(this)
  }, this);
};
MessageInput.prototype.clearAllContent = function () {
  this.text = '';
  this.quote = null;
  this.files = [];
  this.images = [];
};
MessageInput.prototype.focus = function () {
  var value = this.$preInput.value;
  var range = this.$preInput.getSelectPosition() || {
    start: value.length,
    end: value.length
  };
  this.$preInput.focus();
  this.$preInput.applyData(value, range);
};
MessageInput.prototype.blur = function () {
  this.$preInput.blur();
};
MessageInput.prototype._updateAttachmentClass = function () {
  if (this._imageFiles.length + this._files.length) {
    this.addClass("as-has-attachment");
  } else {
    this.removeClass("as-has-attachment");
  }
  this._updateSize();
};
MessageInput.prototype._updateSize = function () {
  var fs = this.getFontSize() || 14;
  this.addStyle('--right-width', this.$right.getBoundingClientRect().width / fs + 'em');
};
MessageInput.prototype.addImageFiles = function (imageFiles, urls) {
  var thisMi = this;
  Array.prototype.forEach.call(imageFiles, function (file, index) {
    thisMi._imageFiles.push(file);
    var src;
    if (urls) {
      src = urls[index];
    }
    if (!src) {
      src = URL.createObjectURL(file);
    }
    var itemElt = _({
      "class": ['as-message-input-attach-preview', 'as-image'],
      attr: {
        title: file.name
      },
      child: [{
        "class": 'as-message-input-attach-preview-image',
        style: {
          backgroundImage: 'url(' + src + ')'
        }
      }, {
        tag: 'button',
        "class": 'as-message-input-attach-preview-close-btn',
        child: 'span.mdi.mdi-close',
        attr: {
          title: 'remove'
        },
        on: {
          click: function click() {
            thisMi._imageFiles = thisMi._imageFiles.filter(function (it) {
              return it !== file;
            });
            itemElt.remove();
            thisMi._updateAttachmentClass();
            thisMi.notifySizeChange();
            thisMi.notifyChange();
          }
        }
      }, {
        "class": 'as-message-input-attach-preview-info',
        child: [{
          "class": 'as-message-input-attach-preview-name',
          child: {
            text: file.name
          }
        }, {
          "class": 'as-message-input-attach-preview-size',
          child: {
            text: (0, _utils.fileSize2Text)(file.size)
          }
        }]
      }]
    }).addTo(thisMi.$attachmentCtn);
    thisMi.$attachmentCtn.addChildBefore(itemElt, thisMi.$attachmentAddBtn);
  });
  this._updateAttachmentClass();
  this.notifySizeChange();
};
MessageInput.prototype.addFiles = function (files) {
  var thisMi = this;
  Array.prototype.forEach.call(files, function (file, index) {
    thisMi._files.push(file);
    MessageInput.iconSupportAsync.then(function (ExtensionIcons) {
      var src;
      var ext = file.name.split('.').pop().toLowerCase();
      if (ExtensionIcons.indexOf(ext) > 0) {
        src = MessageInput.iconAssetRoot + '/' + ext + '.svg';
      } else {
        src = MessageInput.iconAssetRoot + '/' + 'default' + '.svg';
      }
      var itemElt = _({
        "class": ['as-message-input-attach-preview', 'as-file'],
        attr: {
          title: file.name
        },
        child: [{
          tag: 'img',
          "class": 'as-message-input-attach-preview-file',
          props: {
            src: src
          }
        }, {
          tag: 'button',
          "class": 'as-message-input-attach-preview-close-btn',
          child: 'span.mdi.mdi-close',
          attr: {
            title: 'remove'
          },
          on: {
            click: function click() {
              thisMi._files = thisMi._files.filter(function (it) {
                return it !== file;
              });
              itemElt.remove();
              thisMi._updateAttachmentClass();
              thisMi.notifySizeChange();
              thisMi.notifyChange();
            }
          }
        }, {
          "class": 'as-message-input-attach-preview-info',
          child: [{
            "class": 'as-message-input-attach-preview-name',
            child: {
              text: file.name
            }
          }, {
            "class": 'as-message-input-attach-preview-size',
            child: {
              text: (0, _utils.fileSize2Text)(file.size)
            }
          }]
        }]
      });
      thisMi.$attachmentCtn.addChildBefore(itemElt, thisMi.$attachmentAddBtn);
    });
  });
  this._updateAttachmentClass();
  thisMi.notifySizeChange();
};
MessageInput.prototype.closeEmoji = function () {
  if (!this.hasClass('as-message-input-show-emoji')) return;
  this.removeClass('as-message-input-show-emoji');
  this.removeChild(this.$emojiPickerCtn);
  $(document.body).off('mousedown', this.eventHandler.mousedownOutEmoji);
};
MessageInput.prototype.notifyAddFiles = function (files) {
  var event = {
    resolvedAsync: Promise.resolve(files),
    files: files,
    resolve: function resolve(result) {
      if (!result) {
        this.resolvedAsync = Promise.resolve(undefined);
      } else if (result.then) {
        this.resolvedAsync = result;
      } else {
        this.resolvedAsync = Promise.resolve(result);
      }
    }
  };
  this.emit('useraddfile', event);
  return event.resolvedAsync;
};
MessageInput.prototype.openFileDialog = function () {
  var thisMi = this;
  (0, _utils.openFileDialog)({
    multiple: true
  }).then(function (files) {
    if (!thisMi.autoSend) thisMi.$preInput.focus();
    thisMi.notifyAddFiles(files).then(function (files) {
      if (files && files.length > 0) thisMi.handleAddingFileByType(files);
    });
  });
};
MessageInput.prototype.handleAddingFileByType = function (files) {
  if (files.length > 0) {
    var imageFiles = [];
    var otherFiles = [];
    var file;
    for (var i = 0; i < files.length; ++i) {
      file = files[i];
      if (!!file.type && file.type.match && file.type.match(/^image\//)) {
        imageFiles.push(file);
      } else {
        otherFiles.push(file);
      }
    }
    this.addImageFiles(imageFiles);
    this.addFiles(otherFiles);
    this.notifyChange();
  }
};
MessageInput.prototype.notifySizeChange = function () {
  var bound = this.getBoundingClientRect();
  if (this._latBound.width != bound.width || this._latBound.height != bound.height) {
    this._latBound.width = bound.width;
    this._latBound.height = bound.height;
    this.emit('sizechange', {
      name: 'sizechange',
      bound: bound,
      target: this
    }, this);
  }
};
MessageInput.prototype.addPlugin = function (option) {
  var plugin;
  if (option.isMessagePlugin) {
    plugin = option;
  } else {
    plugin = new this.PluginConstructor(this, option);
  }
  plugin.idx = this._plugins.length + 1;
  this._plugins.push(plugin);
  this._plugins.sort(function (a, b) {
    var av = typeof a.opt.order === "number" ? a.opt.order : a.idx * 1000;
    var bv = typeof b.opt.order === "number" ? b.opt.order : b.idx * 1000;
    return av - bv;
  });
  var plugins = this._plugins.slice();
  plugins.forEach(function (pl) {
    return pl.getTriggerButton().remove();
  });
  this.$left.addChild(plugins.shift().getTriggerButton());
  while (plugins.length > 0) {
    this.$right.addChildBefore(plugins.shift().getTriggerButton(), this.$right.firstChild);
  }
  return plugin;
};

/***
 *
 * @param {{name?:string, exec:function(_this:MessageInput):void, keyBiding?:string}} option
 */
MessageInput.prototype.addCommand = function (option) {
  option.name = option.name || (0, _stringGenerate.randomIdent)(20);
  this._cmdRunner.add(option.name, option.exec);
  if (option.keyBiding && option.keyBiding.trim) {
    var keyBindingIdent = (0, _keyboard.normalizeKeyBindingIdent)(option.keyBiding);
    this._keyMaps[keyBindingIdent] = option.name;
  }
};
MessageInput.prototype.exeCmd = function (name) {
  var args = Array.prototype.slice.call(arguments);
  args[0] = this;
  args.unshift(name);
  this._cmdRunner.invoke.apply(this._cmdRunner, args);
};
MessageInput.prototype._updateQuote = function () {
  this.$quote.data = this._quote;
  if (this._quote) this.addClass('as-has-quote');else this.removeClass('as-has-quote');
  this._updateSize();
  this.notifySizeChange();
};

/**
 * @type {MessageInput}
 */
MessageInput.eventHandler = {};
MessageInput.eventHandler.preInputChange = function (event) {
  var text = this.$preInput.value;
  if (text.length > 0) {
    this.addClass('as-has-text');
  } else {
    this.removeClass('as-has-text');
  }
  if (text === this._editingText) {
    this.removeClass('as-text-changed');
  } else {
    this.addClass('as-text-changed');
  }
  this._updateSize();
  this.notifySizeChange();
  this.notifyChange();
};
MessageInput.eventHandler.preInputKeyDown = function (event) {
  if (!(event.shiftKey || event.ctrlKey || event.altKey) && event.key === 'Enter') {
    this.notifySend();
    event.preventDefault();
  } else if ((event.shiftKey || event.ctrlKey || event.altKey) && event.key === 'Enter') {
    event.preventDefault();
    var text = this.$preInput.value;
    var selectedPos = this.$preInput.getSelectPosition();
    var newText = text.substr(0, selectedPos.start) + '\n' + text.substr(selectedPos.end);
    this.$preInput.applyData(newText, selectedPos.start + 1);
    this.notifySizeChange();
    this.$preInput.commitChange(newText, selectedPos.start + 1);
  } else if (event.key === "Escape" && this._mode === MODE_EDIT) {
    this.notifyCancel();
    event.preventDefault();
  }
  var keyBindingIdent = (0, _keyboard.keyboardEventToKeyBindingIdent)(event);
  if (this._keyMaps[keyBindingIdent]) {
    event.preventDefault();
    this.exeCmd(this._keyMaps[keyBindingIdent]);
  }
  setTimeout(this.notifySizeChange.bind(this), 1);
};
MessageInput.eventHandler.preInputKeyUp = function (event) {
  var value = this.$preInput.value;
  this._lastInputSelectPosion = this.$preInput.getSelectPosition() || {
    start: value.length,
    end: value.length
  };
  this.notifySizeChange();
};
MessageInput.eventHandler.preInputPasteImg = function (event) {
  if (this._mode == 'edit') return;
  var files = Array.prototype.slice.call(event.imageFiles);
  var urls = event.urls && Array.prototype.slice.call(event.urls);
  this.notifyAddFiles(files).then(function (newFiles) {
    if (!newFiles || newFiles.length === 0) return;
    var newUrls = urls && newFiles.map(function (file) {
      return urls[files.indexOf(file)];
    });
    this.addImageFiles(newFiles, newUrls);
    this.notifyChange();
  }.bind(this));
};
MessageInput.eventHandler.preInputFocus = function () {
  this.addClass('as-focus');
};
MessageInput.eventHandler.preInputBlur = function () {
  this.removeClass('as-focus');
};
MessageInput.eventHandler.clickEmojiBtn = function () {
  this.toggleEmoji();
};
MessageInput.eventHandler.mousedownOutEmoji = function (event) {
  if (_EventEmitter["default"].hitElement(this.$emojiPicker, event) || _EventEmitter["default"].hitElement(this.$emojiBtn, event)) return;
  this.closeEmoji();
};
MessageInput.eventHandler.pickEmoji = function (event) {
  var text = this.$preInput.value;
  var newText = text.substr(0, this._lastInputSelectPosion.start) + event.key + text.substr(this._lastInputSelectPosion.end);
  var selected = this._lastInputSelectPosion;
  var newOffset = selected.start + event.key.length;
  this._lastInputSelectPosion = {
    start: newOffset,
    end: newOffset
  };
  this.$preInput.focus();
  this.$preInput.applyData(newText, newOffset);
  this.$preInput.commitChange(newText, newOffset);
  this.notifySizeChange();
  this.$preInput.focus(); //older firefox version will be lost focus
  // this.notifyChange();//not need
};

MessageInput.eventHandler.dragover = function (event) {
  event.preventDefault();
  this.addClass('as-drag-hover');
  this.notifySizeChange();
  if (this._hoverTimeout > 0) clearTimeout(this._hoverTimeout);
  var thisMi = this;
  this._hoverTimeout = setTimeout(function () {
    thisMi._hoverTimeout = -1;
    thisMi.removeClass('as-drag-hover');
    thisMi.notifySizeChange();
  }, 200);
  //todo:
  this._updateSize();
};
MessageInput.eventHandler.drop = function (event) {
  event.preventDefault();
  var files = [];
  var file;
  if (event.dataTransfer.items) {
    for (var i = 0; i < event.dataTransfer.items.length; i++) {
      if (event.dataTransfer.items[i].kind === 'file') {
        file = event.dataTransfer.items[i].getAsFile();
        if (!file.type && file.size % 4096 == 0) {
          //todo: folder
        } else {
          files.push(file);
        }
      }
    }
  } else {
    for (var i = 0; i < event.dataTransfer.files.length; i++) {
      file = event.dataTransfer.files[i];
      if (!file.type && file.size % 4096 == 0) {} else {
        files.push(file);
      }
    }
  }
  this.notifyAddFiles(files).then(function (files) {
    this.handleAddingFileByType(files);
  }.bind(this));
};
MessageInput.eventHandler.clickQuoteRemoveBtn = function () {
  this.quote = null;
  this.notifyChange();
};
MessageInput.property = {};
MessageInput.property.files = {
  set: function set(value) {
    $$('.as-file', this.$attachmentCtn).forEach(function (elt) {
      elt.remove();
    });
    value = value || [];
    this._files = [];
    this.addFiles(value);
  },
  get: function get() {
    return this._files;
  }
};
MessageInput.property.images = {
  set: function set(value) {
    $$('.as-image', this.$attachmentCtn).forEach(function (elt) {
      elt.remove();
    });
    value = value || [];
    this._imageFiles = [];
    this.addImageFiles(value);
  },
  get: function get() {
    return this._imageFiles;
  }
};
MessageInput.property.text = {
  set: function set(text) {
    this.$preInput.value = '' + text;
    if (text.length > 0) {
      this.addClass('as-has-text');
    } else {
      this.removeClass('as-has-text');
    }
    if (this._mode === MODE_EDIT) {
      this._editingText = text;
    }
    this.removeClass('as-text-changed');
    this._updateSize();
  },
  get: function get() {
    return this.$preInput.value;
  }
};

/**
 * @type {MessageInput}
 */
MessageInput.property.mode = {
  set: function set(value) {
    value = value || MODE_NEW;
    if (value === MODE_EDIT || value.toLowerCase && value.toLowerCase() === 'edit') {
      this.addClass('as-mode-edit');
      value = MODE_EDIT;
      this._editingText = this.$preInput.value;
    } else {
      value = MODE_NEW;
      this._editingText = '';
      this.removeClass('as-mode-edit');
    }
    this.removeClass('as-text-changed');
    this._mode = value;
    this._updateSize();
  },
  get: function get() {
    return this._mode === MODE_EDIT ? 'edit' : 'new';
  }
};
MessageInput.property.autoSend = {
  set: function set(value) {
    if (value) {
      this.addClass('as-auto-send');
    } else {
      this.removeClass('as-auto-send');
    }
  },
  get: function get() {
    return this.hasClass('as-auto-send');
  }
};
MessageInput.property.quote = {
  set: function set(quote) {
    this._quote = quote;
    this._updateQuote();
  },
  get: function get() {
    return this._quote;
  }
};
MessageInput.property.tagMap = {
  set: function set(value) {
    this.$preInput.tagMap = value || {};
    this.$quote.tagMap = value || {};
  },
  get: function get() {
    return this.$preInput.tagMap;
  }
};
_ACore["default"].install(MessageInput);
var _default = MessageInput;
exports["default"] = _default;
var urlRex = /^(firefox|opera|chrome|https|http|wss|ws):\/\/[^\s]+$/;

/***
 *
 * @param {string}text
 * @param {{emojiAssetRoot?:string, staticSize?:number, animSize?:number, tagMap?:{}, lengthLimit?:number, inline?:boolean}=} data
 * @returns {Array}
 */
function parseMessage(text, data) {
  data = data || {};
  data.emojiAssetRoot = data.emojiAssetRoot || _EmojiPicker["default"].assetRoot;
  data.staticSize = data.staticSize || 20;
  data.animSize = data.animSize || 60;
  var tagMap = data.tagMap || {};
  var tokens = (0, _tiutils.tokenizeMessageText)(text).reduce(function (ac, token) {
    if (token.type !== 'TEXT') {
      ac.push(token);
      return ac;
    }
    var urls = token.value.match(/(firefox|opera|chrome|https|http|wss|ws):\/\/[^\s]+/g);
    var splitter = Math.random() + '';
    var normals = token.value.replace(/(firefox|opera|chrome|https|http|wss|ws):\/\/[^\s]+/, splitter).split(splitter);
    for (var i = 0; i < normals.length; ++i) {
      if (i > 0) {
        ac.push({
          type: 'URL',
          value: urls[i - 1]
        });
      }
      ac.push({
        type: 'TEXT',
        value: normals[i]
      });
    }
    return ac;
  }, []);
  if (data.lengthLimit > 0) {
    tokens = tokens.reduce(function (ac, token) {
      if (ac.l >= data.lengthLimit) {
        return ac;
      }
      switch (token.type) {
        case 'TAG':
          ac.l += ('@' + (tagMap[token.value] ? tagMap[token.value] : '[id:' + token.value + ']')).length;
          break;
        case 'EMOJI':
          ac.l += 1;
          break;
        case 'NEW_LINE':
          ac.l += 1;
          break;
        default:
          ac.l += token.value.length;
      }
      if (ac.l > data.lengthLimit) {
        if (token.type === 'TEXT') {
          token.value = token.value.substring(0, Math.max(0, token.value.length - (ac.l - data.lengthLimit) - 3)) + '...';
          ac.tokens.push(token);
        }
      } else {
        ac.tokens.push(token);
      }
      return ac;
    }, {
      l: 0,
      tokens: []
    }).tokens;
  }
  var res = tokens.reduce(function (ac, token) {
    switch (token.type) {
      case 'TAG':
        ac.push({
          tag: 'span',
          "class": 'as-tag-token',
          child: {
            text: '@' + (tagMap[token.value] ? tagMap[token.value] : '[id:' + token.value + ']')
          }
        });
        break;
      case 'EMOJI':
        ac.push({
          tag: 'span',
          "class": 'as-emoji-text',
          child: {
            text: token.value
          }
        });
        ac.push({
          tag: 'img',
          "class": 'as-emoji',
          props: {
            src: data.emojiAssetRoot + '/static/x' + data.staticSize + '/' + _EmojiAnims.EmojiAnimByIdent[token.value][1]
          }
        });
        break;
      case 'NEW_LINE':
        ac.push({
          tag: 'br'
        });
        break;
      case 'URL':
        ac.push({
          tag: 'a',
          "class": 'as-protocal-' + token.value.split(':').shift(),
          child: {
            text: token.value
          },
          props: {
            href: token.value,
            target: '_blank'
          }
        });
        break;
      case 'TEXT':
      default:
        ac.push({
          tag: 'span',
          child: {
            text: token.value
          }
        });
        break;
    }
    return ac;
  }, []);
  if (!data.inline && res.length === 2 && res[1]["class"] === 'as-emoji') {
    res[1].tag = 'iconsprite';
    res[1].props.fps = 30;
    res[1].props.src = res[1].props.src.replace('/static/x' + data.staticSize, '/anim/x' + data.animSize);
  }
  return res;
}
MessageInput.parseMessage = parseMessage;
function prepareIcon() {
  if (!MessageInput.iconSupportAsync) {
    MessageInput.iconSupportAsync = Promise.resolve(_catalog["default"]);
  }
  return MessageInput.iconSupportAsync;
}
function MessageQuote() {
  prepareIcon();
  this._tagMap = {};
  /***
   *
   * @type {null|MessageInputQuote}
   * @private
   */
  this._data = null;
  this.$img = $('.as-message-quote-img', this);
  this.$text = $('.as-message-quote-text', this);
  this.$desc = $('.as-message-quote-desc', this);
  this.$removeBtn = $('.as-message-quote-remove-btn', this).on('click', this.eventHandler.clickRemoveBtn);
  Object.defineProperty(this, '$text', {
    set: function set() {
      console.trace();
    },
    get: function get() {
      return $('.as-message-quote-text', this);
    }
  });
}
MessageQuote.tag = 'MessageQuote'.toLowerCase();
MessageQuote.render = function () {
  return _({
    extendEvent: 'pressremove',
    "class": 'as-message-quote-box',
    child: [{
      "class": 'as-message-quote-img'
    }, {
      "class": 'as-message-quote-sym',
      child: 'span.mdi.mdi-format-quote-open-outline'
    }, {
      "class": 'as-message-quote-content',
      child: [{
        "class": 'as-message-quote-text',
        child: {
          text: ''
        }
      }, {
        "class": 'as-message-quote-desc',
        child: {
          text: ''
        }
      }]
    }, {
      tag: 'button',
      "class": 'as-message-quote-remove-btn',
      child: 'span.mdi.mdi-close'
    }]
  });
};
MessageQuote.property = {};
MessageQuote.eventHandler = {};
MessageQuote.property.removable = {
  set: function set(val) {
    if (val) {
      this.addClass('as-removable');
    } else {
      this.removeClass('as-removable');
    }
  },
  get: function get() {
    return this.hasClass('as-removable');
  }
};
MessageQuote.property.shortenText = {
  set: function set(val) {
    if (val) {
      this.addClass('as-shorten-text');
    } else {
      this.removeClass('as-shorten-text');
    }
  },
  get: function get() {
    return this.hasClass('as-shorten-text');
  }
};
MessageQuote.property.data = {
  set: function set(quote) {
    this._data = quote;
    var text, desc;
    var file, img;
    if (typeof quote === "string") {
      text = quote;
      desc = '';
    } else if (quote && _typeof(quote) === "object") {
      text = quote.text;
      desc = quote.desc;
      file = quote.file;
      img = quote.img;
    }
    if (text === undefined) {
      this.$text.clearChild();
      this.$desc.firstChild.data = '';
      this.removeClass('as-has-file');
      this.removeClass('as-has-img');
    } else {
      if (file) {
        file = file.toLowerCase().split('.').pop();
        MessageInput.iconSupportAsync.then(function (iconSupport) {
          if (iconSupport.indexOf(file) < 0) file = 'default';
          this.$img.addStyle('background-image', 'url(' + MessageInput.iconAssetRoot + '/' + file + '.svg)');
        }.bind(this));
        this.addClass('as-has-file');
      } else this.removeClass('as-has-file');
      if (img) {
        this.$img.addStyle('background-image', 'url(' + img + ')');
        this.addClass('as-has-img');
      } else this.removeClass('as-has-img');
      if (this.shortenText) text = text.split(/\r?\n/).shift();
      var parsedText = parseMessage(text, {
        tagMap: this.tagMap
      });
      var textEltChain = parsedText.map(function (c) {
        return _(c);
      });
      this.$text.clearChild().addChild(textEltChain);
      this.$desc.firstChild.data = desc;
    }
  },
  get: function get() {
    return this._data;
  }
};
MessageQuote.property.tagMap = {
  set: function set(value) {
    this._tagMap = value || {};
    this.data = this['data'];
  },
  get: function get() {
    return this._tagMap;
  }
};
MessageQuote.eventHandler.clickRemoveBtn = function () {
  this.emit('pressremove', {
    target: this,
    type: 'pressclose'
  }, this);
};
_ACore["default"].install(MessageQuote);
MessageInput.prototype.PluginConstructor = _MessageInputPlugin["default"];

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _stringGenerate = __webpack_require__(10713);
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _ACore = __webpack_require__(34093);
var _noop = _interopRequireDefault(__webpack_require__(5025));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @typedef MessageInputPluginOption
 * @property {string} [id]
 * @property {string|Object|AElement} icon
 * @property {function(_thisAdapter: MessageInputPlugin, _:Dom._, Dom.$):AElement} createContent
 * @property {function(_thisAdapter:MessageInputPlugin):void} onPressTrigger
 * @property {"left"|"right"} popupAlign
 * @property {boolean=} alwaysVisible
 */

/***
 *
 * @param {MessageInput} inputElt
 * @param {MessageInputPluginOption} opt
 * @constructor
 */
function MessageInputPlugin(inputElt, opt) {
  this.opt = opt || {};
  this.inputElt = inputElt;
  this.icon = opt.icon;
  this.id = opt.id || (0, _stringGenerate.randomIdent)(16);
  this.alwaysVisible = !!opt.alwaysVisible;
  this.$icon = null;
  this.$triggerBtn = null;
  this.$content = null;
  this.$popup = null;
  if (opt.createContent) this.createContent = opt.createContent;
  if (opt.onPressTrigger) this.onPressTrigger = opt.onPressTrigger;
  this.autoClose = true;
  if ('autoClose' in opt) {
    this.autoClose = !!opt.autoClose;
  }
  this.popupAlign = opt.popupAlign || 'left';
  this.ev_pressTrigger = this.ev_pressTrigger.bind(this);
  this.ev_pressOut = this.ev_pressOut.bind(this);
}
MessageInputPlugin.prototype.isMessagePlugin = true;
MessageInputPlugin.prototype.ev_pressTrigger = function (event) {
  var value = this.inputElt.$preInput.value;
  this._lastInputSelectPosion = this.inputElt.$preInput.getSelectPosition() || {
    start: value.length,
    end: value.length
  };
  if (this.onPressTrigger) {
    this.onPressTrigger(this);
  } else {
    if (this.isPopupOpened()) {
      this.closePopup();
    } else {
      this.openPopup();
    }
  }
};
MessageInputPlugin.prototype.insertText = function (itext) {
  if (!this._lastInputSelectPosion) {
    throw new Error('Invalid call');
  }
  var text = this.inputElt.$preInput.value;
  var newText = text.substr(0, this._lastInputSelectPosion.start) + itext + text.substr(this._lastInputSelectPosion.end);
  var selected = this._lastInputSelectPosion;
  var newOffset = selected.start + itext.length;
  this.inputElt.$preInput.focus();
  this.inputElt.$preInput.applyData(newText, newOffset);
  this.inputElt.$preInput.commitChange(newText, newOffset);
  this.inputElt.notifySizeChange();
  this.inputElt.$preInput.focus();
};
MessageInputPlugin.prototype.appendText = function (itext) {
  if (!this._lastInputSelectPosion) {
    throw new Error('Invalid call');
  }
  var text = this.inputElt.$preInput.value;
  var newText = text + itext;
  var newOffset = newText.length;
  this.inputElt.$preInput.focus();
  this.inputElt.$preInput.applyData(newText, newOffset);
  this.inputElt.$preInput.commitChange(newText, newOffset);
  this.inputElt.notifySizeChange();
  this.inputElt.$preInput.focus();
};
MessageInputPlugin.prototype.replaceText = function (itext) {
  if (!this._lastInputSelectPosion) {
    throw new Error('Invalid call');
  }
  var newText = itext;
  var newOffset = newText.length;
  this.inputElt.$preInput.focus();
  this.inputElt.$preInput.applyData(newText, newOffset);
  this.inputElt.$preInput.commitChange(newText, newOffset);
  this.inputElt.notifySizeChange();
  this.inputElt.$preInput.focus();
};
MessageInputPlugin.prototype.ev_pressOut = function (event) {
  if (_EventEmitter["default"].hitElement(this.getTriggerButton(), event)) return;
  if (_EventEmitter["default"].hitElement(this.getPopup(), event)) return;
  if (!this.autoClose) return;
  this.closePopup();
};
MessageInputPlugin.prototype.getIconElt = function () {
  if (!this.$icon) this.$icon = (0, _ACore._)(this.icon);
  return this.$icon;
};
MessageInputPlugin.prototype.getTriggerButton = function () {
  if (!this.$triggerBtn) {
    this.$triggerBtn = (0, _ACore._)({
      tag: 'button',
      "class": ['as-message-input-plugin-btn', 'as-message-input-plugin-' + this.id],
      child: this.getIconElt(),
      on: {
        click: this.ev_pressTrigger
      }
    });
    if (this.alwaysVisible) {
      this.$triggerBtn.addClass('as-always-visible');
    }
  }
  return this.$triggerBtn;
};
MessageInputPlugin.prototype.createContent = function (_thisAdapter, _, $) {
  return _({
    tag: 'div'
  });
};

/***
 *
 * @type {null|function(_thisAdapter:MessageInputPlugin):void}
 */
MessageInputPlugin.prototype.onPressTrigger = null;
MessageInputPlugin.prototype.getContent = function () {
  if (!this.$content) this.$content = this.createContent(this.inputElt, _ACore._, _ACore.$);
  return this.$content;
};
MessageInputPlugin.prototype.getPopup = function () {
  if (!this.$popup) {
    this.$popup = (0, _ACore._)({
      "class": ['as-message-input-external-tools-popup', 'as-align-' + this.popupAlign],
      child: this.getContent()
    });
  }
  return this.$popup;
};
MessageInputPlugin.prototype.openPopup = function () {
  if (this.isPopupOpened()) return;
  this.inputElt.appendChild(this.getPopup());
  document.body.addEventListener('click', this.ev_pressOut);
  this.onOpen();
  if (this.opt.onOpen) {
    this.opt.onOpen.call(this, this.inputElt, _ACore._, _ACore.$);
  }
};
MessageInputPlugin.prototype.closePopup = function () {
  if (!this.isPopupOpened()) return;
  if (this.opt.onClose) {
    this.opt.onClose.call(this, this.inputElt, _ACore._, _ACore.$);
  }
  this.onClose();
  this.getPopup().remove();
  document.body.removeEventListener('click', this.ev_pressOut);
};
MessageInputPlugin.prototype.isPopupOpened = function () {
  return !!this.getPopup().parentElement;
};
MessageInputPlugin.prototype.onOpen = _noop["default"];
MessageInputPlugin.prototype.onClose = _noop["default"];
Object.defineProperty(MessageInputPlugin.prototype, 'contentElt', {
  get: function get() {
    return this.getContent();
  }
});
var _default = MessageInputPlugin;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.MExploreGroup = MExploreGroup;
exports.MExploreItemBlock = MExploreItemBlock;
exports.MExploreItemList = MExploreItemList;
exports.MExploreSectionBreak = MExploreSectionBreak;
exports.MSpringboardMenu = MSpringboardMenu;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(82287);
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _keyboard = __webpack_require__(95141);
var _stringFormat = __webpack_require__(22294);
var _Context = _interopRequireDefault(__webpack_require__(16311));
var _OOP = _interopRequireWildcard(__webpack_require__(38608));
var _Searcher = _interopRequireDefault(__webpack_require__(47106));
var _stringMatching = __webpack_require__(59163);
var _int = __webpack_require__(65909);
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 makeTextToNode = function makeTextToNode(data, pElt) {
  var node;
  if (typeof data === "string") {
    node = (0, _ACore._)({
      text: data
    });
  } else if (data instanceof Array) {
    data.forEach(function (it) {
      return makeTextToNode(it, pElt);
    });
  }
  if (node) pElt.addChild(node);
};
var makeIconToNode = function makeIconToNode(data, pElt) {
  var node;
  if (data) node = (0, _ACore._)(data);
  pElt.clearChild();
  if (node) pElt.addChild(node);
};
function MExploreSectionBreak() {
  this._name = '';
  this.$name = (0, _ACore.$)('.am-explore-section-break-name', this);
}
MExploreSectionBreak.tag = 'MExploreSectionBreak'.toLowerCase();
MExploreSectionBreak.render = function () {
  return (0, _ACore._)({
    "class": 'am-explore-section-break',
    child: [{
      "class": 'am-explore-section-break-name'
    }, '.am-explore-section-break-line']
  });
};
MExploreSectionBreak.property = {};
MExploreSectionBreak.property.name = {
  set: function set(value) {
    if (value === null || value === undefined) value = '';
    this._name = value;
    this.$name.clearChild();
    makeTextToNode(value, this.$name);
  },
  get: function get() {
    return this._name;
  }
};
function MExploreItemBlock() {
  this.$name = (0, _ACore.$)('.am-explore-item-block-name', this);
  this._name = '';
  this._icon = null;
  this.$icon = (0, _ACore.$)('.am-explore-item-block-icon', this);
  this.$name = (0, _ACore.$)('.am-explore-item-block-name', this);

  /**
   * @name name
   * @type {string}
   * @memberof MExploreItemBlock#
   */

  /**
   * @name icon
   * @memberof MExploreItemBlock#
   */
}

MExploreItemBlock.tag = 'MExploreItemBlock'.toLowerCase();
MExploreItemBlock.render = function () {
  return (0, _ACore._)({
    attr: {
      tabindex: '1'
    },
    "class": 'am-explore-item-block',
    child: [{
      "class": 'am-explore-item-block-icon'
    }, {
      "class": 'am-explore-item-block-name'
    }]
  });
};
MExploreItemBlock.property = {};
MExploreItemBlock.property.icon = {
  set: function set(value) {
    value = value || null;
    this._icon = value;
    makeIconToNode(value, this.$icon);
  },
  get: function get() {
    return this._icon;
  }
};
MExploreItemBlock.property.name = {
  set: function set(value) {
    if (value === null || value === undefined) value = '';
    makeTextToNode(value, this.$name);
    this._name = value;
  },
  get: function get() {
    return this._name;
  }
};
MExploreItemBlock.property.hidden = {
  set: function set(value) {
    if (value) {
      this.addClass('as-hidden');
    } else {
      this.removeClass('as-hidden');
    }
  },
  get: function get() {
    return this.hasClass('as-hidden');
  }
};
function MExploreItemList() {}
MExploreItemList.tag = 'MExploreItemList'.toLowerCase();
MExploreItemList.render = function () {};

/**
 * @extends AElement
 * @constructor
 */
function MExploreGroup() {
  this.$br = (0, _ACore.$)(MExploreSectionBreak.tag, this);
  this._items = [];
  this.$items = [];
  this.$itemCtn = (0, _ACore.$)('.am-explore-group-item-ctn', this);
  /**
   * @name name
   * @type {string}
   * @memberof MExploreGroup#
    /**
   * @name items
   * @type {[]}
   * @memberof MExploreGroup#
   */
}

MExploreGroup.tag = 'MExploreGroup'.toLowerCase();
MExploreGroup.render = function () {
  return (0, _ACore._)({
    "class": 'am-explore-group',
    extendEvent: ['press'],
    child: [{
      tag: MExploreSectionBreak
    }, {
      "class": 'am-explore-group-item-ctn'
    }]
  });
};
MExploreGroup.property = {};
MExploreGroup.property.name = {
  set: function set(value) {
    value = value || '';
    this.$br.name = value;
    if (value) {
      this.$br.removeStyle('display');
    } else {
      this.$br.addStyle('display', 'none');
    }
  },
  get: function get() {
    return this.$br.name;
  }
};
MExploreGroup.property.items = {
  /**
   * @this MExploreGroup
   * @param items
   */
  set: function set(items) {
    var _this = this;
    if (!items || !items.slice || !items.map) items = [];
    items = items.slice();
    this._items = items;
    while (this.$items.length) {
      this.$items.pop().selfRemove();
    }
    this.$items = items.map(function (it) {
      var elt = (0, _ACore._)({
        tag: MExploreItemBlock,
        props: {
          data: it,
          name: it.name,
          icon: it.icon,
          hidden: !!it.hidden
        },
        on: {
          click: function click(event) {
            _this.emit('press', {
              type: 'press',
              target: elt,
              itemData: it,
              originalEvent: event,
              itemElt: elt
            }, _this);
          }
        }
      });
      if (window.ABSOL_DEBUG) {
        elt.attr('title', 'score: ' + it.score);
      }
      return elt;
    });
    this.$itemCtn.addChild(this.$items);
  },
  get: function get() {
    return this._items;
  }
};
MExploreGroup.property.hidden = {
  set: function set(value) {
    if (value) {
      this.addClass('as-hidden');
    } else {
      this.removeClass('as-hidden');
    }
  },
  get: function get() {
    return this.hasClass('as-hidden');
  }
};

/**
 * @extends AElement
 * @constructor
 */
function MSpringboardMenu() {
  var _this2 = this;
  if (_BrowserDetector["default"].isMobile) {
    this.addClass('as-mobile');
  }
  this.keyboardCtrl = new MSMKeyboardController(this);
  this.$groups = [];
  this.$attachHook = (0, _ACore._)('attachhook').addTo(this);
  this.$attachHook.on('attached', function () {
    _ResizeSystem["default"].add(_this2);
    _this2.updateSize();
    _this2.keyboardCtrl.lowPriorityFocus();
  });
  this.$attachHook.requestUpdateSize = this.updateSize.bind(this);
  this.searchingPlugin = new MSMSearchingPlugin(this);
  /**
   * @name searching
   * @type {{input: SearchTextInput, items: []}}
   * @memberof MSpringboardMenu#
   */
}

MSpringboardMenu.tag = 'MSpringboardMenu'.toLowerCase();
MSpringboardMenu.render = function () {
  return (0, _ACore._)({
    attr: {
      tabindex: '1'
    },
    "class": 'am-springboard-menu',
    extendEvent: ['press']
  });
};
MSpringboardMenu.prototype.updateSize = function () {
  if (!this.isDescendantOf(document.body)) return;
  if (this.$groups.length === 0) return;
  var maxChildLength = 0;
  var longestGroupElt = this.$groups[0];
  var groupElt;
  for (var i = 0; i < this.$groups.length; ++i) {
    groupElt = this.$groups[i];
    if (groupElt.$items.length > maxChildLength) {
      longestGroupElt = groupElt;
      maxChildLength = groupElt.$items.length;
    }
  }
  var style = getComputedStyle(groupElt.$itemCtn);
  var width = parseFloat(style.width.replace('px', ''));
  if (width < 10) return;
  var paddingLeft = parseFloat(style.paddingLeft.replace('px', ''));
  var paddingRight = parseFloat(style.paddingRight.replace('px', ''));
  var rowLength = Math.max(1, Math.floor((width - paddingLeft - paddingRight) / 150));
  var itemWidth = Math.floor((width - paddingLeft - paddingRight) / rowLength) - 1;
  this.addStyle('--item-width', itemWidth + 'px');
};
MSpringboardMenu.property = {};
MSpringboardMenu.property.groups = {
  /**
   * @this MSpringboardMenu
   * @param groups
   */
  set: function set(groups) {
    var _this3 = this;
    if (!(groups instanceof Array)) groups = [];
    this.$groups.forEach(function (elt) {
      return elt.selfRemove();
    });
    this.$groups = groups.map(function (group) {
      var hidden = group.hidden || !group.items || group.items.length === 0 || group.items.every(function (it) {
        return it.hidden;
      });
      var elt = (0, _ACore._)({
        tag: MExploreGroup,
        props: {
          data: group,
          name: group.name,
          items: group.items || [],
          hidden: hidden
        },
        on: {
          press: function press(event) {
            _this3.emit('press', Object.assign({
              groupElt: elt,
              groupData: group
            }, event), _this3);
          }
        }
      });
      return elt;
    });
    this.addChild(this.$groups);
    this.updateSize();
  },
  get: function get() {
    return this.$groups.map(function (gr) {
      return gr.data;
    });
  }
};
_ACore["default"].install(MSpringboardMenu);

/**
 *
 * @param {MSpringboardMenu}  elt
 * @constructor
 */
function MSMKeyboardController(elt) {
  this.elt = elt;
  if (!_BrowserDetector["default"].isMobile) this.elt.on('keydown', this.ev_keydown.bind(this));
  this.itemsMatrix = [];
}
MSMKeyboardController.prototype.canLowPriorityFocus = function () {
  var elt = document.activeElement;
  if (!elt || elt === document.body || elt === this.elt) {
    return true;
  }
  if (elt.hasClass && elt.hasClass('am-explore-item-block') && elt.isDescendantOf(this.elt)) return false;
  var style;
  while (elt && elt !== document.body && elt !== this.elt) {
    style = getComputedStyle(elt);
    if (style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0') {
      return true;
    }
    elt = elt.parentElement;
  }
  return false;
};
MSMKeyboardController.prototype.lowPriorityFocus = function () {
  if (!this.canLowPriorityFocus()) return;
  this.elt.focus();
  // var firstItem = null;
  // for (var i = 0; i < this.elt.$groups.length; ++i) {
  //     var group = this.elt.$groups[i];
  //     if (group.$items.length > 0) {
  //         firstItem = group.$items[0];
  //         break;
  //     }
  // }
  // if (firstItem) {
  //     firstItem.focus();
  // }
};

MSMKeyboardController.prototype.calcItemsMatrix = function () {
  var arr = [];
  var group;
  var item;
  for (var i = 0; i < this.elt.$groups.length; ++i) {
    group = this.elt.$groups[i];
    for (var j = 0; j < group.$items.length; ++j) {
      item = group.$items[j];
      if (item.hidden) continue;
      arr.push(item);
    }
  }
  arr = arr.map(function (item) {
    var rect = item.getBoundingClientRect();
    return {
      item: item,
      ii: Math.round(rect.top / 30),
      jj: Math.round(rect.left / 30)
    };
  });
  var rows = arr.reduce(function (ac, it) {
    ac[it.ii] = ac[it.ii] || [];
    ac[it.ii].push(it);
    return ac;
  }, {});
  rows = Object.values(rows);
  rows.sort(function (a, b) {
    return a[0].ii - b[0].ii;
  });
  rows.forEach(function (row) {
    row.sort(function (a, b) {
      return a.jj - b.jj;
    });
  });
  this.itemsMatrix = rows.map(function (row) {
    return row.map(function (it) {
      return it.item;
    });
  });
  return rows;
};
MSMKeyboardController.prototype.findItemsStartsWith = function (prefix) {
  prefix = prefix.toLowerCase();
  var res = [];
  var group;
  var item;
  for (var i = 0; i < this.elt.$groups.length; ++i) {
    group = this.elt.$groups[i];
    for (var j = 0; j < group.$items.length; ++j) {
      item = group.$items[j];
      if (item.hidden) continue;
      if ((0, _stringFormat.nonAccentVietnamese)(item.name.toLowerCase()).startsWith(prefix)) {
        res.push(item);
      }
    }
  }
  return res;
};

/**
 *
 * @param  elt
 */
MSMKeyboardController.prototype.positionOf = function (elt) {
  if (!elt) return null;
  if (elt.hidden) return null;
  var row;
  var item;
  for (var i = 0; i < this.itemsMatrix.length; ++i) {
    row = this.itemsMatrix[i];
    for (var j = 0; j < row.length; ++j) {
      item = row[j];
      if (item === elt) {
        return [i, j];
      }
    }
  }
  return null;
};
MSMKeyboardController.prototype.ev_keydown = function (event) {
  if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') return;
  var key = (0, _keyboard.keyboardEventToKeyBindingIdent)(event);
  var focusElt = document.activeElement;
  if (!focusElt || !focusElt.hasClass) focusElt = null;
  if (focusElt && !focusElt.hasClass('am-explore-item-block')) focusElt = null;
  if (focusElt && focusElt.hidden) focusElt = null;
  if (focusElt && !focusElt.isDescendantOf(this.elt)) focusElt = null;
  var focusIdx;
  var itemEltArr;
  var itemPos;
  if (key.length === 1) {
    itemEltArr = this.findItemsStartsWith(key);
    focusIdx = itemEltArr.indexOf(focusElt);
    if (itemEltArr.length > 0) {
      itemEltArr[(focusIdx + 1) % itemEltArr.length].focus();
    }
  } else if (['arrowdown', 'arrowup', 'arrowleft', 'arrowright'].indexOf(key) >= 0) {
    event.preventDefault();
    this.calcItemsMatrix();
    itemPos = this.positionOf(focusElt);
    switch (key) {
      case 'arrowdown':
        itemPos = itemPos || [-1, 0];
        if (itemPos[0] < this.itemsMatrix.length - 1) {
          itemPos[0]++;
          itemPos[1] = Math.min(itemPos[1], this.itemsMatrix[itemPos[0]].length - 1);
        }
        break;
      case 'arrowup':
        itemPos = itemPos || [1, 0];
        if (itemPos[0] > 0) {
          itemPos[0]--;
          itemPos[1] = Math.min(itemPos[1], this.itemsMatrix[itemPos[0]].length - 1);
        }
        break;
      case 'arrowleft':
        itemPos = itemPos || [0, 1];
        if (itemPos[1] > 0) {
          itemPos[1]--;
        } else if (itemPos[0] > 0) {
          itemPos[0]--;
          itemPos[1] = this.itemsMatrix[itemPos[0]].length - 1;
        }
        break;
      case 'arrowright':
        itemPos = itemPos || [0, -1];
        if (itemPos[1] < this.itemsMatrix[itemPos[0]].length - 1) {
          itemPos[1]++;
        } else if (itemPos[0] < this.itemsMatrix.length - 1) {
          itemPos[0]++;
          itemPos[1] = 0;
        }
        break;
    }
    focusElt = this.itemsMatrix[itemPos[0]] && this.itemsMatrix[itemPos[0]][itemPos[1]];
    if (focusElt) focusElt.focus();
  } else if (key === 'enter') {
    event.preventDefault();
    if (focusElt) focusElt.click();
  }
};

/**
 * @extends Context
 * @param {MSpringboardMenu} elt
 * @constructor
 */
function MSMSearchingPlugin(elt) {
  _Context["default"].call(this);
  this.elt = elt;
  this._data = null;
  _OOP["default"].drillProperty(this.elt, this, 'searching', 'data');
  this.ev_inputStopTyping = this.ev_inputStopTyping.bind(this);
  /**
   * @type {SearchTextInput|null}
   */
  this.$input = null;
  this.itemHolders = [];
  this.$seachGroups = [];
}
(0, _OOP.mixClass)(MSMSearchingPlugin, _Context["default"]);
MSMSearchingPlugin.prototype.onStart = function () {
  this.$input = this._data && this._data.input;
  if (!this.$input) {
    this.$input = (0, _ACore._)({
      tag: _Searcher["default"]
    });
    this.elt.addChildBefore(this.$input, this.elt.firstChild);
  }
  this.$input.on('stoptyping', this.ev_inputStopTyping);
  this.calcItemHoldersFromItems();
};
MSMSearchingPlugin.prototype.calcItemHoldersFromItems = function () {
  var _this4 = this;
  // var holders = [];
  var count = 0;
  var virtualGroups = [];
  var visit = function visit(item, parent) {
    if (item.hidden) return;
    count++;
    var holder = _this4.makeHolder(item);
    holder.path = parent.path.concat([parent.item.name]);
    holder.count = count;
    if (holder.type === 'group') {
      virtualGroups.push(holder);
    } else {
      parent.children = parent.children || [];
      parent.children.push(holder);
    }
    if (item.items && item.items.length > 0) {
      if (holder.type !== 'group') {
        holder = Object.assign({}, holder, {
          type: 'group',
          children: []
        });
        virtualGroups.push(holder);
      }
      item.items.forEach(function (child) {
        return visit(child, holder);
      });
    }
  };
  var rootHolder = Object.assign({}, this.makeHolder({
    name: 'root'
  }), {
    children: [],
    path: [],
    type: 'group'
  });
  virtualGroups.push(rootHolder);
  this._data.items.forEach(function (item) {
    return visit(item, rootHolder);
  });
  virtualGroups = virtualGroups.filter(function (it) {
    return it.children && it.children.length > 0;
  });
  this.itemHolders = virtualGroups;
};
MSMSearchingPlugin.prototype.onResume = function () {
  this.elt.addClass('as-searching');
  //view search
};

MSMSearchingPlugin.prototype.onPause = function () {
  this.elt.removeClass('as-searching');
  //view origin
};

MSMSearchingPlugin.prototype.onStop = function () {
  this.$input.on('stopchange', this.ev_inputStopTyping);
  if (this.$input.isDescendantOf(this.elt)) {
    this.$input.remove();
  }

  //turn off event
};

MSMSearchingPlugin.prototype.makeHolder = function (item) {
  var spliter = /[\s,-\.+?\_]+/;
  var notEmp = function notEmp(e) {
    return e.length > 0;
  };
  var res = {
    item: item,
    text: item.name || item.searchName || '',
    hidden: !!item.hidden,
    type: item.type
  };
  if (item.hidden) return res;
  res.text = res.text.toLowerCase();
  res.words = res.text.split(spliter).filter(notEmp);
  res.text = res.words.join(' ');
  res.nacWords = res.words.map(function (txt) {
    return (0, _stringFormat.nonAccentVietnamese)(txt);
  });
  res.nacText = res.nacWords.join(' ');
  res.wordDict = res.words.reduce(function (ac, cr) {
    ac[cr] = true;
    return ac;
  }, {});
  res.nacWordDict = res.nacWords.reduce(function (ac, cr) {
    ac[cr] = true;
    return ac;
  }, {});
  return res;
};
MSMSearchingPlugin.prototype.calcScore = function (queryHolder, itemHolder) {
  var score = 0;
  var mustIncluded = false;
  if (itemHolder.nacText.indexOf(queryHolder.nacText) >= 0) mustIncluded = true;
  if (itemHolder.text.indexOf(queryHolder.text) >= 0) mustIncluded = true;
  score += (0, _stringMatching.wordsMatch)(queryHolder.words, itemHolder.words) / (0, _int.harmonicMean)(queryHolder.words.length, itemHolder.words.length);
  score += (0, _stringMatching.wordsMatch)(queryHolder.nacWords, itemHolder.nacWords) / (0, _int.harmonicMean)(queryHolder.nacWords.length, itemHolder.nacWords.length);
  var dict = Object.keys(itemHolder.nacWordDict);
  Object.keys(queryHolder.nacWordDict).forEach(function (qWord) {
    var bestWordScore = 0;
    var bestWord = '';
    var word;
    for (word in dict) {
      if ((0, _stringMatching.wordLike)(qWord, word) > bestWordScore) {
        bestWordScore = (0, _stringMatching.wordLike)(qWord, word);
        bestWord = word;
      }
    }
    if (bestWordScore > 0) {
      score += bestWordScore / (0, _int.harmonicMean)(qWord.length, bestWord.length);
      delete dict[bestWord];
    }
  });
  return {
    score: score,
    mustIncluded: mustIncluded
  };
};
MSMSearchingPlugin.prototype.ev_inputStopTyping = function () {
  var query = this.$input.value;
  this.query(query);
};
MSMSearchingPlugin.prototype.query = function (query) {
  var _this5 = this;
  query = query || '';
  query = query.trim();
  if (query && query.length > 0 && this.state !== 'RUNNING') {
    this.start();
  } else if (!query || query.length === 0) {
    this.pause();
    return;
  }
  var scoreList = [];
  var queryHolder = this.makeHolder({
    name: query
  }, -1);
  var visit2calcScore = function visit2calcScore(holder) {
    var res = Object.assign({
      item: holder.item,
      type: holder.type,
      path: holder.path
    }, _this5.calcScore(queryHolder, holder));
    scoreList.push(res.score);
    if (holder.children) {
      res.children = holder.children.map(visit2calcScore);
      res.childrenScore = res.children.reduce(function (ac, cr) {
        return Math.max(ac, cr.score, cr.childrenScore || 0);
      }, 0);
      res.treeScore = Math.max(res.score, res.childrenScore || 0);
    }
    return res;
  };
  var itemsHolders = this.itemHolders.map(visit2calcScore);
  scoreList.push(0);
  scoreList.sort(function (a, b) {
    return b - a;
  });
  var maxScore = scoreList[0] || 0;
  var midScore;
  if (maxScore < 1) {
    midScore = Math.max(maxScore - 0.2, 0.1);
    midScore = Math.max(midScore, scoreList[Math.floor(scoreList.length * 0.2 * maxScore)] - 0.01);
  } else {
    midScore = maxScore * 0.6;
    midScore = Math.max(midScore, scoreList[Math.floor(scoreList.length * 0.3)] - 0.1);
  }
  var visit2filter = function visit2filter(holder) {
    var score = holder.score;
    var childrenScore = holder.childrenScore || 0;
    if (holder.mustIncluded) return true;
    if (score >= midScore && childrenScore <= score) return true;
    if (holder.children) {
      holder.children = holder.children.filter(visit2filter);
      return holder.children.length > 0;
    }
    return false;
  };
  itemsHolders = itemsHolders.filter(visit2filter);
  itemsHolders.forEach(function (holder) {
    if (holder.children) holder.children.sort(function (a, b) {
      return b.treeScore - a.treeScore;
    });
  });
  itemsHolders.sort(function (a, b) {
    return b.treeScore - a.treeScore;
  });
  this.$seachGroups.forEach(function (elt) {
    return elt.remove();
  });
  this.$seachGroups = itemsHolders.map(function (holder) {
    var elt = (0, _ACore._)({
      tag: MExploreGroup,
      "class": 'as-search-result',
      props: {},
      on: {
        press: function press(event) {
          _this5.elt.emit('press', Object.assign({
            groupElt: elt,
            groupData: holder.item
          }, event), _this5.elt);
        }
      }
    });
    if (window.ABSOL_DEBUG) {
      elt.attr('title', 'score: ' + holder.score + ', childrenScore: ' + holder.childrenScore);
    }
    if (holder.item.name === 'root') {
      elt.name = '/';
    } else {
      elt.name = holder.path.slice(1).concat(holder.item.name).join(' / ');
    }
    if (holder.children) {
      elt.items = holder.children.map(function (child) {
        return Object.assign({
          score: child.score
        }, child.item);
      });
    }
    return elt;
  });
  this.elt.addChild(this.$seachGroups);
};
Object.defineProperty(MSMSearchingPlugin.prototype, 'data', {
  get: function get() {
    return this._data;
  },
  set: function set(value) {
    this.stop();
    value = value || null;
    if (value && !value.items) value = null;
    if (value && !value.items.length) value = null;
    this._data = value;
    if (value) this.start(true);
  }
});

/***/ }),

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

"use strict";


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;
__webpack_require__(82287);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _QuickMenu = _interopRequireDefault(__webpack_require__(8277));
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; }
/**
 * @exatends AElement
 * @constructor
 */
function MHeaderBar() {
  this._title = null;
  this._titleDesc = null;
  this._actionIcon = null;
  this._commands = [];
  this._quickmenuHolder = null;
  this._quickmenu = null;
  this.$right = (0, _ACore.$)('.am-header-bar-right', this);
  this.$leftBtn = null;
  this.$titleCtn = null;
  this.$title = null;
  this.$titleDesc = null;
  this.$commands = [];
}
MHeaderBar.tag = 'MHeaderBar'.toLowerCase();
MHeaderBar.render = function () {
  return (0, _ACore._)({
    extendEvent: ['action', 'command'],
    "class": 'am-header-bar',
    child: [{
      "class": 'am-header-bar-right'
    }]
  });
};
MHeaderBar.prototype.notifyAction = function () {
  this.emit('action', {
    type: 'action',
    target: this
  }, this);
};
MHeaderBar.prototype.notifyCommand = function (commandItem) {
  this.emit('command', {
    type: 'command',
    target: this,
    commandName: commandItem.name,
    commandItem: commandItem
  }, this);
};
MHeaderBar.prototype.showTitle = function (flag) {
  if (!this.$titleCtn && flag) {
    this.$titleCtn = (0, _ACore._)({
      "class": 'am-header-bar-title-ctn',
      child: [{
        "class": 'am-header-bar-no-size-wrapper',
        child: {
          "class": 'am-header-bar-title-wrapper',
          child: [{
            "class": 'am-header-bar-title'
          }, {
            "class": 'am-header-bar-title-desc'
          }]
        }
      }]
    });
    this.$title = (0, _ACore.$)('.am-header-bar-title', this.$titleCtn);
    this.$titleDesc = (0, _ACore.$)('.am-header-bar-title-desc', this.$titleCtn);
  }
  if (flag) {
    this.insertBefore(this.$titleCtn, this.$right);
  } else {
    if (this.$titleCtn) this.$titleCtn.remove();
  }
};
MHeaderBar.prototype.showActionBtn = function (flag) {
  if (!this.$leftBtn && flag) {
    this.$leftBtn = (0, _ACore._)({
      tag: 'button',
      "class": 'am-header-bar-left-btn',
      child: 'span.mdi.mdi-chevron-left',
      on: {
        click: this.notifyAction.bind(this)
      }
    });
  }
  if (flag) {
    this.insertBefore(this.$leftBtn, this.firstChild);
  } else {
    if (this.$leftBtn) this.$leftBtn.remove();
  }
};
MHeaderBar.prototype.showQuickMenu = function (flag) {
  if (!this.$quickmenuBtn && flag) {
    this.$quickmenuBtn = (0, _ACore._)({
      tag: 'button',
      "class": ['am-header-bar-action', 'am-header-bar-quickmenu-btn'],
      child: {
        "class": 'am-header-bar-quickmenu-btn-circle',
        child: ['span.mdi.mdi-dots-horizontal-circle-outline', 'span.mdi.mdi-dots-horizontal-circle']
      }
    });
  }
  if (flag) {
    this.$right.addChild(this.$quickmenuBtn);
  } else {
    if (this.$quickmenuBtn) this.$quickmenuBtn.remove();
  }
};
MHeaderBar.prototype._makeCommandBtn = function (item) {
  return (0, _ACore._)({
    tag: 'button',
    "class": 'am-header-bar-command',
    child: item.icon || [],
    on: {
      click: this.notifyCommand.bind(this, item)
    }
  });
};
MHeaderBar.property = {};

/**
 * @type {MHeaderBar}
 */
MHeaderBar.property.quickmenu = {
  set: function set(value) {
    if (this._quickmenuHolder) {
      this._quickmenuHolder.remove();
      this._quickmenu = null;
    }
    if (value) {
      this.showQuickMenu(true);
      var button = this.$quickmenuBtn;
      var onClose = value.onClose;
      var onOpen = value.onOpen;
      value.onOpen = function () {
        button.addClass('am-status-active');
        onOpen && onOpen.apply(this, arguments);
      };
      value.onClose = function () {
        button.removeClass('am-status-active');
        onClose && onClose.apply(this, arguments);
      };
      if (!value.getAnchor) {
        value.getAnchor = function () {
          return [2];
        };
      }
      if (!value.getMenuProps && value.props) {
        value.getMenuProps = function () {
          var res = Object.assign({}, value.props);
          if (typeof res.items === "function") {
            res.items = res.items();
          }
          return res;
        };
      }
      this._quickmenuHolder = _QuickMenu["default"].toggleWhenClick(this.$quickmenuBtn, value);
    } else {
      this.showQuickMenu(false);
      value = null;
    }
    this._quickmenu = value;
  },
  get: function get() {
    return this._quickmenu;
  }
};

/**
 * @type {MHeaderBar}
 */
MHeaderBar.property.title = {
  set: function set(value) {
    if (value) {
      this.showTitle(true);
      if (typeof value === 'string') {
        this.$title.innerHTML = value;
      } else {
        this.$title.clearChild().addChild((0, _ACore._)(value));
      }
    } else {
      this.showTitle(false);
      value = null;
    }
    this._title = value;
  },
  get: function get() {
    return this._title;
  }
};

/**
 * @type {MHeaderBar}
 */
MHeaderBar.property.titleDesc = {
  set: function set(value) {
    if (value) {
      value = value + '';
      this.showTitle(true);
      this.$titleDesc.clearChild().addChild((0, _ACore._)({
        text: value
      }));
    } else {
      this.showTitle(false);
      if (this.$titleDesc) this.$titleDesc.clearChild();
      value = null;
    }
    this._titleDesc = value;
  },
  get: function get() {
    return this._titleDesc;
  }
};

/**
 * @type {MHeaderBar}
 */
MHeaderBar.property.actionIcon = {
  set: function set(value) {
    if (value) {
      this.showActionBtn(true);
      this.$leftBtn.clearChild().addChild((0, _ACore._)(value));
    } else {
      this.showActionBtn(false);
      value = null;
    }
    this._actionIcon = value;
  },
  get: function get() {
    return this._actionIcon;
  }
};

/**
 * @type {MHeaderBar}
 */
MHeaderBar.property.commands = {
  set: function set(value) {
    this.$commands.forEach(function (e) {
      e.selftRemove();
    });
    this.$commands = [];
    var commandBtn;
    if (value) {
      var firstChild = this.$right.firstChild;
      if (firstChild) {
        for (var i = 0; i < value.length; ++i) {
          commandBtn = this._makeCommandBtn(value[i]);
          this.$right.addChildBefore(commandBtn, firstChild);
        }
      } else {
        for (var i = 0; i < value.length; ++i) {
          commandBtn = this._makeCommandBtn(value[i]);
          this.$right.addChild(commandBtn);
        }
      }
    } else {
      this._commands = [];
    }
    this._commands = value;
  },
  get: function get() {
    return this._commands;
  }
};
_ACore["default"].install(MHeaderBar);
var _default = MHeaderBar;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _MCTMPropHandlers = _interopRequireDefault(__webpack_require__(91254));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var MCTLMPropHandler = Object.assign({}, _MCTMPropHandlers["default"]);
MCTLMPropHandler.leafOnly = {
  value: true,
  enumerable: true
};
var _default = MCTLMPropHandler;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _MCTLMPropHandler = _interopRequireDefault(__webpack_require__(59573));
var _MultiCheckTreeMenu = _interopRequireDefault(__webpack_require__(27269));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _MCheckTreeLeafBox = _interopRequireDefault(__webpack_require__(88718));
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 MultiCheckTreeLeafMenu() {
  _MultiCheckTreeMenu["default"].apply(this, arguments);
}
_OOP["default"].mixClass(MultiCheckTreeLeafMenu, _MultiCheckTreeMenu["default"]);
MultiCheckTreeLeafMenu.tag = 'MultiCheckTreeLeafMenu'.toLowerCase();
MultiCheckTreeLeafMenu.prototype.classes = {
  Box: _MCheckTreeLeafBox["default"]
};
MultiCheckTreeLeafMenu.render = function () {
  return _MultiCheckTreeMenu["default"].render().addClass('as-multi-check-tree-leaf-menu');
};
MultiCheckTreeLeafMenu.property = _MCTLMPropHandler["default"];
_ACore["default"].install(MultiCheckTreeLeafMenu);
var _default = MultiCheckTreeLeafMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _datetime = __webpack_require__(58286);
var _Array = __webpack_require__(40411);
var MCTMPropHandlers = {};
MCTMPropHandlers.readOnly = {
  set: function set(value) {
    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function get() {
    return this.hasClass('as-read-only');
  }
};
MCTMPropHandlers.disabled = {
  set: function set(value) {
    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
MCTMPropHandlers.items = {
  set: function set(items) {
    this.$box.items = items;
    this.tokenCtrl.updateFromViewValues();
  },
  get: function get() {
    return this.$box.items;
  }
};
MCTMPropHandlers.values = {
  set: function set(values) {
    this.$box.values = values || [];
    this.tokenCtrl.updateFromViewValues();
  },
  get: function get() {
    if (this.isFocus) {
      return this.savedValues;
    } else {
      return this.$box.values;
    }
  }
};
MCTMPropHandlers.leafOnly = {
  set: function set(value) {
    if (!!value === this.hasClass('as-leaf-only')) return;
    if (value) {
      this.addClass('as-leaf-only');
      this.$box.leafOnly = true;
    } else {
      this.removeClass('as-leaf-only');
      this.$box.leafOnly = false;
    }
    this.tokenCtrl.updateFromViewValues();
  },
  get: function get() {
    return this.hasClass('as-leaf-only');
  }
};
MCTMPropHandlers.isFocus = {
  /***
   * @this MultiCheckTreeMenu
   * @param value
   */
  set: function set(value) {
    if (value && (this.disabled || this.readOnly)) return;
    if (!!value === this.hasClass('as-focus')) return;
    if (value) {
      this.savedValues = this.$box.values;
      this.addClass('as-focus');
      this.boxCtrl.onFocus();
    } else {
      this.removeClass('as-focus');
      this.boxCtrl.onBlur();
      var newValues = this.values;
      if (!(0, _Array.arrayCompare)(this.savedValues, newValues)) {
        this.notifyChange();
      } else {
        this.tokenCtrl.updateFromViewValues();
      }
      this.savedValues = this.values;
    }
  },
  get: function get() {
    return this.hasClass('as-focus');
  }
};
MCTMPropHandlers.enableSearch = {
  set: function set(value) {
    this.$box.enableSearch = value;
  },
  get: function get() {
    return this.$box.enableSearch;
  }
};
var _default = MCTMPropHandlers;
/**************************** ADAPT OLD VERSION **********************************************************************/
exports["default"] = _default;
MCTMPropHandlers.$checkTreeBox = {
  get: function get() {
    return this.$box;
  }
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _SelectBoxItem = _interopRequireDefault(__webpack_require__(27233));
var _ACore = __webpack_require__(34093);
var _utils = __webpack_require__(84512);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/****
 *
 * @param {MultiCheckTreeMenu} elt
 * @constructor
 */
function MCTMTokenController(elt) {
  this.elt = elt;
  this.$box = elt.$box;
  this.$itemCtn = elt.$itemCtn;
}
MCTMTokenController.prototype.updateFromViewValues = function () {
  var values = this.$box.viewValues;
  this.requireItems(values.length);
  var holder;
  for (var i = 0; i < values.length; ++i) {
    holder = this.$box.getHolderByValue(values[i]);
    this.$itemCtn.childNodes[i].data = holder.data;
  }
};
MCTMTokenController.prototype.requireItems = function (count) {
  while (this.$itemCtn.childNodes.length < count) {
    this.$itemCtn.addChild(this.makeToken());
  }
  while (this.$itemCtn.childNodes.length > count) {
    this.$itemCtn.lastChild.remove();
  }
};
MCTMTokenController.prototype.removeValue = function (targetValue) {
  this.$box.select(targetValue, false);
  this.updateFromViewValues();
  if (!this.elt.isFocus) {
    this.elt.notifyChange();
  }
};
MCTMTokenController.prototype.makeToken = function () {
  var ctrl = this;
  return (0, _ACore._)({
    tag: _SelectBoxItem["default"],
    on: {
      close: function close() {
        ctrl.removeValue(this.value);
      }
    }
  });
};
var _default = MCTMTokenController;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
/***
 *
 * @param elt
 * @constructor
 */
function MMCTMBoxController(elt) {
  this.elt = elt;
  this.$box = elt.$box;
  for (var key in this) {
    if (key.startsWith('ev_')) this[key] = this[key].bind(this);
  }
  this.elt.on('click', this.ev_click);
  this.$box.on('close', this.ev_close);
  this.$box.on('cancel', this.ev_cancel);
  this.$box.on('change', this.ev_boxValuesChange);
}
MMCTMBoxController.prototype.onFocus = function () {
  this.$box.addTo(document.body);
  this.elt.off('click', this.ev_click);
};
MMCTMBoxController.prototype.onBlur = function () {
  var _this = this;
  this.$box.remove();
  setTimeout(function () {
    _this.elt.on('click', _this.ev_click);
  }, 50);
};
MMCTMBoxController.prototype.ev_click = function (event) {
  if (!this.elt.disabled && !this.elt.readOnly && (event.target === this.elt || event.target === this.elt.$itemCtn)) {
    this.elt.isFocus = true;
  }
};
MMCTMBoxController.prototype.ev_close = function (event) {
  this.elt.isFocus = false;
};
MMCTMBoxController.prototype.ev_cancel = function (event) {
  this.$box.values = this.elt.savedValues;
  this.elt.isFocus = false;
};
MMCTMBoxController.prototype.ev_boxValuesChange = function () {
  this.elt.tokenCtrl.updateFromViewValues();
};
var _default = MMCTMBoxController;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _MCTMPropHandlers = _interopRequireDefault(__webpack_require__(91254));
var _MMCTMBoxController = _interopRequireDefault(__webpack_require__(86901));
var _MCheckTreeBox = _interopRequireDefault(__webpack_require__(82822));
var _MCTMTokenController = _interopRequireDefault(__webpack_require__(59614));
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; }
/***
 * @extends AElement
 * @constructor
 */
function MultiCheckTreeMenu() {
  this.$box = (0, _ACore._)({
    tag: this.classes.Box
  });
  this.$itemCtn = (0, _ACore.$)('.as-multi-select-menu-item-ctn', this);
  this.boxCtrl = new _MMCTMBoxController["default"](this);
  this.tokenCtrl = new _MCTMTokenController["default"](this); //mobile only
}

MultiCheckTreeMenu.tag = 'MultiCheckTreeMenu'.toLowerCase();
MultiCheckTreeMenu.prototype.classes = {
  Box: _MCheckTreeBox["default"]
};
MultiCheckTreeMenu.render = function () {
  return (0, _ACore._)({
    "class": ['as-multi-select-menu', 'as-multi-check-tree-menu'],
    extendEvent: ['change'],
    attr: {
      tabindex: '1'
    },
    child: [{
      "class": ['as-multi-select-menu-item-ctn', 'as-bscroller']
    }, {
      tag: 'button',
      "class": 'as-multi-select-menu-toggle-btn',
      child: 'dropdown-ico'
    }, 'attachhook']
  });
};
MultiCheckTreeMenu.prototype.notifyChange = function () {
  this.emit('change', {
    type: 'change',
    target: this
  }, this);
};
MultiCheckTreeMenu.property = _MCTMPropHandlers["default"];
_ACore["default"].install(MultiCheckTreeMenu);
var _default = MultiCheckTreeMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _keyboard = __webpack_require__(95141);
var _Text = __webpack_require__(35844);
var _utils = __webpack_require__(84512);
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _noop = _interopRequireDefault(__webpack_require__(5025));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {NumberInput} elt
 * @constructor
 */
function NITextController(elt) {
  var _this = this;
  this.elt = elt;
  /***
   *
   * @type {HTMLInputElement|AElement}
   */
  this.$input = this.elt.$input;
  Object.keys(NITextController.prototype).forEach(function (key) {
    if (key.startsWith('on')) _this[key] = _this[key].bind(_this);
  });
  this.elt.$input.on('keydown', this.onKeyDown).on('paste', this.onKeyDown).on('blur', this.onBlur);
}
NITextController.prototype.estimateWidthBy = function (text) {
  if (this.elt.hasClass('as-pressing')) return;
  var bound = this.elt.getBoundingClientRect();
  var width = (0, _Text.measureText)(text, this.$input.getComputedStyleValue('font')).width;
  this.elt.addStyle('--text-width', width + 'px');
  var newBound = this.elt.getBoundingClientRect();
  if (newBound.width !== bound.width) _ResizeSystem["default"].requestUpdateUpSignal(this.elt, true);
};
NITextController.prototype.flushTextToValue = function () {
  var thousandsSeparator = this.elt.thousandsSeparator || '';
  var decimalSeparator = this.elt.decimalSeparator;
  var text = this.$input.value;
  var floatText = text.split(thousandsSeparator).join('').split(decimalSeparator).join('.');
  this.elt._value = parseFloat(floatText);
  if (!(0, _utils.isRealNumber)(this.elt._value)) this.elt._value = null;
  this.elt._value = this.elt.value; //normalize value
};

NITextController.prototype.flushValueToText = function () {
  var formatter;
  var opt = Object.assign({}, this.elt._format);
  var value = this.elt.value;
  var text, parts;
  if (value === null) {
    text = '';
  } else if (opt.locales === 'none') {
    if (opt.maximumFractionDigits === 20) {
      text = value + '';
    } else if (opt.maximumFractionDigits === opt.minimumIntegerDigits) {
      text = value.toFixed(opt.maximumFractionDigits);
    } else {
      text = value + '';
      parts = text.split('.');
      parts[1] = parts[1] || '';
      if (parts[1].length < opt.minimumIntegerDigits) {
        text = value.toFixed(opt.minimumIntegerDigits);
      }
    }
  } else {
    formatter = new Intl.NumberFormat(this.elt._format.locales, opt);
    text = formatter.format(value);
  }
  this.$input.value = text;
  this.estimateWidthBy(text);
};
NITextController.prototype.reformat = function () {
  var thousandsSeparator = this.elt.thousandsSeparator || '';
  var decimalSeparator = this.elt.decimalSeparator;
  var caretPos = this.$input.selectionEnd;
  var value = this.$input.value;
  var parts = value.split(decimalSeparator);
  var caretWTSPos = value.substring(0, caretPos).split(thousandsSeparator).join('').length;
  parts[0] = parts[0].split('').filter(function (x) {
    return x.match(/[0-9\-]/);
  }).reduce(function (ac, c, i, arr) {
    ac += c;
    if (i + 1 < arr.length && (arr.length - i) % 3 === 1 && arr[i] !== '-') {
      ac += thousandsSeparator;
    }
    return ac;
  }, '');
  if (parts[1]) parts[1] = parts[1].split('').filter(function (x) {
    return x.match(/[0-9]/);
  }).join('');
  var newValue = parts.join(decimalSeparator);
  var newCaretPos = 0;
  var counter = 0;
  for (newCaretPos = 0; newCaretPos < newValue.length && counter < caretWTSPos; ++newCaretPos) {
    if (newValue[newCaretPos].match(/[0-9\-]/) || newValue[newCaretPos] === decimalSeparator) {
      counter++;
    }
  }
  this.$input.value = newValue;
  this.$input.setSelectionRange(newCaretPos, newCaretPos);
  this.estimateWidthBy(newValue);
};
NITextController.prototype.onBlur = function () {
  this.flushValueToText();
  this.elt.notifyChanged({
    by: 'blur'
  });
};

/***
 * @param {KeyboardEvent|ClipboardEvent|{}} event
 * @param {boolean=} event
 */
NITextController.prototype.onKeyDown = function (event, dontInsert) {
  var _this2 = this;
  var key = event.type === 'keydown' ? (0, _keyboard.keyboardEventToKeyBindingIdent)(event) : '';
  if (key.length === 1 && !key.match(/[0-9.,\-]/) || key.match(/^shift-.$/)) {
    event.preventDefault();
    return;
  }
  var thousandsSeparator = this.elt.thousandsSeparator;
  var decimalSeparator = this.elt.decimalSeparator;
  var value = this.$input.value;
  var sStart = this.$input.selectionStart;
  var sEnd = this.$input.selectionEnd;
  var sDir = this.$input.selectionDirection;
  var onKeys = {};
  onKeys.unidentified = function () {
    var oldText = _this2.$input.value;
    setTimeout(function () {
      var newText = _this2.$input.value;
      if (oldText === newText) return;
      var key = newText[sStart];
      if (!key) return; //todo
      var fakeEvent = {
        type: 'keydown',
        preventDefault: _noop["default"],
        key: key
      };
      if (key.match(/^[0-9.]$/)) {
        _this2.onKeyDown(fakeEvent, true);
      } else {
        _this2.$input.value = oldText;
        _this2.$input.setSelectionRange(sStart, sStart);
        _this2.onKeyDown(fakeEvent);
      }
    }, 10);
  };
  onKeys.process = function () {
    setTimeout(function () {
      _this2.flushTextToValue();
    }, 10);
  };
  onKeys.paste = function () {
    var clipboardData = event.clipboardData || window.clipboardData;
    var pastedData = clipboardData.getData('Text');
    var hasSeparator = value.indexOf(decimalSeparator) >= 0;
    pastedData = pastedData.split('').filter(function (c) {
      if (c.match(/[0-9]/)) return true;
      if (!hasSeparator && c === hasSeparator) {
        hasSeparator = true;
        return true;
      }
    }).join('');
    if (_this2.elt.readOnly) return;
    if (!dontInsert) {
      _this2.$input.value = value.substring(0, sStart) + pastedData + value.substring(sEnd);
      _this2.$input.setSelectionRange(sStart + pastedData.length, sStart + pastedData.length);
    }
    _this2.reformat();
    _this2.flushTextToValue();
  };
  onKeys.arrowleft = function () {
    if (sStart === sEnd) {
      if (value[sStart - 2] === thousandsSeparator) {
        _this2.$input.setSelectionRange(sStart - 2, sStart - 2);
      } else if (sStart > 0) {
        _this2.$input.setSelectionRange(sStart - 1, sStart - 1);
      }
    } else {
      _this2.$input.setSelectionRange(sStart, sStart);
    }
  };
  onKeys['shift-arrowleft'] = function () {
    var newSStart;
    var newSEnd;
    if (sDir === 'backward') {
      newSStart = sEnd;
      newSEnd = sStart - 1;
    } else {
      newSStart = sStart;
      newSEnd = sEnd - 1;
    }
    if (value[newSEnd - 1] === thousandsSeparator) newSEnd--;
    newSEnd = Math.max(0, newSEnd);
    if (newSStart <= newSEnd) {
      _this2.$input.setSelectionRange(newSStart, newSEnd, "forward");
    } else {
      _this2.$input.setSelectionRange(newSEnd, newSStart, "backward");
    }
  };
  onKeys.arrowright = function () {
    if (sStart === sEnd) {
      if (value[sStart] === thousandsSeparator) {
        _this2.$input.setSelectionRange(sStart + 2, sStart + 2);
      } else if (sStart < value.length) {
        _this2.$input.setSelectionRange(sStart + 1, sStart + 1);
      }
    } else {
      _this2.$input.setSelectionRange(sStart, sStart);
    }
  };
  onKeys['shift-arrowright'] = function () {
    var newSStart;
    var newSEnd;
    if (sDir === 'backward') {
      newSStart = sEnd;
      newSEnd = sStart + 1;
    } else {
      newSStart = sStart;
      newSEnd = sEnd + 1;
    }
    if (value[newSEnd - 1] === thousandsSeparator) newSEnd++;
    newSEnd = Math.min(value.length, newSEnd);
    if (newSStart <= newSEnd) {
      _this2.$input.setSelectionRange(newSStart, newSEnd, "forward");
    } else {
      _this2.$input.setSelectionRange(newSEnd, newSStart, "backward");
    }
  };
  onKeys.number = function () {
    if (_this2.elt.readOnly) return;
    if (!dontInsert) {
      _this2.$input.value = value.substring(0, sStart) + key + value.substring(sEnd);
      _this2.$input.setSelectionRange(sStart + 1, sStart + 1);
    }
    _this2.reformat();
    _this2.flushTextToValue();
  };
  onKeys['-'] = function () {
    if (_this2.elt.readOnly) return;
    if (value.indexOf('-') >= 0 || sStart > 0) return;
    _this2.$input.value = '-' + value.substring(sEnd);
    _this2.$input.setSelectionRange(1, 1);
    _this2.reformat();
    _this2.flushTextToValue();
  };
  onKeys.backspace = function () {
    if (_this2.elt.readOnly) return;
    var delStart, delEnd;
    if (sStart === sEnd) {
      if (sStart > 0) {
        delStart = sStart - 1;
        delEnd = sStart;
      }
    } else {
      delStart = sStart;
      delEnd = sEnd;
    }
    if (delStart === undefined || delEnd === undefined) return;
    _this2.$input.value = value.substring(0, delStart) + value.substring(delEnd);
    _this2.$input.setSelectionRange(delStart, delStart);
    _this2.reformat();
    _this2.flushTextToValue();
  };
  onKeys.enter = function () {
    if (_this2.elt.readOnly) return;
    _this2.flushValueToText();
    _this2.$input.setSelectionRange(_this2.$input.value.length, _this2.$input.value.length);
    _this2.elt.notifyChanged({
      by: 'enter'
    });
  };
  onKeys["delete"] = function () {
    if (_this2.elt.readOnly) return;
    var delStart, delEnd;
    if (sStart === sEnd) {
      if (sStart < value.length) {
        delStart = sStart;
        delEnd = sStart + 1;
        if (value[delStart] === thousandsSeparator) delEnd++;
      }
    } else {
      delStart = sStart;
      delEnd = sEnd;
    }
    if ((0, _utils.isNaturalNumber)(delStart) && (0, _utils.isNaturalNumber)(delEnd)) {
      _this2.$input.value = value.substring(0, delStart) + value.substring(delEnd);
      _this2.$input.setSelectionRange(delStart, delStart);
      _this2.reformat();
      _this2.flushTextToValue();
    }
  };
  onKeys.decimalSeparator = function () {
    if (_this2.elt.readOnly) return;
    var idx = value.indexOf(decimalSeparator);
    if (idx >= 0) {
      if (idx < sStart) {
        _this2.$input.value = value.substring(0, sStart).replace(decimalSeparator, '') + decimalSeparator + value.substring(sEnd);
        _this2.$input.setSelectionRange(sStart, sStart);
      } else if (idx < sEnd) {
        _this2.$input.value = value.substring(0, sStart) + decimalSeparator + value.substring(sEnd);
        _this2.$input.setSelectionRange(sStart + 1, sStart + 1);
      } else {
        _this2.$input.value = value.substring(0, sStart) + decimalSeparator + value.substring(sEnd).replace(decimalSeparator, '');
        _this2.$input.setSelectionRange(sStart + 1, sStart + 1);
      }
    } else {
      _this2.$input.value = value.substring(0, sStart) + decimalSeparator + value.substring(sEnd);
      _this2.$input.setSelectionRange(sStart + 1, sStart + 1);
    }
    _this2.reformat();
    _this2.flushTextToValue();
  };
  if (key === 'arrowup') {
    if (sStart === 0 && sEnd === 0) {
      this.elt.nextStep();
      event.preventDefault();
      this.$input.setSelectionRange(0, 0);
    }
  } else if (key === 'arrowdown') {
    if (sStart === value.length && sEnd === value.length) {
      this.elt.prevStep();
      event.preventDefault();
      this.$input.setSelectionRange(this.$input.value.length, this.$input.value.length);
    }
  } else if (key === 'ctrl-x') {
    onKeys["delete"]();
  } else if (onKeys[event.type]) {
    event.preventDefault();
    onKeys[event.type]();
  } else if (onKeys[key]) {
    event.preventDefault();
    onKeys[key]();
  } else if (key.match(/^[0-9.]$/)) {
    event.preventDefault();
    onKeys.number();
  } else if (key === decimalSeparator) {
    event.preventDefault();
    onKeys.decimalSeparator();
  }
};
var _default = NITextController;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(63081);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _utils = __webpack_require__(84512);
var _NITextController = _interopRequireDefault(__webpack_require__(45626));
var _int = __webpack_require__(65909);
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _Vec = _interopRequireDefault(__webpack_require__(73316));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _ACore["default"]._;
var $ = _ACore["default"].$;

/***
 * @typedef NumberInputFormat
 * @property {string} locales
 * @property {string|null} decimalSeparator
 * @property {string|null} thousandSeparator
 */

/***
 * @extends AElement
 * @constructor
 */
function NumberInput() {
  var _this = this;
  /***
   *
   * @type {HTMLInputElement|AElement}
   */
  this.$input = $('input', this);

  // .on('keyup', this.eventHandler.keyup)
  // .on('paste', this.eventHandler.paste)
  // .on('change', this.eventHandler.change);
  this.$input.value = '0';
  this._prevValue = 0; //to know whenever the value changed
  this._value = 0;
  this._max = Infinity;
  this._min = -Infinity;
  this._step = 1;
  this._format = this._makeDefaultFormat();
  this.$upBtn = $('.absol-number-input-button-up-container button', this).on('mousedown', this.eventHandler.mouseDownBtn.bind(this, 1));
  this.$downBtn = $('.absol-number-input-button-down-container button', this).on('mousedown', this.eventHandler.mouseDownBtn.bind(this, -1));
  this.textCtrl = new _NITextController["default"](this);
  this.$domSignal = _('attachhook').addTo(this);
  this.$domSignal.once('attached', function () {
    _this.textCtrl.estimateWidthBy(_this.$input.value);
  });
  this.dragCtrl = new NIDragController(this);

  /****
   * @name min
   * @type {number}
   * @memberOf NumberInput#
   */

  /****
   * @name max
   * @type {number}
   * @memberOf NumberInput#
   */

  /****
   * @name value
   * @type {number}
   * @memberOf NumberInput#
   */

  /****
   * @name format
   * @type {NumberInputFormat}
   * @memberOf NumberInput#
   */

  /****
   * @name thousandsSeparator
   * @type {string|null}
   * @memberOf NumberInput#
   */

  /****
   * @name decimalSeparator
   * @type {string|null}
   * @memberOf NumberInput#
   */

  /****
   * @name readOnly
   * @type {boolean}
   * @memberOf NumberInput#
   */

  /****
   * @name disabled
   * @type {boolean}
   * @memberOf NumberInput#
   */

  /****
   * @name notNull
   * @type {boolean}
   * @memberOf NumberInput#
   */

  /****
   * @name stepper
   * @type {number}
   * @memberOf NumberInput#
   */

  /**
   * @type {number}
   * @name step
   * @memberOf NumberInput#
   */

  /**
   * @type {boolean}
   * @name valueDraggable
   * @memberOf NumberInput#
   */
  this.valueDraggable = false;
  /***
   *
   * @type {number|null}
   * @name rawValue
   */
}

NumberInput.tag = 'NumberInput'.toLowerCase();
NumberInput.render = function () {
  return _({
    "class": ['absol-number-input', 'as-must-not-null'],
    extendEvent: ['change'],
    child: [{
      "class": 'absol-number-input-text-container',
      child: 'input[type="text"]'
    }, {
      "class": 'absol-number-input-button-up-container',
      child: {
        tag: 'button',
        child: 'span.mdi.mdi-menu-up'
      }
    }, {
      "class": 'absol-number-input-button-down-container',
      child: {
        tag: 'button',
        child: 'span.mdi.mdi-menu-down'
      }
    }]
  });
};
NumberInput.prototype.addStyle = function (arg0, arg1) {
  if (arg0 === 'textAlign' || arg0 === 'text-align') {
    this.$input.addStyle(arg0, arg1);
    return this;
  } else {
    return _AElement["default"].prototype.addStyle.apply(this, arguments);
  }
};
NumberInput.prototype._makeDefaultFormat = function () {
  var res = {
    locales: 'vi-VN',
    maximumFractionDigits: 20,
    minimumFractionDigits: 0,
    pow10: null //only apply if maximumFractionDigits === 0
  };

  if (window['systemconfig'] && window['systemconfig']['numberFormatLocales']) {
    res.locales = window['systemconfig']['numberFormatLocales'];
  }
  return res;
};

/*****17 number********/
NumberInput.prototype.nextStep = function () {
  var ofs = 0;
  if ((0, _utils.isRealNumber)(this.min)) {
    ofs = this.min;
  }
  var step = this.step;
  var idx = (0, _utils.nearFloor)((this.value - ofs) / step, 0.01);
  this._value = Math.min(step * (idx + 1) + ofs, this.max);
  this._value = (0, _int.numberAutoFixed)(this._value, (step + '').length);
  this.textCtrl.flushValueToText();
};
NumberInput.prototype.prevStep = function () {
  var ofs = 0;
  if ((0, _utils.isRealNumber)(this.min)) {
    ofs = this.min;
  }
  var step = this.step;
  var idx = (0, _utils.nearFloor)((this.value - ofs) / step, 0.01);
  this._value = Math.max(step * (idx - 1) + ofs, this.min);
  this._value = (0, _int.numberAutoFixed)(this._value, (step + '').length);
  this.textCtrl.flushValueToText();
};
NumberInput.eventHandler = {};
NumberInput.eventHandler.mouseDownBtn = function (dir, event) {
  var _this2 = this;
  if (_EventEmitter["default"].isMouseRight(event)) return;
  var self = this;
  var pressing = true;
  var timeout = -1;
  var i = 0;
  this.addClass('as-pressing');
  var tick = function tick() {
    if (pressing) {
      if (i === 0 || i >= 4) {
        if (dir > 0) _this2.nextStep();else _this2.prevStep();
        if (i === 0) {
          _this2.notifyChanged({
            by: 'press_button'
          });
        } else {
          _this2.notifyChanged({
            by: 'long_press_button'
          });
        }
      }
      ++i;
      self.__pressingUpTimeout__ = setTimeout(tick, 100);
    }
  };
  var finish = function finish(event) {
    pressing = false;
    _this2.removeClass('as-pressing');
    if (timeout >= 0) {
      clearTimeout(timeout);
      timeout = -1;
    }
    document.removeEventListener('mouseup', finish);
    document.removeEventListener('mouseleave', finish);
    if (event.type === 'mouseup') {
      _this2.$input.focus();
    }
    _this2.notifyChanged({
      originEvent: event,
      by: 'press_button'
    });
    _this2.textCtrl.estimateWidthBy(_this2.$input.value);
  };
  document.addEventListener('mouseup', finish);
  document.addEventListener('mouseleave', finish);
  tick();
};
NumberInput.prototype.focus = function () {
  this.$input.focus();
};
NumberInput.prototype.notifyChanged = function (option) {
  option = option || {};
  var value = this.value;
  if (this._prevValue !== value) {
    this.emit('change', Object.assign({
      target: this,
      value: value,
      previousValue: this._prevValue
    }, option || {}), this);
    this._prevValue = value;
    // this._prevBy = option.by;
  }
};

NumberInput.property = {};
NumberInput.property.rawValue = {
  get: function get() {
    return this._prevValue;
  }
};
NumberInput.property.value = {
  set: function set(value) {
    if (typeof value === "string") value = parseFloat(value);
    if (typeof value != 'number' || isNaN(value)) value = null;
    this._value = value;
    this._prevValue = this.value;
    this.textCtrl.flushValueToText();
  },
  get: function get() {
    var value = this._value;
    if (value === null) {
      if (this.notNull) {
        value = 0;
      } else {
        return null;
      }
    }
    if (this._format.maximumFractionDigits === 0) {
      if ((0, _utils.isNaturalNumber)(this._format.pow10)) {
        value = Math.round(value / Math.pow(10, this._format.pow10)) * Math.pow(10, this._format.pow10);
      } else {
        value = Math.round(value);
      }
    } else if (this._format.maximumFractionDigits < 20) value = (0, _int.numberAutoFixed)(value, this._format.maximumFractionDigits);
    value = Math.min(this.max, Math.max(value, this.min));
    return value;
  }
};
NumberInput.property.step = {
  set: function set(value) {
    if (!(0, _utils.isRealNumber)(value)) value = 1;
    if (value === 0) value = 1;
    value = Math.abs(value);
    this._step = value;
  },
  get: function get() {
    if (this._format.maximumFractionDigits === 0 && (0, _utils.isNaturalNumber)(this._format.pow10)) {
      return Math.max(this._step, Math.pow(10, this._format.pow10));
    }
    return this._step;
  }
};
NumberInput.property.max = {
  set: function set(value) {
    if (!(0, _utils.isRealNumber)(value)) {
      value = Infinity;
    }
    this._max = value;
    this._prevValue = this.value;
    this.textCtrl.flushValueToText();
  },
  get: function get() {
    return Math.max(this._max, this._min);
  }
};
NumberInput.property.min = {
  set: function set(value) {
    if (!(0, _utils.isRealNumber)(value)) {
      value = -Infinity;
    }
    this._min = value;
    this._prevValue = this.value;
    this.textCtrl.flushValueToText();
  },
  get: function get() {
    return Math.min(this._min, this._max);
  }
};
NumberInput.prototype.locales2Format = {
  'vi-VN': {
    decimalSeparator: ',',
    thousandsSeparator: '.'
  },
  'en-US': {
    decimalSeparator: '.',
    thousandsSeparator: ','
  },
  'none': {
    decimalSeparator: '.',
    thousandsSeparator: ''
  }
};
NumberInput.property.decimalSeparator = {
  get: function get() {
    var lF = this.locales2Format[this._format.locales];
    if (lF) return lF.decimalSeparator;
    return '.';
  },
  set: function set() {}
};
NumberInput.property.thousandsSeparator = {
  get: function get() {
    var lF = this.locales2Format[this._format.locales];
    if (lF) return lF.thousandsSeparator;
    return null;
  },
  set: function set() {}
};
NumberInput.property.disabled = {
  set: function set(value) {
    this.$input.disabled = !!value;
    this.$upBtn.disabled = !!value;
    this.$downBtn.disabled = !!value;
    if (value) this.addClass('absol-disabled');else this.removeClass('absol-disabled');
  },
  get: function get() {
    return this.$input.disabled;
  }
};
NumberInput.property.readOnly = {
  set: function set(value) {
    this.$input.readOnly = !!value;
    if (value) this.addClass('as-read-only');else this.removeClass('as-read-only');
  },
  get: function get() {
    return this.$input.readOnly;
  }
};
NumberInput.property.format = {
  /***
   * @this NumberInput
   * @param value
   * @this NumberInput
   */
  set: function set(value) {
    if (value in this.locales2Format) {
      this._format = {
        locales: value,
        maximumFractionDigits: this._format.maximumFractionDigits,
        minimumFractionDigits: this._format.minimumFractionDigits
      };
    } else if (!value) {
      this._format = this._makeDefaultFormat();
    } else {
      this._format = Object.assign(this._makeDefaultFormat(), value);
    }
    // console.log(this._format)
    this._prevValue = this.value;
    this.textCtrl.flushValueToText();
  },
  get: function get() {
    return this._format;
  }
};
NumberInput.property.floatFixed = {
  set: function set(value) {
    if ((0, _utils.isRealNumber)(value)) {
      value = Math.round(value);
      if (value >= 0) {
        value = Math.min(value, 20);
        this._format.maximumFractionDigits = value;
        this._format.minimumFractionDigits = value;
        delete this._format.pow10;
      } else {
        this._format.maximumFractionDigits = 0;
        this._format.minimumFractionDigits = 0;
        this._format.pow10 = -value;
      }
    } else {
      this._format.maximumFractionDigits = 20;
      delete this._format.minimumFractionDigits;
      delete this._format.pow10;
    }
    this._prevValue = this.value;
    this.textCtrl.flushValueToText();
  },
  get: function get() {
    if (this._format.maximumFractionDigits === 20) return null;
    if (this._format.maximumFractionDigits === 0 && this._format.pow10 > 0) return -this._format.pow10;
    return this._format.maximumFractionDigits;
  }
};
NumberInput.property.notNull = {
  set: function set(value) {
    if (value) {
      this.addClass('as-must-not-null');
    } else {
      this.removeClass('as-must-not-null');
    }
    this._prevValue = this.value;
    this.textCtrl.flushValueToText();
  },
  get: function get() {
    return this.hasClass('as-must-not-null');
  }
};
NumberInput.property.stepper = {
  set: function set(value) {
    if (value) {
      this.addClass('as-has-stepper');
    } else {
      this.removeClass('as-has-stepper');
    }
  },
  get: function get() {
    return this.hasClass('as-has-stepper');
  }
};
_ACore["default"].install('NumberInput'.toLowerCase(), NumberInput);
var _default = NumberInput;
/**
 *
 * @param {NumberInput} elt
 * @constructor
 */
exports["default"] = _default;
function NIDragController(elt) {
  var _this3 = this;
  this.elt = elt;
  _({
    elt: elt,
    tag: _Hanger["default"]
  });
  Object.keys(this.constructor.prototype).forEach(function (key) {
    if (key.startsWith('ev_')) {
      _this3[key] = _this3[key].bind(_this3);
    }
  });
  this.elt.on({
    dragstart: this.ev_dragStart,
    drag: this.ev_drag,
    dragend: this.ev_dragEnd,
    draginit: this.ev_dragInit
  });
  this.state = 0;
  this.prevDistance = 0;
  this.$mouseLine = null;
}
NIDragController.prototype.ev_dragInit = function (event) {
  if (!this.elt.valueDraggable || _EventEmitter["default"].isMouseRight(event.originEvent)) {
    event.cancel();
  }
};
NIDragController.prototype.ev_dragStart = function (event) {
  if (this.elt.valueDraggable === false) return;
};
NIDragController.prototype.ev_drag = function (event) {
  if (this.calcDistance(event) > 0 && !this.isSelecting() && this.state === 0) {
    this.state = 1;
    document.body.classList.add('as-number-input-force-dragging');
    this.$mouseLine = _({
      tag: 'div',
      "class": 'as-number-input-mouse-line',
      style: {
        zIndex: (0, _utils.findMaxZIndex)(this.elt) + 1
      }
    }).addTo(document.body);
  }
  if (this.state !== 1) return;
  var distance = this.calcDistance(event);
  var delta = distance - this.prevDistance;
  if (delta >= 1) {
    this.prevDistance = distance;
    this.elt.nextStep();
  } else if (delta <= -1) {
    this.prevDistance = distance;
    this.elt.prevStep();
  }
  var deltaVector = event.currentPoint.sub(event.startingPoint);
  var length = deltaVector.abs();
  var angle = deltaVector.direction();
  this.$mouseLine.addStyle({
    left: event.startingPoint.x + 'px',
    top: event.startingPoint.y + 'px',
    width: length + 'px',
    transform: 'rotate(' + angle + 'rad)',
    transformOrigin: '0 0'
  });
};
NIDragController.prototype.ev_dragEnd = function (event) {
  this.elt.removeClass('as-dragging');
  document.body.classList.remove('as-number-input-force-dragging');
  if (this.$mouseLine) {
    this.$mouseLine.remove();
    this.$mouseLine = null;
  }
  this.state = 0;
  this.elt.emit('change', {
    by: 'drag'
  });
};
NIDragController.prototype.isSelecting = function () {
  return this.elt.$input.selectionStart !== this.elt.$input.selectionEnd;
};
NIDragController.prototype.calcDistance = function (event) {
  var bound = _Rectangle["default"].fromClientRect(this.elt.getBoundingClientRect());
  var mouse = new _Vec["default"](event.clientX, event.clientY);
  bound.x -= 10;
  bound.y -= 10;
  bound.height += 20;
  bound.width += 20;
  if (bound.containsPoint(mouse)) return 0;
  var res = Infinity;
  if (mouse.x > bound.x && mouse.x < bound.x + bound.width) {
    res = Math.min(res, Math.abs(mouse.y - bound.y), Math.abs(mouse.y - bound.y - bound.height));
  } else if (mouse.y > bound.y && mouse.y < bound.y + bound.height) {
    res = Math.min(res, Math.abs(mouse.x - bound.x), Math.abs(mouse.x - bound.x - bound.width));
  } else {
    res = Math.min(res, mouse.sub(bound.A()).abs(), mouse.sub(bound.B()).abs(), mouse.sub(bound.C()).abs(), mouse.sub(bound.D()).abs());
  }
  return res;
};

/***/ }),

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

"use strict";


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;
__webpack_require__(5519);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
__webpack_require__(20117);
__webpack_require__(39699);
__webpack_require__(25174);
__webpack_require__(67627);
__webpack_require__(31714);
__webpack_require__(9159);
__webpack_require__(2553);
__webpack_require__(137);
__webpack_require__(23717);
__webpack_require__(16680);
__webpack_require__(53699);
__webpack_require__(83471);
__webpack_require__(99897);
__webpack_require__(41274);
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; }
/***
 * @extends AElement
 * @constructor
 */
function ObjectMergeTool() {
  this._descriptors = null;
  this._objects = null;
  this.root = null;
  this.$body = (0, _ACore.$)('.as-omt-body', this).on('mouseover', this.eventHandler.mouseOverNode);
  this.hoveringNode = null;
  /**
   * @type {Object[]}
   * @memberOf ObjectMergeTool#
   * @name objects
   */
  /**
   * @type {Object}
   * @memberOf ObjectMergeTool#
   * @name descriptors
   */
}

ObjectMergeTool.tag = 'ObjectMergeTool'.toLowerCase();
ObjectMergeTool.render = function () {
  return (0, _ACore._)({
    "class": 'as-omt',
    extendEvent: ['change'],
    child: [{
      "class": 'as-omt-body'
    }]
  });
};
ObjectMergeTool.prototype._tryFlushData = function () {
  if (this.root && this.objects && this.objects.length > 0) {
    this.root.assign(this.objects[0]);
  }
};
ObjectMergeTool.prototype._findNode = function (targetElt) {
  while (targetElt && targetElt !== this) {
    if (targetElt.omtNode) return targetElt.omtNode;
    targetElt = targetElt.parentElement;
  }
  return null;
};
ObjectMergeTool.prototype.notifyChange = function () {
  this.emit('change', {
    type: 'change',
    target: this
  }, this);
};
ObjectMergeTool.property = {};
ObjectMergeTool.property.descriptor = {
  set: function set(value) {
    this._descriptor = value || {};
    this.$body.clearChild();
    this.root = _OMTBaseType["default"].make(this, null, this._descriptor);
    this.$body.addChild(this.root.elt);
    this._tryFlushData();
  },
  get: function get() {
    return this._descriptor;
  }
};
ObjectMergeTool.property.objects = {
  set: function set(value) {
    this._objects = value || [];
    this._tryFlushData();
  },
  get: function get() {
    return this._objects;
  }
};
ObjectMergeTool.property.data = {
  get: function get() {
    if (this.root) {
      return this.root["export"]();
    }
    if (this._objects && this.objects.length > 0) return this._objects[0];
    return null;
  }
};

/***
 * @type {{}}
 * @memberOf ObjectMergeTool#
 */
ObjectMergeTool.eventHandler = {};

/***
 * @this ObjectMergeTool
 * @param {MouseEvent} event
 */
ObjectMergeTool.eventHandler.mouseOverNode = function (event) {
  var node = this._findNode(event.target);
  if (this.hoveringNode === node) return;
  if (this.hoveringNode) {
    this.hoveringNode.elt.removeClass('as-hover');
  }
  this.hoveringNode = node;
  if (this.hoveringNode) {
    this.hoveringNode.elt.addClass('as-hover');
  }
};
_ACore["default"].install(ObjectMergeTool);
var _default = ObjectMergeTool;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Fragment = _interopRequireDefault(__webpack_require__(5925));
var _ACore = __webpack_require__(34093);
var _MessageDialog = _interopRequireDefault(__webpack_require__(11674));
var _Modal = _interopRequireDefault(__webpack_require__(4061));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _MultiCheckTreeMenu = _interopRequireDefault(__webpack_require__(74934));
var _CheckBoxInput = _interopRequireDefault(__webpack_require__(8398));
var _Array = __webpack_require__(40411);
var _RadioButton = _interopRequireDefault(__webpack_require__(30348));
var _OMTSelectOptionsDialog = _interopRequireDefault(__webpack_require__(33503));
var _stringGenerate = __webpack_require__(10713);
var _CheckboxButton = _interopRequireDefault(__webpack_require__(93475));
var _stringUtils = __webpack_require__(26243);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function hashArrayOf(node) {
  var res = (node.children || []).map(function (child) {
    return child.getHash();
  });
  res.sort(function (a, b) {
    return a - b;
  });
  return (0, _Array.arrayUnique)(res);
}

/***
 * @extends Fragment
 * @param {OMTArray} node
 * @constructor
 */
function OMTArrayMergeDialog(node) {
  _Fragment["default"].call(this);
  this.node = node;
  this.calc();
  this.getView();
  this.start();
}
_OOP["default"].mixClass(OMTArrayMergeDialog, _Fragment["default"]);
OMTArrayMergeDialog.prototype.calc = function () {
  this.options = this.node.getSelectOptions();
  this.curHash = hashArrayOf(this.node);
  this.selectedNodes = {};
};
OMTArrayMergeDialog.prototype.onStart = function () {
  this.$modal.addTo(document.body);
};
OMTArrayMergeDialog.prototype.onStop = function () {
  this.$modal.remove();
};
OMTArrayMergeDialog.prototype.assignResult = function () {
  var dict = {};
  var itemArr = [];
  var hashArr = [];
  var node;
  for (var key in this.selectedNodes) {
    node = this.selectedNodes[key];
    if (node.children) {
      node.children.forEach(function (cr) {
        var hash = cr.getHash();
        if (dict[hash]) return;
        dict[hash] = true;
        itemArr.push(cr["export"]());
        hashArr.push(hash);
      });
    }
  }
  if (this.curHash === hashArr && (0, _Array.arrayUnique)(this.curHash.concat(hashArr)).length === this.curHash.length) return;
  this.node.assign(itemArr);
  this.node.updateRaw();
  this.node.notifyChange();
};
OMTArrayMergeDialog.prototype._makeOptionRow = function (opt, i, dict) {
  var self = this;
  var descriptor = Object.assign({}, this.node.descriptor);
  var clazz = this.node.constructor;
  var node = new clazz(this.node.tool, this.node.parent, descriptor);
  node.assign(opt);
  var nodeHash = (0, _stringUtils.stringHashCode)(hashArrayOf(node).join(','));
  if (dict[nodeHash]) return null;
  dict[nodeHash] = node;
  var checked = (0, _Array.arrayUnique)(this.curHash.concat(hashArrayOf(node))).length === this.curHash.length;
  if (checked) this.selectedNodes[nodeHash] = node;
  var radio = (0, _ACore._)({
    tag: _CheckBoxInput["default"].tag,
    style: {
      marginRight: '10px'
    },
    props: {
      checked: checked
    },
    on: {
      change: function change() {
        if (radio.checked) {
          self.selectedNodes[nodeHash] = node;
        } else {
          delete self.selectedNodes[nodeHash];
        }
        self.$view.$actionBtns[1].disabled = Object.keys(self.selectedNodes).length === 0;
      }
    }
  });
  return (0, _ACore._)({
    "class": 'as-omt-option-row',
    child: [radio, node.elt]
  });
};
OMTArrayMergeDialog.prototype.createView = function () {
  var _this = this;
  var self = this;
  /***
   * @type MessageDialog
   */
  this.$view = (0, _ACore._)({
    tag: _MessageDialog["default"].tag,
    "class": 'as-omt-dialog',
    props: {
      dialogTitle: {
        mlKey: 'txt_option'
      },
      dialogActions: [{
        text: 'OK',
        name: 'ok'
      }, {
        text: 'Cancel',
        name: 'cancel'
      }]
    },
    on: {
      action: function action(event) {
        self.stop();
        var action = event.action;
        if (action.name === 'cancel') return;
        if (action.name === 'ok') {
          self.assignResult();
        }
      }
    }
  });
  var dict = {};
  var rows = this.options.map(function (opt, i) {
    return _this._makeOptionRow(opt, i, dict);
  }).filter(function (x) {
    return !!x;
  });
  this.$view.addChild(rows);
  this.$modal = (0, _ACore._)({
    tag: _Modal["default"].tag,
    style: {
      zIndex: 1000000
    },
    child: this.$view
  });
};
var _default = OMTArrayMergeDialog;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Fragment = _interopRequireDefault(__webpack_require__(5925));
var _ACore = __webpack_require__(34093);
var _MessageDialog = _interopRequireDefault(__webpack_require__(11674));
var _Modal = _interopRequireDefault(__webpack_require__(4061));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _MultiCheckTreeMenu = _interopRequireDefault(__webpack_require__(74934));
var _CheckBoxInput = _interopRequireDefault(__webpack_require__(8398));
var _Array = __webpack_require__(40411);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends Fragment
 * @param {OMTEnumSet} node
 * @constructor
 */
function OMTEnumSetMergeDialog(node) {
  _Fragment["default"].call(this);
  this.node = node;
  this.calc();
  this.getView();
  this.start();
}
_OOP["default"].mixClass(OMTEnumSetMergeDialog, _Fragment["default"]);
OMTEnumSetMergeDialog.prototype.calc = function () {
  this.currentValues = this.node["export"]();
  this.descriptor = this.node.descriptor;
  this.selectOptions = this.node.getSelectOptions();
  this.selected = {};
};
OMTEnumSetMergeDialog.prototype.onStart = function () {
  this.$modal.addTo(document.body);
};
OMTEnumSetMergeDialog.prototype.onStop = function () {
  this.$modal.remove();
};
OMTEnumSetMergeDialog.prototype.assignResult = function () {
  var selectedValues = this._getCurrent();
  if (selectedValues.length > 0) {
    this.node.assign((0, _Array.arrayUnique)(this.currentValues.concat(selectedValues)));
    this.node.notifyChange();
  }
};
OMTEnumSetMergeDialog.prototype._getCurrent = function () {
  var _this = this;
  var selectedValues = this.selectOptions.reduce(function (ac, cr, i) {
    if (_this.selected[i]) ac = ac.concat(cr);
    return ac;
  }, []);
  selectedValues = (0, _Array.arrayUnique)(selectedValues);
  return selectedValues;
};
OMTEnumSetMergeDialog.prototype._makeOptionRow = function (opt, i) {
  var self = this;
  var checked = (0, _Array.arrayUnique)(this.currentValues.concat(opt)).length === (0, _Array.arrayUnique)(this.currentValues).length;
  this.selected[i] = checked;
  var checkbox = (0, _ACore._)({
    tag: _CheckBoxInput["default"].tag,
    style: {
      marginRight: '10px'
    },
    props: {
      checked: checked
    },
    on: {
      change: function change() {
        self.selected[i] = checkbox.checked;
        var currentValues = self._getCurrent();
        self.previewNode.assign(currentValues);
        self.$view.$actionBtns[1].disabled = currentValues.length === 0;
      }
    }
  });
  var mSelect = (0, _ACore._)({
    tag: _MultiCheckTreeMenu["default"].tag,
    "class": 'as-border-none',
    props: {
      pendingValues: opt,
      readOnly: true
    }
  });
  return (0, _ACore._)({
    "class": 'as-omt-option-row',
    child: [checkbox, mSelect]
  });
};
OMTEnumSetMergeDialog.prototype.createView = function () {
  var _this2 = this;
  var self = this;
  this.$optionRows = this.selectOptions.map(function (opt, i) {
    return _this2._makeOptionRow(opt, i);
  });
  this.previewNode = new this.node.constructor(this.node.tool, this.node.parent, this.node.descriptor);
  this.previewNode.assign(this.currentValues);
  this.$view = (0, _ACore._)({
    tag: _MessageDialog["default"].tag,
    "class": ['as-omt-dialog'],
    props: {
      dialogTitle: 'Merge',
      dialogActions: [{
        text: 'OK',
        name: 'ok'
      }, {
        text: 'Cancel',
        name: 'cancel'
      }]
    },
    on: {
      action: function action(event) {
        self.stop();
        if (event.action.name === 'ok') {
          self.assignResult();
        }
      }
    },
    child: [this.previewNode, {
      child: [{
        "class": 'as-omt-field-name',
        child: {
          text: 'Merge From'
        }
      }].concat(this.$optionRows)
    }]
  });
  Promise.resolve(this.descriptor.items).then(function (items) {
    (0, _ACore.$$)(_MultiCheckTreeMenu["default"].tag, _this2.$view).forEach(function (elt) {
      elt.items = items;
      elt.values = elt.pendingValues;
    });
  });
  this.$modal = (0, _ACore._)({
    tag: _Modal["default"].tag,
    style: {
      zIndex: 1000000
    },
    child: this.$view
  });
};
var _default = OMTEnumSetMergeDialog;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Fragment = _interopRequireDefault(__webpack_require__(5925));
var _ACore = __webpack_require__(34093);
var _MessageDialog = _interopRequireDefault(__webpack_require__(11674));
var _Modal = _interopRequireDefault(__webpack_require__(4061));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _stringGenerate = __webpack_require__(10713);
var _RadioButton = _interopRequireDefault(__webpack_require__(30348));
var _LanguageSystem = _interopRequireDefault(__webpack_require__(19677));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends Fragment
 * @param {OMTBaseType} node
 * @constructor
 */
function OMTSelectOptionsDialog(node) {
  _Fragment["default"].call(this);
  this.node = node;
  this.calc();
  this.getView();
  this.start();
}
_OOP["default"].mixClass(OMTSelectOptionsDialog, _Fragment["default"]);
OMTSelectOptionsDialog.prototype.calc = function () {
  this.options = this.node.getSelectOptions();
  this.curHash = this.node.getHash();
  this.selectedHash = this.curHash;
  this.selectedOption = null;
  this.ident = (0, _stringGenerate.randomIdent)(5);
};
OMTSelectOptionsDialog.prototype.onStart = function () {
  this.$modal.addTo(document.body);
};
OMTSelectOptionsDialog.prototype.onStop = function () {
  this.$modal.remove();
};
OMTSelectOptionsDialog.prototype.assignResult = function () {
  if (this.curHash !== this.selectedHash) {
    this.node.assign(this.selectedOption);
    this.node.updateRaw();
    this.node.notifyChange();
  }
};
OMTSelectOptionsDialog.prototype._makeOptionRow = function (opt, i, dict) {
  var descriptor = Object.assign({}, this.node.descriptor);
  if (i < 0) {
    descriptor.desc = '(current-mixed)';
  }
  var clazz = this.node.constructor;
  var node = new clazz(this.node.tool, this.node.parent, descriptor);
  node.assign(opt);
  var nodeHash = node.getHash();
  if (dict[nodeHash]) return null;
  dict[nodeHash] = node;
  var self = this;
  var radio = (0, _ACore._)({
    tag: _RadioButton["default"].tag,
    style: {
      marginRight: '10px'
    },
    props: {
      name: this.ident,
      checked: nodeHash === this.curHash
    },
    on: {
      change: function change() {
        if (radio.checked) {
          self.selectedHash = nodeHash;
          self.selectedOption = opt;
        }
      }
    }
  });
  return (0, _ACore._)({
    "class": 'as-omt-option-row',
    child: [radio, node.elt]
  });
};
OMTSelectOptionsDialog.prototype.createView = function () {
  var _this = this;
  var self = this;
  this.$view = (0, _ACore._)({
    tag: _MessageDialog["default"].tag,
    "class": 'as-omt-dialog',
    props: {
      dialogTitle: {
        mlKey: 'txt_option'
      },
      dialogActions: [{
        text: {
          mlKey: 'txt_ok'
        },
        name: 'ok'
      }, {
        text: {
          mlKey: 'txt_cancel'
        },
        name: 'cancel'
      }]
    },
    on: {
      action: function action(event) {
        self.stop();
        var action = event.action;
        if (action.name === 'cancel') return;
        if (action.name === 'ok') {
          self.assignResult();
        }
      }
    }
  });
  var dict = {};
  var rows = this.options.map(function (opt, i) {
    return _this._makeOptionRow(opt, i, dict);
  }).filter(function (x) {
    return !!x;
  });
  if (!dict[this.curHash]) {
    rows.unshift(this._makeOptionRow(this.node["export"](), -1, dict));
  }
  this.$view.addChild(rows);
  this.$modal = (0, _ACore._)({
    tag: _Modal["default"].tag,
    style: {
      zIndex: 1000000
    },
    child: this.$view
  });
};
var _default = OMTSelectOptionsDialog;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _CheckBoxInput = _interopRequireDefault(__webpack_require__(8398));
var _DateTimeInput = _interopRequireDefault(__webpack_require__(37800));
var _DateInput = _interopRequireDefault(__webpack_require__(47156));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTDate() {
  _OMTBaseType["default"].apply(this, arguments);
}
_OOP["default"].mixClass(OMTDate, _OMTBaseType["default"]);
_OMTBaseType["default"].classes.date = OMTDate;
OMTDate.prototype.type = 'date';
OMTDate.prototype.render = function () {
  _OMTBaseType["default"].prototype.render.call(this);
  this.$value = (0, _ACore._)({
    tag: _DateInput["default"].tag,
    "class": 'as-border-none',
    props: {
      readOnly: true
    }
  });
  if (this.descriptor.format) this.$value.format = this.descriptor.format;
  this.$body.addChild(this.$value);
};
OMTDate.prototype.assign = function (o) {
  this.value = o;
  this.$value.value = o;
};
OMTDate.prototype.getRaw = function () {
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      tag: 'span',
      child: {
        text: this.$value.text
      }
    }]
  };
};
var _default = OMTDate;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _CheckBoxInput = _interopRequireDefault(__webpack_require__(8398));
var _DateTimeInput = _interopRequireDefault(__webpack_require__(37800));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTDateTime() {
  _OMTBaseType["default"].apply(this, arguments);
}
_OOP["default"].mixClass(OMTDateTime, _OMTBaseType["default"]);
_OMTBaseType["default"].classes.datetime = OMTDateTime;
OMTDateTime.prototype.type = 'datetime';
OMTDateTime.prototype.render = function () {
  _OMTBaseType["default"].prototype.render.call(this);
  this.$value = (0, _ACore._)({
    tag: _DateTimeInput["default"].tag,
    "class": 'as-border-none',
    props: {
      readOnly: true
    }
  });
  if (this.descriptor.format) this.$value.format = this.descriptor.format;
  this.$body.addChild(this.$value);
};
OMTDateTime.prototype.assign = function (o) {
  this.value = o;
  this.$value.value = o;
};
OMTDateTime.prototype.getRaw = function () {
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      tag: 'span',
      child: {
        text: this.$value.text
      }
    }]
  };
};
var _default = OMTDateTime;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _OMTArrayMergeDialog = _interopRequireDefault(__webpack_require__(9745));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTArray() {
  _OMTBaseType["default"].apply(this, arguments);
  this.value = null;
}
_OOP["default"].mixClass(OMTArray, _OMTBaseType["default"]);
_OMTBaseType["default"].classes.array = OMTArray;
OMTArray.prototype.commands = OMTArray.prototype.commands.concat([{
  name: 'merge',
  icon: 'span.mdi.mdi-set-merge',
  title: 'Merge'
}]);
OMTArray.prototype.execCmd = function (commandName) {
  _OMTBaseType["default"].prototype.execCmd.call(this, commandName);
  if (commandName === 'merge') {
    new _OMTArrayMergeDialog["default"](this);
  }
};
OMTArray.prototype.assign = function (o) {
  var _this = this;
  this.$body.clearChild();
  this.children = (o || []).map(function (it, i) {
    var desc = Object.assign({
      name: i,
      displayName: i + 1 + ''
    }, _this.descriptor.of);
    if (!desc.displayName) desc.displayName = i + 1 + '';
    var res = _OMTBaseType["default"].make(_this.tool, _this.parent, desc);
    res.assign(it);
    return res;
  });
  this.$body.addChild(this.children.map(function (c) {
    return c.elt;
  }));
};
OMTArray.prototype["export"] = function () {
  return this.children.map(function (c) {
    return c["export"]();
  });
};
OMTArray.prototype.getRaw = function () {
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      style: {
        paddingLeft: '25px'
      },
      child: this.children.map(function (child) {
        return child.getRaw();
      })
    }]
  };
};
var _default = OMTArray;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _generator = __webpack_require__(18528);
var _FlexiconButton = _interopRequireDefault(__webpack_require__(78266));
var _Modal = _interopRequireDefault(__webpack_require__(4061));
var _MessageDialog = _interopRequireDefault(__webpack_require__(11674));
var _stringGenerate = __webpack_require__(10713);
var _RadioInput = _interopRequireDefault(__webpack_require__(11655));
var _stringUtils = __webpack_require__(26243);
var _RadioButton = _interopRequireDefault(__webpack_require__(30348));
var _OMTSelectOptionsDialog = _interopRequireDefault(__webpack_require__(33503));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
 *
 * @constructor
 */
function OMTBaseType(tool, parent, descriptor) {
  this.tool = tool;
  this.parent = parent;
  this.level = parent ? parent.level + 1 : 0;
  this.descriptor = descriptor;
  this.render();
  this.elt.omtNode = this;
}
OMTBaseType.prototype.type = 'base';
OMTBaseType.prototype.commands = [{
  name: 'select_other',
  icon: 'span.mdi.mdi-menu-down',
  title: 'Select'
}];
OMTBaseType.prototype.render = function () {
  var _this = this;
  var self = this;
  var displayName = 'ROOT';
  if (this.descriptor.displayName !== undefined) displayName = this.descriptor.displayName + '';else if (this.descriptor.name !== undefined) displayName = this.descriptor.name + '';
  if (this.descriptor.desc) displayName += this.descriptor.desc;
  this.elt = (0, _ACore._)({
    "class": ['as-omt-field', 'as-type-' + this.type],
    style: {
      '--level': this.level
    },
    child: [{
      "class": 'as-omt-field-header',
      child: [{
        "class": 'as-omt-field-name',
        child: {
          text: displayName
        }
      }]
    }, {
      "class": 'as-omt-field-body'
    }, {
      "class": 'as-omt-field-raw-ctn'
    }, {
      "class": 'as-omt-field-command-ctn',
      child: this.commands.map(function (command) {
        return {
          tag: _FlexiconButton["default"].tag,
          attr: {
            'data-command': command.name
          },
          props: {
            icon: command.icon,
            title: command.title
          },
          on: {
            click: _this.execCmd.bind(_this, command.name, command)
          }
        };
      })
    }],
    on: {
      dblclick: function (event) {
        var target = event.target;
        while (target) {
          if (target === this) break;
          if (target.tagName === 'BUTTON') return;
          target = target.parentElement;
        }
        this.execCmd('select_other');
      }.bind(this)
    }
  });
  this.$commandCtn = (0, _ACore.$)('.as-omt-field-command-ctn', this.elt);
  this.$rawCtn = (0, _ACore.$)('.as-omt-field-raw-ctn', this.elt);
  this.$viewModeBtn = (0, _ACore._)({
    tag: _FlexiconButton["default"].tag,
    attr: {
      'data-command': 'view_mode'
    },
    props: {
      icon: 'span.mdi.mdi.mdi-code-braces',
      //code-braces
      title: 'View Raw'
    },
    on: {
      click: function click() {
        if (self.elt.hasClass('as-mode-raw')) {
          self.elt.removeClass('as-mode-raw');
          this.icon = 'span.mdi.mdi-code-braces';
          this.title = 'View Raw';
        } else {
          self.elt.addClass('as-mode-raw');
          this.icon = 'span.mdi.mdi-view-dashboard-edit-outline';
          this.title = 'View Guide';
          self.updateRaw();
        }
      }
    }
  });
  this.$commandCtn.addChild(this.$viewModeBtn);
  this.$body = (0, _ACore.$)('.as-omt-field-body', this.elt);
};
OMTBaseType.prototype.updateRaw = function () {
  var rawElt = (0, _ACore._)(this.getRaw());
  this.$rawCtn.clearChild().addChild(rawElt);
};
OMTBaseType.prototype.notifyChange = function () {
  this.descriptor.onchange && this.descriptor.onchange.call(this, {
    type: 'change',
    target: this,
    descriptor: this.descriptor
  }, this);
  this.tool.notifyChange();
};
OMTBaseType.prototype.getRaw = function () {
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      tag: 'code',
      child: {
        text: (0, _generator.generateJSVariable)(this["export"]())
      }
    }]
  };
};
OMTBaseType.prototype.assign = function (o) {
  this.value = o;
  this.$body.clearChild().addChild((0, _ACore._)({
    tag: 'code',
    child: {
      text: (0, _generator.generateJSVariable)(o)
    }
  }));
};
OMTBaseType.prototype.getHash = function () {
  return (0, _stringUtils.stringHashCode)((0, _generator.generateJSVariable)(this["export"]()));
};
OMTBaseType.prototype["export"] = function () {
  return this.value;
};
OMTBaseType.prototype.execCmd = function (commandName, command) {
  if (commandName === 'select_other') {
    this.userSelect();
  }
};
OMTBaseType.prototype.getSelectOptions = function () {
  if (!this.parent) return this.tool.objects;
  var parentOptions = this.parent.getSelectOptions().filter(function (x) {
    return !!x;
  });
  var name = this.descriptor.name;
  return parentOptions.map(function (ot) {
    return ot[name];
  }).filter(function (ot) {
    return ot !== undefined;
  });
};
OMTBaseType.prototype.userSelect = function () {
  new _OMTSelectOptionsDialog["default"](this);
};
OMTBaseType.classes = {};

/***
 *
 * @param tool
 * @param parent
 * @param descriptor
 * @returns {OMTBaseType}
 */
OMTBaseType.make = function (tool, parent, descriptor) {
  var clazz = OMTBaseType.classes[descriptor.type] || OMTBaseType;
  return new clazz(tool, parent, descriptor);
};
var _default = OMTBaseType;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _OMTFile = _interopRequireDefault(__webpack_require__(2553));
var _Color = _interopRequireDefault(__webpack_require__(64974));
var _CheckBoxInput = _interopRequireDefault(__webpack_require__(8398));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTBool() {
  _OMTBaseType["default"].apply(this, arguments);
}
_OOP["default"].mixClass(OMTBool, _OMTBaseType["default"]);
_OMTBaseType["default"].classes.bool = OMTBool;
OMTBool.prototype.type = 'bool';
OMTBool.prototype.render = function () {
  _OMTBaseType["default"].prototype.render.call(this);
  this.$value = (0, _ACore._)({
    tag: _CheckBoxInput["default"],
    props: {
      readOnly: true
    }
  });
  this.$body.addChild(this.$value);
};
OMTBool.prototype.assign = function (o) {
  this.value = o;
  this.$value.checked = !!o;
};
var _default = OMTBool;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _OMTFile = _interopRequireDefault(__webpack_require__(2553));
var _Color = _interopRequireDefault(__webpack_require__(64974));
var _stringUtils = __webpack_require__(26243);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTColor() {
  _OMTBaseType["default"].apply(this, arguments);
}
_OOP["default"].mixClass(OMTColor, _OMTBaseType["default"]);
_OMTBaseType["default"].classes.color = OMTColor;
OMTColor.prototype.type = 'color';
OMTColor.prototype.render = function () {
  _OMTBaseType["default"].prototype.render.call(this);
  this.$value = (0, _ACore._)({
    "class": "as-omt-field-color-value-bg",
    child: '.as-omt-field-color-value'
  });
  this.$body.addChild(this.$value);
};
OMTColor.prototype.assign = function (o) {
  this.value = o;
  var color = 'transparent';
  try {
    if (o instanceof _Color["default"]) {
      color = o.toString("hex8");
    } else if (typeof o === "string") {
      color = _Color["default"].parse(o).toString("hex8");
    }
  } catch (err) {}
  this.color = color;
  this.$value.addStyle('--omt-color-value', color);
};
OMTColor.prototype.getHash = function () {
  return (0, _stringUtils.stringHashCode)(this.color + '');
};
OMTColor.prototype.getRaw = function () {
  var color = _Color["default"].parse(this.color);
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      tag: 'span',
      style: {
        color: color.toString('hex6')
      },
      child: {
        text: this.color
      }
    }]
  };
};
var _default = OMTColor;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _SelectTreeMenu = _interopRequireDefault(__webpack_require__(75823));
var _generator = __webpack_require__(18528);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTEnum() {
  _OMTBaseType["default"].apply(this, arguments);
  this.value = null;
}
_OOP["default"].mixClass(OMTEnum, _OMTBaseType["default"]);
_OMTBaseType["default"].classes["enum"] = OMTEnum;
OMTEnum.prototype.render = function () {
  var _this = this;
  _OMTBaseType["default"].prototype.render.call(this);
  this.$value = (0, _ACore._)({
    tag: _SelectTreeMenu["default"].tag,
    "class": 'as-border-none',
    style: {
      height: '18px'
    },
    props: {
      readOnly: true
    }
  });
  this.$body.addChild(this.$value);
  if (this.descriptor.items && this.descriptor.items.then) {
    this.descriptor.items.then(function (items) {
      _this.$value.items = items;
    });
  } else {
    this.$value.items = this.descriptor.items;
  }
};
OMTEnum.prototype.assign = function (o) {
  this.value = o;
  this.$value.value = o;
};
OMTEnum.prototype.getRaw = function () {
  var text = '';
  var holders = this.$value.findItemsByValue(this["export"]());
  if (holders && holders.length > 0) {
    text = holders[0].item.text;
    if (holders[0].item.desc) text += ' - ' + holders[0].item.desc;
  }
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      tag: 'span',
      child: {
        text: text
      }
    }]
  };
};
var _default = OMTEnum;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _SelectTreeMenu = _interopRequireDefault(__webpack_require__(75823));
var _DualSelectMenu = _interopRequireDefault(__webpack_require__(34219));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTEnumOfPair() {
  _OMTBaseType["default"].apply(this, arguments);
  this.value = null;
}
_OOP["default"].mixClass(OMTEnumOfPair, _OMTBaseType["default"]);
_OMTBaseType["default"].classes['enum<pair>'] = OMTEnumOfPair;
OMTEnumOfPair.prototype.type = 'enum<pair>';
OMTEnumOfPair.prototype.render = function () {
  var _this = this;
  _OMTBaseType["default"].prototype.render.call(this);
  this.$value = (0, _ACore._)({
    tag: _DualSelectMenu["default"].tag,
    "class": 'as-border-none',
    style: {
      height: '18px'
    },
    props: {
      readOnly: true
    }
  });
  this.$body.addChild(this.$value);
  if (this.descriptor.items && this.descriptor.items.then) {
    this.descriptor.items.then(function (items) {
      _this.$value.items = items;
    });
  } else {
    this.$value.items = this.descriptor.items;
  }
};
OMTEnumOfPair.prototype.assign = function (o) {
  this.value = o;
  this.$value.value = o;
};
OMTEnumOfPair.prototype.getRaw = function () {
  var text = this.$value.$item && this.$value.$item.innerText;
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      tag: 'span',
      child: {
        text: text
      }
    }]
  };
};
var _default = OMTEnumOfPair;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _OMTArray = _interopRequireDefault(__webpack_require__(31714));
var _OMTEnumSetMergeDialog = _interopRequireDefault(__webpack_require__(66722));
var _MultiCheckMenu = _interopRequireDefault(__webpack_require__(59346));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTEnumSet() {
  _OMTBaseType["default"].apply(this, arguments);
  this.value = null;
  this._flatTreeItems();
}
_OOP["default"].mixClass(OMTEnumSet, _OMTBaseType["default"]);
_OMTBaseType["default"].classes['{enum}'] = OMTEnumSet;
OMTEnumSet.prototype.commands = _OMTArray["default"].prototype.commands.slice();
OMTEnumSet.prototype._flatTreeItems = function () {
  if (!this.descriptor.flat) {
    this.descriptor.flat = true;
    this.descriptor.items = this.descriptor.items.reduce(function visit(ac, cr) {
      var item = Object.assign({}, cr);
      ac.push(item);
      if (item.items && item.items.length > 0) {
        item.items.reduce(visit, ac);
      }
      delete item.items;
      return ac;
    }, []);
  }
};
OMTEnumSet.prototype.render = function () {
  _OMTBaseType["default"].prototype.render.call(this);
  this.$value = (0, _ACore._)({
    tag: _MultiCheckMenu["default"].tag,
    "class": 'as-border-none',
    style: {
      height: '18px'
    },
    props: {
      readOnly: true,
      strictValue: false
    }
  });
  this.$body.addChild(this.$value);
  this.$value.items = this.descriptor.items;
  this.$value.values = this.value;
};
OMTEnumSet.prototype.assign = function (o) {
  this.value = o;
  this.$value.values = o;
};
OMTEnumSet.prototype.execCmd = function (commandName) {
  _OMTBaseType["default"].prototype.execCmd.call(this, commandName);
  if (commandName === 'merge') {
    this.userMerge();
  }
};
OMTEnumSet.prototype.userMerge = function () {
  //as-omt-option-row

  new _OMTEnumSetMergeDialog["default"](this);
};
OMTEnumSet.prototype.getRaw = function () {
  var _this = this;
  var textItems = this["export"]().map(function (value) {
    var text = '';
    var holders = _this.$value.findItemsByValue(value);
    if (holders && holders.length > 0) {
      text = holders[0].item.text;
      if (holders[0].item.desc) text += ' - ' + holders[0].item.desc;
    }
    return text;
  });
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      style: {
        paddingLeft: '25px'
      },
      child: textItems.map(function (text) {
        return {
          tag: 'li',
          child: {
            text: text
          }
        };
      })
    }]
  };
};
var _default = OMTEnumSet;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _FileListItem = _interopRequireDefault(__webpack_require__(62355));
var _utils = __webpack_require__(84512);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTFile() {
  _OMTBaseType["default"].apply(this, arguments);
}
_OOP["default"].mixClass(OMTFile, _OMTBaseType["default"]);
_OMTBaseType["default"].classes.file = OMTFile;
_OMTBaseType["default"].prototype.type = 'file';
OMTFile.prototype.render = function () {
  _OMTBaseType["default"].prototype.render.call(this);
  this.$value = (0, _ACore._)({
    tag: _FileListItem["default"].tag,
    "class": 'as-omt-field-value'
  });
  this.$body.addChild(this.$value);
};
OMTFile.prototype.assign = function (o) {
  this.value = o;
  if (o) {
    this.$value.value = o;
    this.$value.removeStyle('display');
  } else {
    this.$value.addStyle('display', 'none');
  }
};
OMTFile.prototype.getRaw = function () {
  var info = (0, _utils.fileInfoOf)(this.value);
  var href = info.url;
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      tag: 'a',
      props: {
        href: href,
        target: '_blank'
      },
      child: {
        text: info.name
      }
    }]
  };
};
var _default = OMTFile;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _FileListInput = _interopRequireDefault(__webpack_require__(13146));
var _OMTArray = _interopRequireDefault(__webpack_require__(31714));
var _utils = __webpack_require__(84512);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTFileArray() {
  _OMTBaseType["default"].apply(this, arguments);
}
_OOP["default"].mixClass(OMTFileArray, _OMTBaseType["default"]);
_OMTBaseType["default"].classes['file[]'] = OMTFileArray;
OMTFileArray.prototype.type = 'file[]';
OMTFileArray.prototype.commands = _OMTArray["default"].prototype.commands.slice();
OMTFileArray.prototype.render = function () {
  _OMTBaseType["default"].prototype.render.call(this);
  this.$value = (0, _ACore._)({
    tag: _FileListInput["default"].tag,
    "class": ['as-omt-field-value', 'as-border-none'],
    props: {
      readOnly: true
    }
  });
  this.$body.addChild(this.$value);
};
OMTFileArray.prototype.assign = function (o) {
  this.value = o;
  if (o instanceof Array) {
    this.$value.files = o;
    this.$value.removeStyle('display');
  } else {
    this.$value.addStyle('display', 'none');
  }
};
OMTFileArray.prototype.getHash = function () {
  return (0, _utils.calcDTQueryHash)(this.value);
};
OMTFileArray.prototype.getRaw = function () {
  var infoArr = (this.value || []).map(function (it) {
    return (0, _utils.fileInfoOf)(it);
  });
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      style: {
        paddingLeft: '25px'
      },
      child: infoArr.map(function (info) {
        return {
          tag: 'a',
          props: info.url ? {
            href: info.url,
            target: '_blank'
          } : {},
          child: {
            text: info.name
          }
        };
      })
    }]
  };
};
var _default = OMTFileArray;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _generator = __webpack_require__(18528);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTHtml() {
  _OMTBaseType["default"].apply(this, arguments);
  this.value = null;
}
_OOP["default"].mixClass(OMTHtml, _OMTBaseType["default"]);
_OMTBaseType["default"].classes.html = OMTHtml;
OMTHtml.prototype.type = 'html';
OMTHtml.prototype.assign = function (o) {
  this.value = o;
  this.$body.clearChild();
  this.$value = (0, _ACore._)({
    tag: 'div',
    props: {
      innerHTML: o
    }
  });
  this.$body.addChild(this.$value);
};
OMTHtml.prototype.getRaw = function () {
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      tag: 'span',
      child: {
        text: this["export"]()
      }
    }]
  };
};
var _default = OMTHtml;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _OMTFile = _interopRequireDefault(__webpack_require__(2553));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTImage() {
  _OMTBaseType["default"].apply(this, arguments);
}
_OOP["default"].mixClass(OMTImage, _OMTBaseType["default"]);
_OMTBaseType["default"].classes.image = OMTImage;
_OMTBaseType["default"].prototype.type = 'image';
OMTImage.prototype.assign = function (o) {
  var _this = this;
  this.value = o;
  var title = '';
  this.$body.clearChild();
  var handle = function handle(val) {
    if (!val) return;
    if (val && val.then) {
      val.then(handle);
      return;
    }
    if (val && val.url) {
      handle(val.url);
      return;
    }
    if (val instanceof File || val instanceof Blob) {
      val.url = val.url || URL.createObjectURL(val);
      if (!title && val.filename) title = val.filename;
      handle(val);
      return;
    }
    if (!title) title = val.split('/').pop().split('?').shift();
    _this.$value = (0, _ACore._)({
      tag: 'img',
      "class": 'as-omt-field-value',
      props: {
        src: val,
        title: title
      }
    });
    _this.$body.addChild(_this.$value);
  };
  handle(o);
};
OMTImage.prototype.getRaw = _OMTFile["default"].prototype.getRaw;
var _default = OMTImage;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _generator = __webpack_require__(18528);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTString() {
  _OMTBaseType["default"].apply(this, arguments);
  this.value = null;
}
_OOP["default"].mixClass(OMTString, _OMTBaseType["default"]);
_OMTBaseType["default"].classes.string = OMTString;
OMTString.prototype.assign = function (o) {
  this.value = o;
  this.$body.clearChild();
  this.$value = (0, _ACore._)({
    tag: 'span',
    child: {
      text: (o || '') + ''
    }
  });
  this.$body.addChild(this.$value);
};
OMTString.prototype.getRaw = function () {
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      tag: 'span',
      child: {
        text: this["export"]()
      }
    }]
  };
};
var _default = OMTString;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _OMTBaseType = _interopRequireDefault(__webpack_require__(73989));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ACore = __webpack_require__(34093);
var _stringUtils = __webpack_require__(26243);
var _generator = __webpack_require__(18528);
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); }
/***
 * @extends OMTBaseType
 * @constructor
 */
function OMTStruct() {
  var _this = this;
  _OMTBaseType["default"].apply(this, arguments);
  this.children = (this.descriptor.fields || []).map(function (field) {
    return _OMTBaseType["default"].make(_this.tool, _this, field);
  });
  this.$body.addChild(this.children.map(function (child) {
    return child.elt;
  }));
  this.data = null;
}
_OOP["default"].mixClass(OMTStruct, _OMTBaseType["default"]);
OMTStruct.prototype.type = 'struct';
OMTStruct.prototype.assign = function (o) {
  if (o !== null && _typeof(o) === "object") {
    this.elt.removeClass('as-null');
    this.children.forEach(function (child) {
      var name = child.descriptor.name;
      child.assign(o[name]);
    });
  } else {
    this.elt.addClass('as-null');
  }
};
OMTStruct.prototype["export"] = function () {
  return this.children.reduce(function (ac, cr) {
    ac[cr.descriptor.name] = cr["export"]();
    return ac;
  }, {});
};
OMTStruct.prototype.getHash = function () {
  var hash = this.children.map(function (c) {
    return c.getHash();
  }).join('_');
  return (0, _stringUtils.stringHashCode)(hash);
};
OMTStruct.prototype.getRaw = function () {
  return {
    child: [{
      tag: 'span',
      "class": 'as-omt-field-name',
      child: {
        text: (this.descriptor.displayName || this.descriptor.name || "ROOT") + ': '
      }
    }, {
      style: {
        paddingLeft: '25px'
      },
      child: this.children.map(function (child) {
        return child.getRaw();
      })
    }]
  };
};
_OMTBaseType["default"].classes.struct = OMTStruct;
var _default = OMTStruct;
exports["default"] = _default;

/***/ }),

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

"use strict";


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"] = exports.VALUE_NORMAL = exports.VALUE_HIDDEN = void 0;
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _MSelectList = __webpack_require__(14899);
var _DomSignal = _interopRequireDefault(__webpack_require__(47341));
var _SelectListBox = _interopRequireDefault(__webpack_require__(47818));
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _ListSearchMaster = _interopRequireDefault(__webpack_require__(85604));
var _utils = __webpack_require__(84512);
var _DelaySignal = _interopRequireDefault(__webpack_require__(81809));
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 }; }
var VALUE_HIDDEN = -1;
exports.VALUE_HIDDEN = VALUE_HIDDEN;
var VALUE_NORMAL = 1;

/***
 * @extends AElement
 * @constructor
 */
exports.VALUE_NORMAL = VALUE_NORMAL;
function MListModal() {
  this._initDomHook();
  this._initControl();
  this._initScroller();
  this._initProperty();
}
MListModal.tag = "MListModal".toLowerCase();
MListModal.render = function () {
  return (0, _ACore._)({
    extendEvent: ['pressitem', 'pressclose', 'pressout'],
    "class": 'am-list-modal',
    child: [{
      "class": ['am-list-popup-box'],
      child: [{
        "class": 'am-list-popup-header',
        child: [{
          tag: 'searchtextinput'
        }, {
          tag: 'button',
          "class": 'am-list-popup-close-btn',
          child: 'span.mdi.mdi-close'
        }]
      }, {
        "class": 'am-list-popup-list-scroller',
        child: {
          "class": 'am-list-popup-content',
          child: Array(MListModal.prototype.preLoadN).fill('.am-list-popup-list-page.am-selectlist')
        }
      }]
    }]
  });
};
MListModal.prototype.toLoadNextY = 200;
MListModal.prototype.preLoadN = 5;
MListModal.prototype._initDomHook = function () {
  this.estimateSize = {
    width: 0
  };
  this.$attachhook = (0, _ACore._)('attachhook').addTo(this);
  this.$attachhook._isAttached = false;
  this.$attachhook.requestUpdateSize = this.updateSize.bind(this);
  this.$attachhook.on('attached', function () {
    _Dom["default"].addToResizeSystem(this);
    this.requestUpdateSize();
    this._isAttached = true;
  });
  this.domSignal = new _DelaySignal["default"]();
  this.domSignal.on('viewListAt', this.viewListAt.bind(this));
  this.domSignal.on('viewListAtFirstSelected', this.viewListAtFirstSelected.bind(this));
  this.searchMaster = new _ListSearchMaster["default"]();
};
MListModal.prototype.cancelWaiting = function () {
  this.$attachhook.cancelWaiting();
};
MListModal.prototype._initControl = function () {
  this._currentOffset = 0;
  this._startItemIdx = 0;
  this.$closeBtn = (0, _ACore.$)('.am-list-popup-close-btn', this).on('click', this.notifyPressClose.bind(this));
  this.on('click', this.eventHandler.click);
  this.$box = (0, _ACore.$)('.am-list-popup-box', this);
  this.$searchInput = (0, _ACore.$)('searchtextinput', this).on('stoptyping', this.eventHandler.searchModify);
};
MListModal.prototype._initScroller = function () {
  this._estimateHeight = 0;
  this._pageOffsets = Array(this.preLoadN + 1).fill(0);
  this._pageYs = Array(this.preLoadN + 1).fill(0);
  this.$listScroller = (0, _ACore.$)('.am-list-popup-list-scroller', this).on('scroll', this.eventHandler.scroll);
  this.$content = (0, _ACore.$)('.am-list-popup-content', this);
  this.$listPages = (0, _ACore.$$)('.am-list-popup-list-page', this);
};
MListModal.prototype._initProperty = function () {
  this._items = [];
  this._values = [];
  this._valueDict = {};
  this._itemsByValue = {};
  this._preDisplayItems = [];
  this._displayItems = [];
  this._searchCache = {};
  this._displayValue = VALUE_NORMAL;
  this.displayValue = VALUE_NORMAL;
  this.items = [];
};
MListModal.prototype.findItemsByValue = function (value) {
  return this._itemsByValue[(0, _utils.keyStringOf)(value)];
};
MListModal.prototype.updateSize = function () {
  var bound = this.getBoundingClientRect();
  var boxBound = this.$box.getBoundingClientRect();
  var listScrollerBound = this.$listScroller.getBoundingClientRect();
  this.$listScroller.addStyle('max-height', 'calc(' + (bound.height - listScrollerBound.top + boxBound.top) + 'px - var(--modal-margin-bottom) - var(--modal-margin-top))');
};
MListModal.prototype._requireItem = function (pageElt, n) {
  var itemElt;
  while (pageElt.childNodes.length > n) {
    itemElt = pageElt.lastChild;
    itemElt.selfRemove();
    (0, _MSelectList.releaseItem)(itemElt);
  }
  while (pageElt.childNodes.length < n) {
    itemElt = (0, _MSelectList.requireItem)(this);
    pageElt.addChild(itemElt);
  }
};
MListModal.prototype._listToDisplay = function (items) {
  return items;
};

/***
 *
 * @param {Array<{value:String|Number}>} items
 * @return {Array<{value:String|Number}>}
 */
MListModal.prototype._filterValue = function (items) {
  if (this._displayValue === VALUE_NORMAL) return items;
  var dict = this._valueDict;
  return items.filter(function (item) {
    return !dict[item.value + ''];
  });
};
MListModal.prototype._assignItems = function (pageElt, offset) {
  var n = Math.min(this._displayItems.length - offset, pageElt.childNodes.length);
  var itemElt, value;
  for (var i = 0; i < n; ++i) {
    itemElt = pageElt.childNodes[i];
    itemElt.data = this._displayItems[offset + i];
    value = itemElt.value + '';
  }
};
MListModal.prototype._alignPage = function () {
  var pageElt;
  var pageBound;
  for (var i = 0; i < this.$listPages.length; ++i) {
    pageElt = this.$listPages[i];
    pageBound = pageElt.getBoundingClientRect();
    if (i > 0) this.$listPages[i].addStyle('top', this._pageYs[i] + 'px');
    this._pageYs[i + 1] = this._pageYs[i] + pageBound.height;
  }
  this.$content.addStyle('height', this._pageYs[this.preLoadN] + 'px');
};
MListModal.prototype._updateSelectedItem = function () {
  var valueDict = this._valueDict;
  this.$listPages.forEach(function (pageElt) {
    Array.prototype.forEach.call(pageElt.childNodes, function (itemElt) {
      var value = itemElt.value + '';
      if (valueDict[value]) {
        itemElt.selected = true;
      } else {
        itemElt.selected = false;
      }
    });
  });
  if (this._displayValue === VALUE_HIDDEN) this._alignPage();
};
MListModal.prototype.viewListAt = function (offset) {
  if (!this.isDescendantOf(document.body)) {
    this.domSignal.emit('viewListAt', offset);
    return;
  }
  var fontSize = this.$listScroller.getFontSize() || 14;
  offset = Math.max(0, Math.min(offset, this._displayItems.length - 1));
  var screenSize = _Dom["default"].getScreenSize();
  var maxItem = Math.ceil(screenSize.height / (fontSize * 2.25));
  var contentBound = this.$content.getBoundingClientRect();
  this._pageOffsets[0] = Math.max(offset - maxItem, 0);
  for (var i = 1; i <= this.preLoadN; ++i) {
    this._pageOffsets[i] = Math.min(this._pageOffsets[i - 1] + maxItem, this._displayItems.length);
  }
  var sIdx, nItem, pageBound;
  var pageElt;
  for (var pageIndex = 0; pageIndex < this.preLoadN; ++pageIndex) {
    sIdx = this._pageOffsets[pageIndex];
    nItem = this._pageOffsets[pageIndex + 1] - sIdx;
    pageElt = this.$listPages[pageIndex];
    if (pageIndex === 0) {
      this._pageYs[pageIndex] = sIdx / this._displayItems.length * contentBound.height;
    }
    pageElt.addStyle('top', this._pageYs[pageIndex] + 'px');
    this._requireItem(pageElt, nItem);
    this._assignItems(pageElt, sIdx);
    pageBound = pageElt.getBoundingClientRect();
    this._pageYs[pageIndex + 1] = this._pageYs[pageIndex] + pageBound.height;
  }
  if (this._pageOffsets[this.preLoadN] === this._displayItems.length) {
    this.$content.addStyle('height', this._pageYs[this.preLoadN] + 'px');
  } else {
    this.$content.addStyle('height', this._estimateHeight + 'px');
  }
  this._updateSelectedItem();
};
MListModal.prototype.viewListAtFirstSelected = function () {
  if (!this.isDescendantOf(document.body)) {
    this.domSignal.emit('viewListAtFirstSelected');
    return;
  }
  if (this._displayValue == VALUE_HIDDEN) {
    return false;
  } else if (this._values.length > 0) {
    var value = this._values[0];
    var itemHolders = this._itemHolderByValue[value + ''];
    if (itemHolders) {
      this.domSignal.once('scrollIntoSelected', function () {
        var holder = itemHolders[0];
        this.viewListAt(holder.idx);
        var itemElt = (0, _ACore.$)('.as-selected', this.$listScroller);
        if (itemElt) {
          var scrollBound = this.$listScroller.getBoundingClientRect();
          var itemBound = itemElt.getBoundingClientRect();
          this.$listScroller.scrollTop += itemBound.top - scrollBound.top;
        }
      }.bind(this));
      this.domSignal.emit('scrollIntoSelected');
      return true;
    } else return false;
  } else return false;
};
MListModal.prototype.searchItemByText = _SelectListBox["default"].prototype.searchItemByText;
MListModal.prototype.prepareSearch = _SelectListBox["default"].prototype.prepareSearch;
MListModal.prototype.resetSearchState = function () {
  this.$searchInput.value = '';
  this._preDisplayItems = this._listToDisplay(this._items);
  this._displayItems = this._filterValue(this._preDisplayItems);
  this._updateItemIndex();
  this.domSignal.emit('viewListAt', 0);
  this.$listScroller.scrollTop = 0;
};
MListModal.prototype.notifyPressOut = function () {
  this.emit('pressout', {
    target: this,
    type: 'pressout'
  }, this);
};
MListModal.prototype.notifyPressClose = function () {
  this.emit('pressclose', {
    target: this,
    type: 'pressclose'
  }, this);
};
MListModal.prototype._findFirstPageIdx = function () {
  for (var i = 0; i < this.preLoadN; ++i) {
    if (this._pageOffsets[i + 1] - this._pageOffsets[i] > 0) {
      return i;
    }
  }
  return -1;
};
MListModal.prototype._findLastPageIdx = function () {
  for (var i = this.preLoadN - 1; i >= 0; --i) {
    if (this._pageOffsets[i + 1] - this._pageOffsets[i] > 0) {
      return i;
    }
  }
  return -1;
};
MListModal.prototype._updateItemIndex = function () {
  this._itemHolderByValue = this._displayItems.reduce(function (ac, cr, idx) {
    var value = typeof cr === "string" ? cr : cr.value + '';
    ac[value] = ac[value] || [];
    ac[value].push({
      idx: idx,
      item: cr
    });
    return ac;
  }, {});
};
MListModal.property = {};

/***
 *
 * @type {MListModal}
 */
MListModal.property.items = {
  get: function get() {
    return this._items;
  },
  set: function set(items) {
    var _this = this;
    items = items || [];
    if (!Array.isArray(items)) items = []; //no
    items = (0, _utils.copySelectionItemArray)(items);
    this._items = items;
    this._preDisplayItems = this._listToDisplay(this._items);
    this._displayItems = this._filterValue(this._preDisplayItems);
    this._itemsByValue = items.reduce(function reducer(ac, cr) {
      var key = (0, _utils.keyStringOf)(cr.value);
      if (!ac[key]) ac[key] = [];else console.error("Duplicate value", cr);
      ac[key].push(cr);
      if (cr.items && cr.items.reduce) cr.items.reduce(reducer, ac);
      return ac;
    }, {});
    this._updateItemIndex();

    /*****************/
    this.idx2key = [];
    var makeSearchItem = function makeSearchItem(it) {
      var res = {
        value: _this.idx2key.length
      };
      var valueKey;
      res.text = it.text + '';
      if (it.desc) res.text += it.desc;
      valueKey = (0, _utils.keyStringOf)(it.value);
      it.valueKey = valueKey;
      _this.idx2key.push(valueKey);
      if (it.items && it.items.length > 0 && it.items.map) {
        res.items = it.items.map(makeSearchItem);
      }
      return res;
    };
    this.searchingItems = this._items.map(makeSearchItem);
    this.key2idx = this.idx2key.reduce(function (ac, cr, i) {
      ac[cr] = i;
      return ac;
    }, {});
    this.searchMaster.transfer(this.searchingItems);
    /*****************/

    this._searchCache = {};
    var estimateSize = (0, _MSelectList.measureListSize)(this._preDisplayItems);
    if (estimateSize.descWidth > 0) {
      this.$listScroller.addStyle('--desc-width', 100 * (estimateSize.descWidth + 15) / estimateSize.width + '%');
    } else {
      this.$listScroller.removeStyle('--desc-width');
    }
    var estimateHeight = this._displayItems.length * 30 * Math.ceil(estimateSize.width * 1.2 / Math.min(_Dom["default"].getScreenSize().width - 80, 500));
    this._estimateHeight = estimateHeight;
    this.$content.addStyle('height', estimateHeight + 'px');
    this.estimateSize = estimateSize;
    this.domSignal.emit('viewListAt', 0);
  }
};
MListModal.property.values = {
  set: function set(values) {
    values = values || [];
    values = values.slice();
    this._values = values;
    this._valueDict = values.reduce(function (ac, cr) {
      ac[cr + ''] = true;
      ac[(0, _utils.keyStringOf)(cr)] = cr;
      return ac;
    }, {});
    this._displayItems = this._filterValue(this._preDisplayItems);
    this._updateItemIndex();
    //todo
    if (this._pageOffsets[this.preLoadN] > this._pageOffsets[0]) this._updateSelectedItem();
  },
  get: function get() {
    return this._values;
  }
};
MListModal.property.displayValue = {
  set: function set(value) {
    this._displayValue = value;
    this._displayItems = this._filterValue(this._preDisplayItems);
    this._updateItemIndex();
    if (value === VALUE_HIDDEN) {
      this.addClass('am-value-hidden');
    } else {
      this.removeClass('am-value-hidden');
    }
  },
  get: function get() {
    return this._displayValue;
  }
};
MListModal.property.enableSearch = {
  set: function set(value) {
    if (value) this.$box.addClass('am-enable-search');
  },
  get: function get() {
    return this.$box.removeClass('am-enable-search');
  }
};

/***
 *
 * @type {MListModal}
 */
MListModal.eventHandler = {};

/***
 *
 * @param {MouseEvent} event
 */
MListModal.eventHandler.click = function (event) {
  if (event.target === this) this.notifyPressOut();
};
MListModal.eventHandler.searchModify = function () {
  var _this2 = this;
  var text = this.$searchInput.value;
  var searchSession = Math.random() + '';
  this._seachSession = searchSession;
  this.searchItemByText(text).then(function (searchedItems) {
    if (_this2._seachSession !== searchSession) return;
    _this2._preDisplayItems = _this2._listToDisplay(searchedItems);
    _this2._displayItems = _this2._filterValue(_this2._preDisplayItems);
    _this2._updateItemIndex();
    _this2.viewListAt(0);
    _this2.$listScroller.scrollTop = 0;
  });
};
MListModal.eventHandler.scroll = function () {
  var scrollerBound = this.$listScroller.getBoundingClientRect();
  var topIdx = this._findFirstPageIdx();
  var fontSize = this.$listScroller.getFontSize() || 14;
  var screenSize = _Dom["default"].getScreenSize();
  var maxItem = Math.ceil(screenSize.height / (fontSize * 2.25));
  var pageBound;
  var topBound = this.$listPages[topIdx].getBoundingClientRect();
  if (this._pageOffsets[topIdx] > 0) {
    if (topBound.top + this.toLoadNextY > scrollerBound.top) {
      this._pageOffsets.unshift(this._pageOffsets.pop());
      this._pageYs.unshift(this._pageYs.pop());
      this.$listPages.unshift(this.$listPages.pop());
      this._pageOffsets[topIdx] = Math.max(0, this._pageOffsets[topIdx + 1] - maxItem);
      this._requireItem(this.$listPages[topIdx], this._pageOffsets[topIdx + 1] - this._pageOffsets[topIdx]);
      this._assignItems(this.$listPages[topIdx], this._pageOffsets[topIdx]);
      pageBound = this.$listPages[topIdx].getBoundingClientRect();
      this._pageYs[topIdx] = this._pageYs[topIdx + 1] - pageBound.height;
      this.$listPages[topIdx].addStyle('top', this._pageYs[topIdx] + 'px');
      this._updateSelectedItem();
      if (this._pageOffsets[topIdx] === 0) {
        this.$listPages[0].addStyle('top', '0');
        this._pageYs[0] = 0;
        this._alignPage();
        this.$listScroller.scrollTop = 0;
      }
    }
  } else {
    if (topBound.top > scrollerBound.top) {
      this.$listScroller.scrollTop += topBound.top - scrollerBound.top;
    }
  }
  var botIdx = this._findLastPageIdx();
  var botBound;
  botBound = this.$listPages[botIdx].getBoundingClientRect();
  if (this._pageOffsets[botIdx + 1] < this._displayItems.length) {
    if (botBound.bottom - this.toLoadNextY < scrollerBound.bottom) {
      this._pageOffsets.push(this._pageOffsets.shift());
      this._pageYs.push(this._pageYs.shift());
      this.$listPages.push(this.$listPages.shift());
      this._pageOffsets[botIdx + 1] = Math.min(this._displayItems.length, this._pageOffsets[botIdx] + maxItem);
      this.$listPages[botIdx].addStyle('top', this._pageYs[botIdx] + 'px');
      this._requireItem(this.$listPages[botIdx], this._pageOffsets[botIdx + 1] - this._pageOffsets[botIdx]);
      this._assignItems(this.$listPages[botIdx], this._pageOffsets[botIdx]);
      pageBound = this.$listPages[botIdx].getBoundingClientRect();
      this._pageYs[botIdx + 1] = this._pageYs[botIdx] + pageBound.height;
      this._updateSelectedItem();
      if (this._pageOffsets[botIdx + 1] < this._displayItems.length) {
        this.$content.addStyle('height', this._estimateHeight + 'px');
      } else {
        this.$content.addStyle('height', this._pageYs[botIdx + 1] + 'px');
      }
    }
  }
};
var _default = MListModal;
exports["default"] = _default;
_ACore["default"].install('mlistmodal', MListModal);
_Dom["default"].ShareInstance.install('mlistmodal', MListModal);

/***/ }),

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

"use strict";


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.makeItem = makeItem;
exports.measureListSize = measureListSize;
exports.releaseItem = releaseItem;
exports.requireItem = requireItem;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _MSelectListItem = _interopRequireDefault(__webpack_require__(82799));
var _SelectList = _interopRequireWildcard(__webpack_require__(884));
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 measureListSize(items) {
  var descWidth = (0, _SelectList.measureMaxDescriptionWidth)(items);
  var textWidth = (0, _SelectList.measureMaxTextWidth)(items);
  var width = descWidth + 20 + textWidth + 12 + 15; //padding, margin
  return {
    width: width,
    descWidth: descWidth,
    textWidth: textWidth
  };
}
var itemPool = [];
function onClickItem(event) {
  var thisSL = this.$parent;
  if (thisSL) {
    thisSL.value = this.value;
    thisSL.emit('pressitem', {
      type: 'pressitem',
      target: thisSL,
      itemElt: this,
      value: this.value,
      data: this.data
    });
  }
}

/**
 * @returns {MSelectListItem}
 */
function makeItem() {
  return (0, _ACore._)({
    tag: _MSelectListItem["default"],
    on: {
      click: onClickItem
    }
  });
}
function requireItem($parent) {
  var item;
  if (itemPool.length > 0) {
    item = itemPool.pop();
  } else {
    item = makeItem();
  }
  item.$parent = $parent;
  return item;
}
function releaseItem(item) {
  item.$parent = null;
  item.attr('class', 'am-selectlist-item');
  item.selected = false;
  itemPool.push(item);
}

/*global absol*/
/***
 * @extends AElement
 * @constructor
 */
function MSelectList() {
  var res = this;
  this.defineEvent(['pressitem', 'cancelasync', 'valuevisibilityasync', 'finishasync', 'sizechangeasync']);
  this.$attachhook = (0, _ACore._)('attachhook').addTo(this);
  this.sync = new Promise(function (rs) {
    res.$attachhook.once('error', rs);
  });
  this.$items = [];
  this.$itemByValue = {}; //quick find element
  this.$selectedItem = undefined;
  this._itemSession = 0;
  this._finished = true;
  this._resourceReady = true;
}
;
MSelectList.tag = "MSelectList".toLowerCase();
MSelectList.render = function () {
  return (0, _ACore._)('.am-selectlist');
};

//todo: update this feature to SelectList
/***
 *
 * @param value
 * @return {MSelectListItem|null}
 */
MSelectList.prototype.getItemElementByValue = function (value) {
  return this.$itemByValue[value + ''] || null;
};
MSelectList.prototype._updateSelectedItem = function () {
  var newSelectedItemElt = this.$itemByValue[this._selectValue + ''];
  if (newSelectedItemElt !== this.$selectedItem) {
    if (this.$selectedItem) {
      this.$selectedItem.removeClass('selected');
    }
    if (newSelectedItemElt) {
      newSelectedItemElt.addClass('selected');
      this.$selectedItem = newSelectedItemElt;
    }
  }
};
MSelectList.prototype._requireItems = function (itemCout) {
  var item;
  while (this.$items.length < itemCout) {
    item = requireItem(this);
    this.$items.push(item);
    this.addChild(item);
  }
  while (this.$items.length > itemCout) {
    item = this.$items.pop();
    item.remove();
    releaseItem(item);
  }
};
MSelectList.prototype._assignItems = function (from, to) {
  var foundSelected = false;
  var itemElt;
  var item;
  for (var i = from; i < to; ++i) {
    itemElt = this.$items[i];
    item = this._items[i];
    itemElt.data = item;
    itemElt.__index__ = i;
    if (this.$itemByValue[item.value + '']) {
      console.warn('Value  ' + this.$items[i].value + ' is duplicated!');
    } else {
      this.$itemByValue[item.value + ''] = itemElt;
      if (this._selectValue == item.value) {
        itemElt.selected = true;
        this.$selectedItem = itemElt;
        foundSelected = true;
      } else {
        itemElt.selected = false;
      }
    }
  }
  return foundSelected;
};
MSelectList.prototype.setItemsAsync = function (items) {
  //start process
  this._finished = false;
  var session = Math.floor(Math.random() * 1000000);
  this._itemSession = session;
  this._items = items || [];
  this.$itemByValue = {};
  this.measuredSize = measureListSize(items);
  var thisSL = this;
  var i = 0;
  var limit = 20;
  function tick() {
    if (thisSL._itemSession != session) {
      thisSL.emit('cancelasync', {
        session: session,
        type: 'cancelasync'
      }, this);
      return;
    }
    if (i >= items.length) {
      thisSL._updateSelectedItem();
      thisSL._finished = false;
      thisSL.emit('finishasync', {
        session: session,
        type: 'finishasync'
      }, this);
      return;
    }
    var n = Math.min(items.length - i, limit);
    var itemCout = i + n;
    thisSL._requireItems(itemCout);
    i = itemCout;
    var foundSelected = thisSL._assignItems(itemCout - n, itemCout);
    if (foundSelected) {
      thisSL.emit('valuevisibilityasync', {
        session: session,
        type: 'valuevisibilityasync',
        itemElt: thisSL.$items[i]
      }, thisSL);
    }
    thisSL.emit('sizechangeasync', {
      session: session,
      type: 'sizechangeasync'
    }, this);
    setTimeout(tick, 2);
  }
  setTimeout(tick, 2);
  return Object.assign({
    session: session
  }, this.measuredSize);
};
MSelectList.prototype.setItems = function (items) {
  this._finished = false;
  var session = Math.floor(Math.random() * 1000000);
  this._itemSession = session;
  this._items = items || [];
  this.$itemByValue = {};
  this.measuredSize = measureListSize(items);
  var itemCount = items.length;
  this._requireItems(itemCount);
  this._assignItems(0, itemCount);
  this._finished = true;
  return Object.assign({
    session: this._itemSession
  }, this.measuredSize);
};
MSelectList.property = Object.assign({}, _SelectList["default"].property);
MSelectList.prototype.init = _SelectList["default"].prototype.init;
MSelectList.eventHandler = {};
var _default = MSelectList;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _SelectListItem = _interopRequireDefault(__webpack_require__(57040));
var _ACore = __webpack_require__(34093);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @extends {AElement}
 * @constructor
 */
function MSelectListItem() {
  this.$textCtn = (0, _ACore.$)('.am-selectlist-item-text-ctn', this);
  this.$text = (0, _ACore.$)('span.am-selectlist-item-text', this);
  this.$textValue = this.$text.childNodes[0];
  this.$descCtn = (0, _ACore.$)('.am-selectlist-item-desc-ctn', this);
  this.$desc = (0, _ACore.$)('span.am-selectlist-item-desc', this.$descCtn);
  this.$descValue = this.$desc.childNodes[0];
  this._extendClasses = [];
  this._extendStyle = {};
  this._data = "";
  this._level = 0;
}
MSelectListItem.tag = 'MSelectListItem'.toLowerCase();
MSelectListItem.render = function () {
  return (0, _ACore._)({
    "class": 'am-selectlist-item',
    child: [{
      "class": 'am-selectlist-item-text-ctn',
      child: {
        tag: 'span',
        "class": 'am-selectlist-item-text',
        child: {
          text: ''
        }
      }
    }, {
      "class": 'am-selectlist-item-desc-ctn',
      child: {
        tag: 'span',
        "class": 'am-selectlist-item-desc',
        child: {
          text: ''
        }
      }
    }]
  });
};
MSelectListItem.property = Object.assign({}, _SelectListItem["default"].property);
MSelectListItem.property.icon = {
  set: function set(icon) {
    if (this.$icon) {
      this.$icon.remove();
      this.$icon = null;
    }
    this._icon = icon || null;
    if (this._icon) {
      this.$icon = (0, _ACore._)(this._icon).addClass('am-selectlist-item-icon');
      this.$textCtn.addChildAfter(this.$icon, null);
    }
  },
  get: function get() {
    return this._icon;
  }
};
var _default = MSelectListItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _SelectListItem = _interopRequireDefault(__webpack_require__(57040));
var _ACore = __webpack_require__(34093);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function SLBItemHolder(parent, data) {
  this.data = data;
  this.parent = parent;
  this._elt = null;
}
Object.defineProperty(SLBItemHolder.prototype, 'elt', {
  get: function get() {
    if (!this._elt) {
      this._elt = (0, _ACore._)({
        tag: _SelectListItem["default"].tag,
        props: {
          data: this.data
        }
      });
    }
    return this._elt;
  }
});
var _default = SLBItemHolder;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _ListDictionary = _interopRequireDefault(__webpack_require__(50218));
var _utils = __webpack_require__(84512);
var _SLBModes = __webpack_require__(15867);
var _search = __webpack_require__(67858);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends ListDictionary
 * @param {SelectListBox} elt
 * @constructor
 */
function SLBItemListController(elt) {
  this.elt = elt;
  this.items = [];
  this.elt.$scroller.on('scroll', this.updateListView.bind(this));
}
_OOP["default"].mixClass(SLBItemListController, _ListDictionary["default"]);
SLBItemListController.itemHeight = 20;
SLBItemListController.preLoadN = 3;
SLBItemListController.prototype.toLoadNextY = 200;
SLBItemListController.prototype.getItems = function () {
  return (0, _utils.copySelectionItemArray)(this.items);
};
SLBItemListController.prototype.setItems = function (items) {
  this.items = (0, _utils.copySelectionItemArray)(items || []);
  var mode = new _SLBModes.SLBModeNormal(this.elt, this.items);
  this.elt.modes.normal = mode;
  this.elt.mode = mode;
  mode.onStart();
};
SLBItemListController.prototype.updateListView = function () {
  this.elt.mode.updateListView();
};
var _default = SLBItemListController;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.SLBModeNormal = SLBModeNormal;
exports.SLBModeSearch = SLBModeSearch;
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _SLBItemHolder = _interopRequireDefault(__webpack_require__(2925));
var _ACore = __webpack_require__(34093);
var _Dom = __webpack_require__(64821);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function SLBModeNormal(elt, items) {
  var _this = this;
  this.elt = elt;
  this.$scroller = this.elt.$scroller;
  this.$content = this.elt.$content;
  this.items = items;
  this.children = items.map(function (item) {
    return new _SLBItemHolder["default"](_this, item);
  });
  this.children.forEach(function (child, i) {
    child.idx = i;
    // child.elt;
  });

  this.$pages = [];
}
SLBModeNormal.prototype._getPageElt = function (idx) {
  if (this.$pages[idx]) return this.$pages[idx];
  while (this.$pages.length <= idx) {
    this.$pages.push(undefined);
  }
  var children = this.children.slice(idx * 50, idx * 50 + 50);
  var pageElt = (0, _ACore._)({
    "class": 'as-select-list-box-page',
    style: {
      top: 20 * idx * 50 + 'px'
    },
    child: children.map(function (child) {
      return child.elt;
    })
  });
  this.$pages[idx] = pageElt;
  return pageElt;
};
SLBModeNormal.prototype._getPageCount = function () {
  return Math.ceil(this.items.length / 50);
};
SLBModeNormal.prototype.onStart = function () {
  this.elt.$content.addStyle('height', this.items.length * 20 + 'px');
  // var n = this._getPageCount();
  // for (var i =0; i < n; ++i){
  //     this.$content.addChild(this._getPageElt(i));
  // }
  this.updateListView();
};
SLBModeNormal.prototype.onStop = function () {};
SLBModeNormal.prototype.updateListView = function () {
  var _this2 = this;
  var maxHeight = Math.max(4096, (0, _Dom.getScreenSize)().height);
  var startIdx = Math.floor(this.$scroller.scrollTop / 1000) - 1;
  var endIdx = startIdx + Math.ceil(maxHeight / 1000) + 1;
  startIdx = Math.max(0, startIdx);
  endIdx = Math.min(this._getPageCount(), endIdx);
  var needViewPages = Array(endIdx - startIdx).fill(null).map(function (u, i) {
    return _this2._getPageElt(startIdx + i);
  });
  Array.prototype.forEach.call(this.$content.childNodes, function (elt) {
    if (needViewPages.indexOf(elt) < 0) {
      elt.remove();
    }
  });
  needViewPages.forEach(function (elt) {
    if (!elt.parentElement) {
      _this2.$content.addChild(elt);
    }
  });
};
function SLBModeSearch(elt, items) {
  this.items = items;
}
_OOP["default"].mixClass(SLBModeSearch, SLBModeNormal);
// SLBModeSearch.prototype.onStart

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _SelectListBoxPropHandlers = _interopRequireDefault(__webpack_require__(97923));
var _SLBItemListController = _interopRequireDefault(__webpack_require__(16997));
var _SLBModes = __webpack_require__(15867);
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; }
/***
 * @extends AElement
 * @constructor
 */
function SelectListBox() {
  this.$box = this;
  this.$content = $('.as-select-list-box-content', this);
  this.$scroller = $('.as-select-list-box-scroller', this);
  this.itemListCtrl = new _SLBItemListController["default"](this);
  this.modes = {
    normal: new _SLBModes.SLBModeNormal(this, []),
    search: null
  };
  this.mode = this.modes.normal;
}
SelectListBox.tag = 'selectlistbox_v2'.toLowerCase();
SelectListBox.render = function () {
  return (0, _ACore._)({
    tag: 'follower',
    attr: {
      tabindex: 0
    },
    "class": 'as-select-list-box',
    extendEvent: ['pressitem'],
    child: [{
      "class": 'as-select-list-box-search-ctn',
      child: 'searchtextinput'
    }, {
      "class": ['as-bscroller', 'as-select-list-box-scroller'],
      child: [{
        "class": ['as-select-list-box-content'],
        child: Array(SelectListBox.prototype.preLoadN).fill('.as-select-list-box-page')
      }]
    }, 'attachhook.as-dom-signal'],
    props: {
      anchor: [1, 6, 2, 5]
    }
  });
};
SelectListBox.property = _SelectListBoxPropHandlers["default"];
_ACore["default"].install('selectlistbox_v2', SelectListBox);
var _default = SelectListBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var SelectListBoxPropHandlers = {};
SelectListBoxPropHandlers.enableSearch = {
  /***
   * @this SelectListBox
   * @param {boolean} value
   */
  set: function set(value) {
    if (value) this.addClass('as-enable-search');else this.removeClass('as-enable-search');
  },
  /***
   * @this SelectListBox
   */
  get: function get() {
    return this.hasClass('as-enable-search');
  }
};
SelectListBoxPropHandlers.items = {
  /***
   * @this SelectListBox
   * @param {{}} items
   */
  set: function set(items) {
    this.itemListCtrl.setItems(items);
  },
  get: function get() {
    return this.itemListCtrl.getItems();
  }
};
var _default = SelectListBoxPropHandlers;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _SelectMenu = _interopRequireDefault(__webpack_require__(20834));
var _MListModal = _interopRequireDefault(__webpack_require__(11032));
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
__webpack_require__(80571);
var _MSelectListItem = _interopRequireDefault(__webpack_require__(82799));
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 AElement
 * @constructor
 */
function MSelectMenu() {
  var _this = this;
  this._value = undefined;
  this._isFocus = false;
  this._itemsByValue = {};
  this.$holderItem = (0, _ACore.$)('.am-selectmenu-holder-item', this);

  /***
   * @type {MListModal}
   */
  this.$selectlist = (0, _ACore._)({
    tag: _MListModal["default"]
  });
  this.$selectlist.cancelWaiting();
  var checkView = function checkView() {
    if (_this.isDescendantOf(document.body)) {
      setTimeout(checkView, 10000);
    } else {
      if (_this.$selectlist.searchMaster) _this.$selectlist.searchMaster.destroy();
    }
  };
  setTimeout(checkView, 30000);
  this.$selectlist.on('pressitem', this.eventHandler.pressItem, true).on('pressout', this.eventHandler.pressOut).on('pressclose', this.eventHandler.pressOut);
  this.on('click', this.eventHandler.click, true);
  this.$attachhook = (0, _ACore.$)('attachhook', this).on('error', this.eventHandler.attached);
  /**
   * @name value
   * @memberof MSelectMenu#
   */
  /**
   * @name items
   * @memberof MSelectMenu#
   */
}

MSelectMenu.tag = 'mselectmenu';
MSelectMenu.render = function () {
  return (0, _ACore._)({
    "class": ['absol-selectmenu', 'am-selectmenu', 'as-strict-value'],
    extendEvent: ['change', 'minwidthchange'],
    attr: {
      tabindex: '1'
    },
    child: ['.am-selectmenu-holder-item', {
      tag: 'button',
      "class": 'absol-selectmenu-btn',
      child: ['dropdown-ico']
    }, 'attachhook']
  });
};
MSelectMenu.prototype.findItemsByValue = function (value) {
  return this.$selectlist.findItemsByValue(value);
};
MSelectMenu.prototype.updateItem = function () {
  this.$holderItem.clearChild();
  var selected = this.findItemsByValue(this.value);
  if (selected) {
    var elt = (0, _ACore._)({
      tag: _MSelectListItem["default"],
      props: {
        data: selected[0]
      }
    }).addTo(this.$holderItem);
  }
};
MSelectMenu.prototype.notifyChange = function (data) {
  this.emit('change', Object.assign({}, data, {
    type: 'change',
    target: this
  }), this);
};
MSelectMenu.prototype._dictByValue = _SelectMenu["default"].prototype._dictByValue;
MSelectMenu.prototype.getRecommendWith = function () {
  var res = 12 + this.$selectlist.estimateSize.textWidth + 30;
  if (this.$selectlist.estimateSize.descWidth) res += this.$selectlist.estimateSize.descWidth + 20;
  return res;
};
MSelectMenu.prototype.init = _SelectMenu["default"].prototype.init;
MSelectMenu.property = {};
MSelectMenu.property.items = {
  set: function set(value) {
    this._itemIdxByValue = null;
    /**
     * verity data
     */
    if (value) {
      value.forEach(function (it) {
        if (it && it.text) {
          it.text = it.text + '';
        }
      });
    }
    this._items = value;
    this._itemsByValue = this._dictByValue(value);
    this.$selectlist.items = value;
    if (!this._itemsByValue[this.value] && value.length > 0 && false) {} else this.updateItem();
    if (this.style.width === 'auto' || !this.style.width) {
      this.addStyle('--recommend-width', this.getRecommendWith() / 14 + 'em');
    }
  },
  get: function get() {
    return this._items || [];
  }
};
MSelectMenu.property.value = {
  set: function set(value) {
    this._value = value;
    this.$selectlist.values = [value];
    this.updateItem();
  },
  get: function get() {
    if (!this.strictValue) return this._value;
    var selected = this.findItemsByValue(this._value);
    if (selected) {
      return selected[0].value;
    } else {
      if (this._items && this._items.length > 0) {
        return this._items[0].value;
      }
    }
    return this._value;
  }
};
MSelectMenu.property.strictValue = {
  set: function set(value) {
    if (value) {
      this.addClass('as-strict-value');
    } else {
      this.removeClass('as-strict-value');
    }
  },
  get: function get() {
    return this.hasClass('as-strict-value');
  }
};
MSelectMenu.property.enableSearch = {
  set: function set(value) {
    this.$selectlist.enableSearch = !!value;
  },
  get: function get() {
    return this.$selectlist.enableSearch;
  }
};
MSelectMenu.property.isFocus = {
  set: function set(value) {
    var thisSM = this;
    value = !!value;
    if (value === this._isFocus) return;
    if (this.readOnly || this.disabled) return;
    this._isFocus = value;
    if (value) {
      this.$selectlist.addTo(document.body);
      if (this.$selectlist.$attachhook) {
        this.$selectlist.$attachhook.emit('attached');
      }
      thisSM.$selectlist.viewListAt(0);
      thisSM.$selectlist.viewListAtFirstSelected();
    } else {
      this.$selectlist.selfRemove();
      setTimeout(function () {
        thisSM.$selectlist.resetSearchState();
      }, 100);
    }
  },
  get: function get() {
    return this._isFocus;
  }
};
MSelectMenu.property.selectedIndex = _SelectMenu["default"].property.selectedIndex;
MSelectMenu.property.disabled = _SelectMenu["default"].property.disabled;
MSelectMenu.property.hidden = _SelectMenu["default"].property.hidden;

/**
 * @type {MSelectMenu}
 */
MSelectMenu.eventHandler = {};
MSelectMenu.eventHandler.attached = function () {
  if (this.style.width === 'auto' || !this.style.width) {
    this.addStyle('--recommend-width', this.getRecommendWith() / 14 + 'em');
  }
};
MSelectMenu.eventHandler.click = function (event) {
  this.isFocus = !this.isFocus;
};
MSelectMenu.eventHandler.pressOut = function (event) {
  this.isFocus = false;
};
MSelectMenu.eventHandler.pressItem = function (event) {
  var newValue = event.value;
  if (newValue !== this._value) {
    var lastValue = this._value;
    this._value = newValue;
    this.$selectlist.values = [newValue];
    this.updateItem();
    var changeEvent = Object.assign({}, event, {
      lastValue: lastValue
    });
    setTimeout(function () {
      this.notifyChange(changeEvent);
    }.bind(this), 1);
  }
  setTimeout(function () {
    this.isFocus = false;
  }.bind(this), 100);
};
_ACore["default"].install(MSelectMenu);
var _default = MSelectMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _SelectTreeLeafItem = _interopRequireDefault(__webpack_require__(95237));
var _MCheckTreeBox = __webpack_require__(82822);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function MSTBItemHolder(boxElt, parent, data) {
  var _this = this;
  this.ref = null;
  this.$list = boxElt.$list;
  this.level = parent.level + 1;
  this.status = 'none';
  this.boxElt = boxElt;
  this.parent = parent;
  this.data = data;
  this._elt = null;
  this.hasDesc = !!data.desc;
  this.hasIcon = !!data.icon;
  this.selected = false;
  if (data.items && data.items.length > 0) {
    this.children = data.items.map(function (item) {
      return new MSTBItemHolder(boxElt, _this, item);
    });
    this.hasDesc = this.hasDesc || this.children.some(function (child) {
      return child.hasDesc;
    });
    this.hasIcon = this.hasIcon || this.children.some(function (child) {
      return child.hasIcon;
    });
    this.status = 'close';
  }
}
MSTBItemHolder.prototype.ev_statusChange = _MCheckTreeBox.MCTBItemHolder.prototype.ev_statusChange;
MSTBItemHolder.prototype.getViewElements = _MCheckTreeBox.MCTBItemHolder.prototype.getViewElements;
MSTBItemHolder.prototype.select = function (flag) {
  this.selected = flag;
  if (this._elt) {
    this._elt.selected = flag;
  }
};
MSTBItemHolder.prototype.ev_click = function (event) {
  if (this.ref) {
    this.ref.ev_click(event);
  } else {
    this.boxElt.modes.normal.setValue(this.data.value);
    if (this.boxElt.mode !== this.boxElt.modes.normal) {
      this.boxElt.mode.updateSelectedFromRef();
    }
    this.boxElt.notifyPressItem({
      item: this.data
    });
  }
};
Object.defineProperty(MSTBItemHolder.prototype, 'elt', {
  get: function get() {
    if (!this._elt) {
      this._elt = (0, _ACore._)({
        tag: _SelectTreeLeafItem["default"],
        props: {
          data: this.data,
          level: this.level,
          status: this.status,
          selected: this.selected
        },
        on: {
          statuschange: this.ev_statusChange.bind(this),
          click: this.ev_click.bind(this)
        }
      });
    }
    return this._elt;
  }
});
var _default = MSTBItemHolder;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _utils = __webpack_require__(84512);
var _STLBModes = __webpack_require__(28810);
var _search = _interopRequireWildcard(__webpack_require__(67858));
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 MSTLBItemListController(elt) {
  this.elt = elt;
  this.items = [];
  this._searchCache = {};
}
MSTLBItemListController.prototype.setItems = function (items) {
  if (!items || !items.forEach || !items.map) items = [];
  this.items = (0, _utils.copySelectionItemArray)(items, {
    removeNoView: true
  });
  this.update();
};
MSTLBItemListController.prototype.update = function () {
  var mode = new _STLBModes.STLBModeNormal(this.elt, this.items);
  this.elt.modes.normal = mode;
  this.elt.mode = mode;
  if (mode.hasDesc) {
    this.elt.$list.addClass('as-has-desc');
  } else {
    this.elt.$list.removeClass('as-has-list');
  }
  if (mode.hasIcon) {
    this.elt.$list.addClass('as-has-icon');
  } else {
    this.elt.$list.removeClass('as-has-icon');
  }
  this.elt.mode = mode;
  mode.onStart();
  this._searchItems = (0, _search.prepareSearchForList)((0, _utils.copySelectionItemArray)(this.items));
  this._searchCache = {};
};
MSTLBItemListController.prototype.getItems = function () {
  return (0, _utils.copySelectionItemArray)(this.items);
};
MSTLBItemListController.prototype.makeSearch = function (query) {
  if (this._searchCache[query]) return this._searchCache[query].resetAndGet();
  var searchItem = (0, _search["default"])({
    text: query
  });
  var minScore = Infinity;
  var maxScore = -Infinity;
  var scoredHolders = this._searchItems.map(function visit(item) {
    var holder = {
      item: item,
      score: (0, _search.calcItemMatchScore)(searchItem, item),
      childMaxScore: -Infinity
    };
    minScore = Math.min(minScore, holder.score);
    maxScore = Math.max(maxScore, holder.score);
    if (item.items && item.items.length > 0) {
      holder.children = item.items.map(visit);
      holder.childMaxScore = holder.children.reduce(function (ac, cr) {
        return Math.max(ac, cr.score, cr.childMaxScore);
      }, 0);
    }
    return holder;
  });
  var threshHold = maxScore - (maxScore - minScore) / 3;
  var result = scoredHolders.reduce(function filterVisit(ac, cr) {
    var subItems;
    if (Math.max(cr.score, cr.childMaxScore) >= threshHold) {
      ac.items.push(cr.item);
      if (cr.children && cr.childMaxScore >= cr.score) {
        ac.status[(0, _utils.keyStringOf)(cr.item.value)] = 'open';
        subItems = cr.children.reduce(filterVisit, {
          items: [],
          status: ac.status
        }).items;
        cr.item.items = subItems;
      } else {
        if (cr.children && cr.children.length > 0) {
          ac.status[(0, _utils.keyStringOf)(cr.item.value)] = 'open';
        }
      }
    }
    return ac;
  }, {
    items: [],
    status: {}
  });
  var normalMode = this.elt.modes.normal;
  result.mode = new _STLBModes.STLBModeSearch(this.elt, result.items);
  result.resetAndGet = function () {
    this.mode.children && this.mode.children.forEach(function resetVisit(holder) {
      var key = (0, _utils.keyStringOf)(holder.data.value);
      holder.ref = normalMode.getHolderByValue(holder.data.value);
      if (holder.status === 'open' && result.status[key] !== 'open') {
        holder.status = 'close';
        if (holder._elt) {
          holder._elt.status = 'close';
        }
      } else if (holder.status === 'close' && result.status[key] === 'open') {
        holder.status = 'open';
        if (holder._elt) {
          holder._elt.status = 'open';
        }
      }
      if (holder.children) holder.children.forEach(resetVisit);
    });
    return this.mode;
  };
  this._searchCache[query] = result;
  return result.resetAndGet();
};
var _default = MSTLBItemListController;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _Searcher = _interopRequireDefault(__webpack_require__(47106));
__webpack_require__(97535);
var _MSTLBItemListController = _interopRequireDefault(__webpack_require__(24063));
var _STLBModes = __webpack_require__(28810);
var _STLBPropsHandlers = _interopRequireDefault(__webpack_require__(52256));
var _MCheckTreeBox = _interopRequireDefault(__webpack_require__(82822));
var _EventEmitter = __webpack_require__(46833);
var _SelectTreeLeafBox = _interopRequireDefault(__webpack_require__(79442));
var _utils = __webpack_require__(84512);
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; }
/****
 * @extends AElement
 * @constructor
 */
function MSelectTreeLeafBox() {
  this.estimateSize = {
    width: 0,
    height: 0
  };
  this.$box = (0, _ACore.$)('.am-dropdown-box', this);
  this.$list = (0, _ACore.$)('.am-select-tree-leaf-box-list', this);
  this.itemListCtrl = new _MSTLBItemListController["default"](this);
  this.$searchInput = (0, _ACore.$)(_Searcher["default"].tag, this).on('stoptyping', this.eventHandler.searchTextInputModify);
  this.$boxCloseBtn = (0, _ACore.$)('.am-dropdown-box-close-btn', this);
  this.on('click', function (event) {
    if (event.target === this || (0, _EventEmitter.hitElement)(this.$boxCloseBtn, event)) {
      this.emit('close', {
        type: 'close',
        target: this
      }, this);
    }
  }.bind(this));
  this.modes = {
    normal: new _STLBModes.STLBModeNormal(this, []),
    search: null
  };
  this.mode = this.modes.normal;
  this.strictValue = true;

  /**
   * @name items
   * @memberof MSelectTreeLeafBox#
   * @type {Array}
   */

  /**
   * @name value
   * @memberof MSelectTreeLeafBox#
   */

  /**
   * @name strictMode
   * @type {boolean}
   * @memberof MSelectTreeLeafBox#
   */

  /**
   * @name selectedItem
   * @memberof MSelectTreeLeafBox#
   */
}

MSelectTreeLeafBox.tag = 'MSelectTreeLeafBox'.toString();
MSelectTreeLeafBox.render = function () {
  return (0, _ACore._)({
    extendEvent: ['pressitem', 'close'],
    "class": ['am-modal', 'am-dropdown-box-modal'],
    child: {
      "class": ['am-select-tree-leaf-box', 'am-dropdown-box', 'as-dropdown-box-common-style'],
      child: [{
        "class": 'am-dropdown-box-header',
        child: [{
          tag: _Searcher["default"].tag
        }, {
          tag: 'button',
          "class": 'am-dropdown-box-close-btn',
          child: 'span.mdi.mdi-close'
        }]
      }, {
        "class": ['am-dropdown-box-body', 'am-select-tree-leaf-box-body'],
        child: {
          "class": 'am-select-tree-leaf-box-list'
        }
      }]
    }
  });
};
MSelectTreeLeafBox.prototype._calcEstimateSize = _SelectTreeLeafBox["default"].prototype._calcEstimateSize;
MSelectTreeLeafBox.prototype._estimateItemWidth = function (item, level) {
  var width = 12; //padding
  width += 12 * level;
  width += 14.7 + 5; //toggle icon
  // if (item.icon) width += 21;//icon
  width += 7 + (0, _utils.estimateWidth14)(item.text) + 5 + 7; //margin-text
  if (item.desc) width += 6 + (0, _utils.estimateWidth14)(item.desc) * 0.85;
  return width;
};
MSelectTreeLeafBox.prototype._findFirstLeaf = _SelectTreeLeafBox["default"].prototype._findFirstLeaf;
MSelectTreeLeafBox.prototype.viewToSelected = function () {
  this.modes.normal.viewToSelected();
};
MSelectTreeLeafBox.prototype.notifyPressItem = function (eventData) {
  delete this.pendingValue;
  this.emit('pressitem', Object.assign({
    type: 'pressitem',
    target: this
  }, eventData), this);
};
MSelectTreeLeafBox.prototype.getItemByValue = function (value) {
  return this.modes.normal.getItemByValue(value);
};
MSelectTreeLeafBox.prototype.resetSearchState = _MCheckTreeBox["default"].prototype.resetSearchState;
MSelectTreeLeafBox.property = _STLBPropsHandlers["default"];
MSelectTreeLeafBox.property.items = {
  set: function set(items) {
    var curValue;
    var selected = true;
    if ('pendingValue' in this) {
      curValue = this.pendingValue;
    } else {
      try {
        curValue = this.modes.normal.getValue(this.strictValue);
      } catch (err) {
        selected = false;
      }
    }
    this.estimateSize = this._calcEstimateSize(items);
    this._items = items; //todo: check usage
    this.itemListCtrl.setItems(items);
    if (selected || this.strictValue) this.modes.normal.setValue(curValue, this.strictValue);
    if (this.mode !== this.modes.normal) {
      this.mode.updateSelectedFromRef();
    }
  },
  get: function get() {
    return this.itemListCtrl.getItems();
  }
};
MSelectTreeLeafBox.property.value = {
  /***
   * @this MSelectTreeLeafBox
   * @param value
   */
  set: function set(value) {
    this.pendingValue = value;
    this._value = value;
    this.modes.normal.setValue(this.pendingValue, this.strictValue);
  },
  get: function get() {
    if ('pendingValue' in this) {
      return this.pendingValue;
    } else {
      try {
        return this.modes.normal.getValue(this.strictValue);
      } catch (err) {
        return undefined;
      }
    }
  }
};
MSelectTreeLeafBox.property.selectedItem = {
  get: function get() {
    return this.modes.normal.getItemByValue(this.value);
  }
};
MSelectTreeLeafBox.property.strictValue = {
  set: function set(value) {
    if (value) {
      this.$box.addClass('as-strict-value');
    } else {
      this.$box.removeClass('as-strict-value');
    }
    this.modes.normal.setValue(this.pendingValue, this.strictValue);
    if (this.mode !== this.modes.normal) {
      this.mode.updateSelectedFromRef();
    }
  },
  get: function get() {
    return this.$box.hasClass('as-strict-value');
  }
};
MSelectTreeLeafBox.eventHandler = {};
MSelectTreeLeafBox.eventHandler.searchTextInputModify = _MCheckTreeBox["default"].eventHandler.searchTextInputModify;
_ACore["default"].install(MSelectTreeLeafBox);
var _default = MSelectTreeLeafBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.STLBModeNormal = STLBModeNormal;
exports.STLBModeSearch = STLBModeSearch;
var _MSTBItemHolder = _interopRequireDefault(__webpack_require__(94289));
var _utils = __webpack_require__(84512);
var _CTBModes = __webpack_require__(48819);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function STLBModeNormal(elt, items) {
  var _this = this;
  this.level = -1;
  this.elt = elt;
  this.$list = elt.$list;
  this.children = items.map(function (item) {
    return new _MSTBItemHolder["default"](elt, _this, item);
  });
  this.hasDesc = this.hasDesc || this.children.some(function (child) {
    return child.hasDesc;
  });
  this.hasIcon = this.hasIcon || this.children.some(function (child) {
    return child.hasIcon;
  });
  this.dict = this.children.reduce(function visit(ac, child) {
    var key = (0, _utils.keyStringOf)(child.data.value);
    if (ac[key]) {
      console.error('Duplicate value:', ac[key].data, child.data);
    }
    ac[key] = child;
    if (child.children) {
      child.children.reduce(visit, ac);
    }
    return ac;
  }, {});
  this.selectedHolder = null;
}
STLBModeNormal.prototype.getHolderByValue = _CTBModes.CTBModeNormal.prototype.getHolderByValue;
STLBModeNormal.prototype.getItemByValue = function (value) {
  var holder = this.getHolderByValue(value);
  if (holder) return holder.data;
  return null;
};
STLBModeNormal.prototype.getFirstLeafHolder = function () {
  var res = null;
  if (this.children) {
    this.children.some(function visit(node) {
      if (node.data.isLeaf) {
        res = node;
        return true;
      }
      if (node.children) {
        return node.children.some(visit);
      }
      return false;
    });
  }
  return res;
};
STLBModeNormal.prototype.onStart = function () {
  this.$list.clearChild();
  var rootHolders = this.children;
  var viewElements = [];
  rootHolders.forEach(function (holder) {
    holder.getViewElements(viewElements);
  }, []);
  this.$list.addChild(viewElements);
};
STLBModeNormal.prototype.setValue = function (value, strict) {
  var holder = this.selectedHolder;
  if (holder) {
    holder.select(false);
  }
  holder = this.getHolderByValue(value);
  if (holder && !holder.data.isLeaf) holder = null;
  if (!holder && strict) {
    holder = this.getFirstLeafHolder();
  }
  if (holder && holder.data.isLeaf) {
    holder.select(true);
  }
  this.selectedHolder = holder;
};
STLBModeNormal.prototype.getValue = function (strict) {
  var holder = this.selectedHolder;
  if (strict && !holder) holder = this.getFirstLeafHolder();
  if (holder) {
    return holder.data.value;
  } else {
    throw new Error('Not selected!');
  }
};
STLBModeNormal.prototype.viewToSelected = function () {
  var _this2 = this;
  if (!this.selectedHolder) return;
  var visitUp = function visitUp(node) {
    var parent = node.parent;
    if (parent !== _this2) {
      visitUp(parent);
    }
    if (node.status === 'close') {
      node.elt.status = 'open';
      node.ev_statusChange();
    }
  };
  visitUp(this.selectedHolder);
  (0, _utils.vScrollIntoView)(this.selectedHolder.elt);
};
STLBModeNormal.prototype.onStop = function () {};
function STLBModeSearch(elt, items) {
  var _this3 = this;
  this.level = -1;
  this.elt = elt;
  this.$list = this.elt.$list;
  this.children = items.map(function (item) {
    return new _MSTBItemHolder["default"](elt, _this3, item);
  });
  this.dict = this.children.reduce(function visit(ac, child) {
    var key = (0, _utils.keyStringOf)(child.data.value);
    if (ac[key]) {
      console.error('Duplicate value:', ac[key].data, child.data);
    }
    ac[key] = child;
    if (child.children) {
      child.children.reduce(visit, ac);
    }
    return ac;
  }, {});
  this.selectedHolder = null;
}
STLBModeSearch.prototype.updateSelectedFromRef = function () {
  if (this.selectedHolder) this.selectedHolder.select(false);
  this.selectedHolder = null;
  var value = this.elt.value;
  var holder = this.dict[(0, _utils.keyStringOf)(value)];
  if (holder) {
    holder.select(true);
    this.selectedHolder = holder;
  }
};
STLBModeSearch.prototype.onStart = function () {
  STLBModeNormal.prototype.onStart.call(this);
  this.updateSelectedFromRef();
};
STLBModeSearch.prototype.onStop = function () {};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var STLBPropsHandlers = {};
STLBPropsHandlers.enableSearch = {
  set: function set(value) {
    if (value) {
      this.$box.addClass('as-enable-search');
    } else {
      this.$box.removeClass('as-enable-search');
    }
  },
  get: function get() {
    return this.$box.hasClass('as-enable-search');
  }
};
var _default = STLBPropsHandlers;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _CTIPropHandlers = _interopRequireDefault(__webpack_require__(51972));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var STLIPropHandlers = {};
STLIPropHandlers.data = {
  set: function set(data) {
    this._data = data;
    this._updateData();
  },
  get: function get() {
    return this._data;
  }
};
STLIPropHandlers.text = {
  get: function get() {
    var data = this._data;
    if (data === undefined || data === null) return '';
    if (typeof data === 'string') return data;
    if (data && data.text) return data.text + '';
    return data + '';
  }
};
STLIPropHandlers.value = {
  get: function get() {
    var data = this._data;
    if (data === undefined || data === null) return data;
    if (data && 'value' in data) return data.value;
    return data;
  }
};
STLIPropHandlers.level = _CTIPropHandlers["default"].level;
STLIPropHandlers.status = _CTIPropHandlers["default"].status;
STLIPropHandlers.selected = {
  set: function set(value) {
    if (value) {
      this.addClass('as-selected');
    } else {
      this.removeClass('as-selected');
    }
  },
  get: function get() {
    return this.hasClass('as-selected');
  }
};

/****
 * @name text
 * @type {string}
 * @memberOf SelectTreeLeafItem#
 */

/****
 * @name value
 * @type {string|number}
 * @memberOf SelectTreeLeafItem#
 */

/****
 * @name data
 * @type {*}
 * @memberOf SelectTreeLeafItem#
 */

/****
 * @name selected
 * @type {boolean}
 * @memberOf SelectTreeLeafItem#
 */
var _default = STLIPropHandlers;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _STLIPropHandlers = _interopRequireDefault(__webpack_require__(92068));
var _utils = __webpack_require__(84512);
__webpack_require__(97535);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @extends AElement
 * @constructor
 */
function SelectTreeLeafItem() {
  this.$text = (0, _ACore.$)('.am-select-tree-leaf-item-text', this);
  this.$desc = (0, _ACore.$)('.am-select-tree-leaf-item-desc', this);
  this.$iconCtn = (0, _ACore.$)('.am-select-tree-leaf-item-icon-ctn', this);
  this.addEventListener('click', this.eventHandler.click);
}
SelectTreeLeafItem.tag = 'SelectTreeLeafItem'.toLowerCase();
SelectTreeLeafItem.render = function () {
  return (0, _ACore._)({
    extendEvent: ['click', 'statuschange'],
    "class": ['am-select-tree-leaf-item', 'am-dropdown-box-item'],
    child: [{
      "class": 'am-select-tree-leaf-item-toggle-ctn',
      child: 'toggler-ico'
    }, {
      "class": 'am-select-tree-leaf-item-icon-ctn'
    }, {
      "class": 'am-select-tree-leaf-item-text',
      child: {
        text: ''
      }
    }, {
      "class": 'am-select-tree-leaf-item-desc',
      child: {
        text: ''
      }
    }]
  });
};
SelectTreeLeafItem.prototype._updateData = function () {
  this.$text.firstChild.data = this.text;
  this.attr('data-key', (0, _utils.keyStringOf)(this.value));
  this.$iconCtn.clearChild();
  var icon = this.data && this.data.icon;
  if (icon) {
    icon = (0, _ACore._)(icon);
    if (icon.parentElement) icon = (0, _ACore.$)(icon.cloneNode(true));
    this.$iconCtn.addChild(icon);
    this.addClass('as-has-icon');
  } else {
    this.removeClass('as-has-icon');
  }
  if (this.data && this.data.isLeaf) {
    this.addClass('as-is-leaf');
  } else {
    this.removeClass('as-is-leaf');
  }
};
SelectTreeLeafItem.property = _STLIPropHandlers["default"];
SelectTreeLeafItem.eventHandler = {};
SelectTreeLeafItem.eventHandler.click = function (event) {
  if (this._data && this._data.isLeaf) {
    this.emit('click', {
      type: 'click',
      target: this,
      originalEvent: event
    }, this);
  } else {
    if (this.status !== 'none') {
      this.status = this.status === 'open' ? 'close' : 'open';
      this.emit('statuschange', {
        type: 'statuschange',
        target: this,
        originalEvent: event
      }, this);
    }
  }
};
var _default = SelectTreeLeafItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _SelectTreeLeafMenu = _interopRequireDefault(__webpack_require__(66138));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _default = _SelectTreeLeafMenu["default"];
exports["default"] = _default;

/***/ }),

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

"use strict";


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.MTreeModal = MTreeModal;
exports["default"] = void 0;
__webpack_require__(65997);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _MSelectMenu = _interopRequireDefault(__webpack_require__(70448));
var _treeListToList = _interopRequireDefault(__webpack_require__(22248));
var _MListModal = _interopRequireDefault(__webpack_require__(11032));
var _SelectListBox = __webpack_require__(47818);
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; }
/***
 * @extends MListModal
 * @constructor
 */
function MTreeModal() {
  _MListModal["default"].call(this);
}
MTreeModal.tag = 'MTreeModal'.toLowerCase();
MTreeModal.render = function () {
  return _MListModal["default"].render().addClass('am-tree-modal');
};
Object.assign(MTreeModal.prototype, _MListModal["default"].prototype);
MTreeModal.prototype._listToDisplay = function (items) {
  return (0, _treeListToList["default"])(items);
};
MTreeModal.property = Object.assign({}, _MListModal["default"].property);
MTreeModal.eventHandler = Object.assign({}, _MListModal["default"].eventHandler);

/**
 * @extends {AElement}
 * @constructor
 */
function MSelectTreeMenu() {
  this._isFocus = false;
  this._itemsByValue = {};
  this.$holderItem = (0, _ACore.$)('.am-selectmenu-holder-item', this);

  /***
   * @type {MTreeModal}
   */
  this.$selectlist = (0, _ACore._)({
    tag: MTreeModal
  });
  this.$selectlist.cancelWaiting();
  this.$selectlist.on('pressitem', this.eventHandler.pressItem, true).on('pressout', this.eventHandler.pressOut).on('pressclose', this.eventHandler.pressOut);
  this.on('click', this.eventHandler.click, true);
  this.$attachhook = (0, _ACore.$)('attachhook', this).on('error', this.eventHandler.attached);
  this.addStyle('--as-width-limit', (0, _SelectListBox.calcWidthLimit)() + 'px');
}
MSelectTreeMenu.tag = 'MSelectTreeMenu'.toLowerCase();
MSelectTreeMenu.render = function () {
  return _MSelectMenu["default"].render().addClass('am-select-tree-menu');
};
Object.assign(MSelectTreeMenu.prototype, _MSelectMenu["default"].prototype);
MSelectTreeMenu.property = Object.assign({}, _MSelectMenu["default"].property);
MSelectTreeMenu.eventHandler = Object.assign({}, _MSelectMenu["default"].eventHandler);
MSelectTreeMenu.prototype._dictByValue = function (items) {
  return items.reduce(function visitor(ac, cr) {
    if (cr.items && cr.items.reduce) {
      cr.items.reduce(visitor, ac);
    }
    var value = cr.value + '';
    ac[value] = cr;
    return ac;
  }, {});
};
_ACore["default"].install(MSelectTreeMenu);
var _default = MSelectTreeMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
var _ACore = __webpack_require__(34093);
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {TableScroller} elt
 * @constructor
 */

function TSLMoveTool(elt) {
  var _this = this;
  this.elt = elt;
  this.$table = null;
  Object.keys(TSLMoveTool.prototype).forEach(function (key) {
    if (key.startsWith('ev_')) {
      _this[key] = _this[key].bind(_this);
    }
  });
  this.init();
}
TSLMoveTool.prototype.init = function () {
  this.elt = (0, _ACore._)({
    tag: _Hanger["default"],
    elt: this.elt,
    on: {
      predrag: this.ev_preDrag,
      dragstart: this.ev_dragStart,
      drag: this.ev_drag,
      dragend: this.ev_dragEnd
    }
  });
};
TSLMoveTool.prototype.onAttachTable = function () {};
TSLMoveTool.prototype.ev_preDrag = function (event) {
  var e = event.target;
  var isOK = false;
  while (e && e.tagName !== 'TABLE') {
    if (e.classList && e.classList.contains('as-drag-zone')) {
      isOK = true;
      break;
    }
    e = e.parentElement;
  }
  if (isOK) {
    event.preventDefault();
  } else {
    event.cancel();
  }
};
TSLMoveTool.prototype._findRowIdx = function (y) {
  var newY = _Rectangle["default"].fromClientRect(this.elt.$originTableBody.getBoundingClientRect()).y;
  var oldY = this.dragData.bodyBound.y;
  var dy = newY - oldY;
  var yArr = this.dragData.rowBounds.map(function (rect) {
    return rect.y + dy + rect.height / 2;
  });
  if (this.dragData.rowBounds.length === 0) yArr.push(0);
  var low = 0;
  var high = yArr.length - 1;
  var mid0, mid1;
  while (low < high) {
    mid0 = low + high >> 1;
    mid1 = mid0 + 1;
    if (Math.abs(y - yArr[mid0]) < Math.abs(y - yArr[mid1])) {
      high = mid0;
    } else {
      low = mid1;
    }
  }
  return low;
};
TSLMoveTool.prototype.ev_dragStart = function (event) {
  var t = this.findRow(event.target);
  if (!t) return;
  this.elt.addClass('as-dragging');
  this.dragData = Object.assign({}, t);
  this.dragData.copy.addClass('as-dragging');
  this.dragData.original.addClass('as-dragging');
  var rowBound = _Rectangle["default"].fromClientRect(this.dragData.original.getBoundingClientRect());
  var bodyBound = _Rectangle["default"].fromClientRect(this.elt.$originTableBody.getBoundingClientRect());
  this.dragData.mouseOffset = event.currentPoint.sub(rowBound.A());
  this.dragData.rowIdx = Array.prototype.indexOf.call(this.elt.$originTableBody.childNodes, this.dragData.original);
  this.dragData.newRowIdx = this.dragData.rowIdx;
  this.dragData.rowBound = rowBound;
  this.dragData.bodyBound = bodyBound;
  this.dragData.rowOffset = rowBound.A().sub(bodyBound.A());
  this.dragData.rowBounds = Array.prototype.map.call(this.elt.$originTableBody.childNodes, function (elt) {
    return _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
  });
};
TSLMoveTool.prototype.ev_drag = function (event) {
  var _this2 = this;
  if (!this.dragData) return;
  var bodyBound = _Rectangle["default"].fromClientRect(this.elt.$originTableBody.getBoundingClientRect());
  var rowA = bodyBound.A().add(this.dragData.rowOffset);
  var rowTransformed = event.currentPoint.sub(this.dragData.mouseOffset);
  var transform = rowTransformed.sub(rowA);
  var originalRow = this.dragData.original;
  originalRow.addStyle('transform', "translate(0, ".concat(transform.y, "px )"));
  this.dragData.copy.addStyle('transform', "translate(0, ".concat(transform.y, "px )"));
  this.dragData.hiddenCells = Array.prototype.filter.call(this.dragData.original.childNodes, function (e) {
    return e.tagName === 'TD';
  }).slice(0, this.elt.fixedCol);
  this.dragData.hiddenCells.forEach(function (e) {
    return (0, _ACore.$)(e).addClass('as-transparent-fix');
  });
  var newIdx = this._findRowIdx(rowTransformed.y + this.dragData.rowBound.height / 2);
  this.dragData.newRowIdx = newIdx;
  var rows = this.elt.$originTableBody.childNodes;
  var curIdx = this.dragData.rowIdx;
  // var copyRows = this.elt.$f
  var rowBound = this.dragData.rowBound;
  rows.forEach(function (elt, i) {
    if (elt === originalRow) return;
    var copyElt = _this2.elt.leftCopyRows[elt.getAttribute('data-id')];
    var dy = 0;
    if (i >= Math.min(newIdx, curIdx) && i <= Math.max(newIdx, curIdx)) {
      if (i > curIdx && i <= newIdx) {
        dy = -rowBound.height;
      } else if (i >= newIdx && i < curIdx) {
        dy = rowBound.height;
      }
    }
    elt.addStyle('transform', "translate(0, ".concat(dy, "px)"));
    copyElt.addStyle('transform', "translate(0, ".concat(dy, "px)"));
  });
};
TSLMoveTool.prototype.ev_dragEnd = function (event) {
  var _this3 = this;
  this.dragData.original.removeStyle('transform');
  this.dragData.copy.removeStyle('transform');
  this.dragData.copy.removeClass('as-dragging');
  this.dragData.original.removeClass('as-dragging');
  this.elt.removeClass('as-dragging');
  this.elt.removeClass('as-has-new-pos');
  this.dragData.hiddenCells.forEach(function (e) {
    return e.removeClass('as-transparent-fix');
  });
  var rows = this.elt.$originTableBody.childNodes;
  rows.forEach(function (elt) {
    var copyElt = _this3.elt.leftCopyRows[elt.getAttribute('data-id')];
    elt.addStyle('transform', 'translate(0, 0)');
    copyElt.addStyle('transform', 'translate(0, 0)');
  });
  var at, copyAt;
  if (this.dragData.newRowIdx !== this.dragData.rowIdx) {
    at = rows[this.dragData.newRowIdx];
    copyAt = this.elt.leftCopyRows[at.attr('data-id')];
    if (this.dragData.rowIdx < this.dragData.newRowIdx) {
      (0, _ACore.$)(at.parentElement).addChildAfter(this.dragData.original, at);
      (0, _ACore.$)(copyAt.parentElement).addChildAfter(this.dragData.copy, copyAt);
    } else {
      (0, _ACore.$)(at.parentElement).addChildBefore(this.dragData.original, at);
      (0, _ACore.$)(copyAt.parentElement).addChildBefore(this.dragData.copy, copyAt);
    }
    this.elt.reindexRows();
    this.elt.emit('orderchange', {
      target: this.elt,
      from: this.dragData.rowIdx,
      to: this.dragData.newRowIdx
    }, this.elt);
  }
};
TSLMoveTool.prototype.findRow = function (fromElt) {
  var e = fromElt;
  var rowElt;
  while (e) {
    if (e.tagName === 'TR') {
      rowElt = e;
      break;
    }
    e = e.parentElement;
  }
  if (!rowElt) return null;
  var id = rowElt.getAttribute('data-id');
  return {
    original: (0, _ACore.$)(this.elt.originalRows[id]),
    copy: (0, _ACore.$)(this.elt.leftCopyRows[id])
  };
};
var _default = TSLMoveTool;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(52977);
var _ACore = _interopRequireDefault(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _TSLMoveTool = _interopRequireDefault(__webpack_require__(39473));
var _stringGenerate = __webpack_require__(10713);
var _utils = __webpack_require__(84512);
var _DomSignal = _interopRequireDefault(__webpack_require__(47341));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var $ = _ACore["default"].$;
var _ = _ACore["default"]._;
var sliceCellArray = function sliceCellArray(cells, start, end) {
  if (typeof start !== "number") start = 0;
  if (typeof end !== "number") end = Infinity;
  var res = [];
  cells = cells.slice();
  var cell, colSpan;
  var n = 0;
  while (cells.length > 0) {
    cell = cells.shift();
    colSpan = parseInt(cell.getAttribute('colspan') || '1') || 1;
    n += colSpan;
    if (n > start && n <= end) res.push(cell);
  }
  return res;
};

/***
 * @extends {AElement}
 * @constructor
 */
function TableScroller() {
  this.$originCtn = $('.as-table-scroller-origin-table-ctn', this);
  this.$originTable = undefined;
  this.$originContent = undefined;
  this.$fixedYHeaderScroller = $('.as-table-scroller-fixed-y-header-scroller', this);
  this.$fixedYHeader = $('.as-table-scroller-fixed-y-header', this);
  this.$fixedXYHeader = $('.as-table-scroller-fixed-xy-header', this);
  this.$fixXCol = $('.as-table-scroller-fixed-x-col', this);
  this.$attachHook = $('attachhook', this);
  this.$attachHook.requestUpdateSize = this.updateContentSize.bind(this);
  this.requestUpdateSize = this.updateContentSize.bind(this);
  this.$attachHook.on('attached', function () {
    _Dom["default"].addToResizeSystem(this);
  });
  this.$domSignal = _('attachhook');
  this.appendChild(this.$domSignal);
  this.domSignal = new _DomSignal["default"](this.$domSignal);
  this.domSignal.on('requestUpdateContent', this.updateContent.bind(this));
  this.$vscrollbar = $('.absol-table-scroller-vscrollbar-container vscrollbar', this);
  this.$hscrollbar = $('.absol-table-scroller-hscrollbar-container hscrollbar', this);
  this.$vscroller = $('.as-table-scroller-vertical-scroller', this);
  this.$hscroller = $('.as-table-scroller-horizontal-scroller', this);
  this.$leftLine = $('.absol-table-scroller-left-line', this).addStyle('display', 'none');
  this.$headLine = $('.absol-table-scroller-head-line', this);
  this.scrollCtr = new ScrollController(this);
  this.moveTool = new _TSLMoveTool["default"](this);
  this._swappedPairs = [];
  this.originalRows = {};
  this.leftCopyRows = {};

  /***
   * @name fixedCol
   * @type {number}
   * @memberOf TableScroller#
   */
}

TableScroller.tag = 'TableScroller'.toLowerCase();
TableScroller.render = function () {
  return _({
    "class": 'absol-table-scroller',
    extendEvent: ['orderchange', 'preupdatesize', 'sizeupdated'],
    child: [{
      "class": 'absol-table-scroller-content',
      child: [{
        "class": 'as-table-scroller-vertical-scroller',
        child: [{
          "class": 'as-table-scroller-horizontal-scroller-viewport',
          child: [{
            "class": 'as-table-scroller-fixed-x-col-ctn',
            child: {
              tag: 'table',
              "class": 'as-table-scroller-fixed-x-col'
            }
          }, {
            "class": 'as-table-scroller-horizontal-scroller',
            child: [{
              "class": 'as-table-scroller-origin-table-ctn'
            }]
          }]
        }]
      }, {
        "class": 'as-table-scroller-fixed-y-header-ctn',
        child: {
          "class": 'as-table-scroller-fixed-y-header-scroller',
          child: {
            tag: 'table',
            "class": 'as-table-scroller-fixed-y-header'
          }
        }
      }, {
        "class": 'as-table-scroller-fixed-xy-header-ctn',
        child: {
          tag: 'table',
          "class": 'as-table-scroller-fixed-xy-header'
        }
      }, '.absol-table-scroller-viewport', '.absol-table-scroller-fixed-viewport',
      //place holder
      {
        "class": 'absol-table-scroller-header-hscroller',
        child: '.absol-table-scroller-header-hscroller-viewport'
      }, {
        "class": 'absol-table-scroller-left-vscroller',
        child: '.absol-table-scroller-left-vscroller-viewport'
      }, '.absol-table-scroller-head-line', '.absol-table-scroller-left-line']
    }, {
      "class": 'absol-table-scroller-vscrollbar-container',
      child: {
        tag: 'vscrollbar'
      }
    }, {
      "class": 'absol-table-scroller-hscrollbar-container',
      child: {
        tag: 'hscrollbar'
      }
    }, 'attachhook']
  });
};
TableScroller.scrollSize = 17; //default 

_Dom["default"].getScrollSize().then(function (size) {
  TableScroller.scrollSize = size.width; //default scroller
  TableScroller.$style = _('style[id="table-scroller-css"]').addTo(document.head);
  TableScroller.$style.innerHTML = ['body .absol-table-scroller {', '    --scrollbar-width: ' + (size.width + 0) + 'px', '}'].join('\n');
  _Dom["default"].updateResizeSystem();
  setTimeout(_Dom["default"].updateResizeSystem.bind(_Dom["default"]), 30); // css load delay
});

TableScroller.eventHandler = {};
TableScroller.prototype.clearChild = function () {
  this.$fixXCol.clearChild();
  this.$fixedYHeader.clearChild();
  this.$fixedXYHeader.clearChild();
  if (this.$originTable) this.$originTable.remove();
  this.$originTable = null;
  return this;
};
TableScroller.prototype.addChild = function (elt) {
  if (this.$originTable) {
    throw new Error('Only one table is accepted!');
  }
  this.$originContent = elt;
  this.$originTable = $('table', this.$originContent);
  this.$originCtn.addChild(this.$originTable);
  this.requestUpdateContent();
};
TableScroller.prototype._revertWrapped = function () {
  var pair;
  while (this._swappedPairs.length > 0) {
    pair = this._swappedPairs.pop();
    (0, _utils.swapChildrenInElt)(pair[0], pair[1]);
  }
};
TableScroller.prototype._makeDataIdent = function () {
  var _this = this;
  this.originalRows = {};
  Array.prototype.slice.call(this.$originTableBody.childNodes).forEach(function (elt, i) {
    var id;
    if (elt.tagName === 'TR') {
      id = elt.getAttribute('data-id') || (0, _stringGenerate.randomIdent)(12) + '_' + i;
      elt.setAttribute('data-id', id);
      _this.originalRows[id] = $(elt);
    } else {
      elt.remove();
    }
  });
};
TableScroller.prototype._updateFixedYHeader = function () {
  var _this2 = this;
  var head = $(this.$originTableThead.cloneNode(false));
  var headRows = Array.prototype.filter.call(this.$originTableThead.childNodes, function (elt) {
    return elt.tagName === 'TR';
  }).map(function (tr) {
    var copyTr = $(tr.cloneNode(false));
    copyTr.$origin = tr;
    var cells = Array.prototype.filter.call(tr.childNodes, function (elt) {
      return elt.tagName === 'TH' || elt.tagName === 'TD';
    }).map(function (td) {
      return $(Object.assign(td.cloneNode(true), {
        $origin: td
      }));
    });
    copyTr.addChild(cells);
    sliceCellArray(cells, _this2.fixedCol).forEach(function (elt) {
      (0, _utils.swapChildrenInElt)(elt, elt.$origin);
      _this2._swappedPairs.push([elt, elt.$origin]);
    });
    return copyTr;
  });
  head.addChild(headRows);
  this.$fixedYHeader.clearChild().addChild(head);
  this.$fixedYHeader.attr('class', this.$originTable.attr('class')).addClass('as-table-scroller-fixed-y-header');
};
TableScroller.prototype._updateFixedYHeaderSize = function () {
  var bound = this.$originTable.getBoundingClientRect();
  // this.$fixedYHeader.addStyle('width', bound.width + 'px');
  if (this.$fixedYHeader.firstChild && this.$fixedYHeader.firstChild.firstChild) Array.prototype.forEach.call(this.$fixedYHeader.firstChild.firstChild.childNodes, function (elt) {
    var bound = elt.$origin.getBoundingClientRect();
    elt.addStyle('width', bound.width + 'px');
    if (bound.width + bound.height === 0) {
      elt.addStyle('display', 'none');
    } else {
      elt.removeStyle('display');
    }
  });
  this.$headLine.addStyle('top', this.$fixedYHeader.getBoundingClientRect().height - 1 + 'px').addStyle('max-width', bound.width + 'px');
};
TableScroller.prototype._updateFixedXCol = function () {
  var _this3 = this;
  this.$fixXCol.clearChild();
  var head = $(this.$originTableThead.cloneNode(false));
  var headRows = Array.prototype.filter.call(this.$originTableThead.childNodes, function (elt) {
    return elt.tagName === 'TR';
  }).map(function (tr) {
    var copyTr = $(tr.cloneNode(false));
    copyTr.$origin = tr;
    var cells = Array.prototype.filter.call(tr.childNodes, function (elt) {
      return elt.tagName === 'TH' || elt.tagName === 'TD';
    });
    cells = sliceCellArray(cells, 0, _this3.fixedCol).map(function (td) {
      return $(Object.assign(td.cloneNode(true), {
        $origin: td
      }));
    });
    copyTr.addChild(cells);
    return copyTr;
  });
  head.addChild(headRows);
  var body = $(this.$originTableBody.cloneNode());
  var rows = Array.prototype.filter.call(this.$originTableBody.childNodes, function (elt) {
    return elt.tagName === 'TR';
  }).map(function (tr) {
    var copyTr = $(tr.cloneNode(false));
    copyTr.$origin = tr;
    var id = copyTr.attr('data-id');
    _this3.leftCopyRows[id] = copyTr;
    var cells = Array.prototype.filter.call(tr.childNodes, function (elt) {
      return elt.tagName === 'TH' || elt.tagName === 'TD';
    });
    cells = sliceCellArray(cells, 0, _this3.fixedCol).map(function (td) {
      return $(Object.assign(td.cloneNode(true), {
        $origin: td
      }));
    });
    cells.forEach(function (elt) {
      (0, _utils.swapChildrenInElt)(elt, elt.$origin);
      _this3._swappedPairs.push([elt, elt.$origin]);
    });
    copyTr.addChild(cells);
    return copyTr;
  });
  body.addChild(rows);
  this.$fixXCol.addChild(head).addChild(body);
  this.$fixXCol.attr('class', this.$originTable.attr('class')).addClass('as-table-scroller-fixed-x-col');
};
TableScroller.prototype._updateFixedXColSize = function () {
  if (this.fixedCol === 0) return;
  var bound = this.$originTable.getBoundingClientRect();
  // this.$fixXCol.addStyle('height', bound.height + 'px');

  Array.prototype.forEach.call(this.$fixXCol.firstChild.childNodes, function (elt) {
    elt.addStyle('height', elt.$origin.getBoundingClientRect().height + 'px');
  });
  Array.prototype.forEach.call(this.$fixXCol.firstChild.firstChild.childNodes, function (elt) {
    elt.addStyle('width', elt.$origin.getBoundingClientRect().width + 'px');
  });
  Array.prototype.forEach.call(this.$fixXCol.lastChild.childNodes, function (elt) {
    elt.addStyle('height', elt.$origin.getBoundingClientRect().height + 'px');
  });
};
TableScroller.prototype._updateFixedXYHeader = function () {
  var _this4 = this;
  var head = $(this.$originTableThead.cloneNode(false));
  var headRows = Array.prototype.filter.call(this.$originTableThead.childNodes, function (elt) {
    return elt.tagName === 'TR';
  }).map(function (tr) {
    var copyTr = _('tr');
    copyTr.$origin = tr;
    var cells = Array.prototype.filter.call(tr.childNodes, function (elt) {
      return elt.tagName === 'TH' || elt.tagName === 'TD';
    });
    cells = sliceCellArray(cells, 0, _this4.fixedCol).map(function (td) {
      return $(Object.assign(td.cloneNode(true), {
        $origin: td
      }));
    });
    copyTr.addChild(cells);
    cells.forEach(function (cell) {
      (0, _utils.swapChildrenInElt)(cell, cell.$origin);
      _this4._swappedPairs.push([cell, cell.$origin]);
    });
    return copyTr;
  });
  head.addChild(headRows);
  this.$fixedXYHeader.clearChild().addChild(head);
  this.$fixedXYHeader.attr('class', this.$originTable.attr('class')).addClass('as-table-scroller-fixed-xy-header');
};
TableScroller.prototype._updateFixedXYHeaderSize = function () {
  if (this.$fixedXYHeader.firstChild) Array.prototype.forEach.call(this.$fixedXYHeader.firstChild.childNodes, function (elt) {
    elt.addStyle('height', elt.$origin.getBoundingClientRect().height + 'px');
  });
  if (this.$fixedXYHeader.firstChild && this.$fixedXYHeader.firstChild.firstChild) Array.prototype.forEach.call(this.$fixedXYHeader.firstChild.firstChild.childNodes, function (elt) {
    elt.addStyle('width', elt.$origin.getBoundingClientRect().width + 'px');
  });
  this.$leftLine.addStyle('left', this.$fixedXYHeader.getBoundingClientRect().width - 1 + 'px');
};
TableScroller.prototype.updateContent = function () {
  var _this5 = this;
  if (!this.$originTable) return;
  this._revertWrapped();
  this.$originTableThead = $('thead', this.$originTable);
  this.$originTableBody = $('tbody', this.$originTable);
  this._makeDataIdent();
  this._updateFixedYHeader();
  this._updateFixedXCol();
  this._updateFixedXYHeader();
  this.reindexRows();
  this.updateContentSize();
  requestAnimationFrame(function () {
    _this5.updateContentSize();
  });
};
TableScroller.prototype._updateScrollStatus = function () {
  var bound = this.getBoundingClientRect();
  var tableBound = this.$originTable.getBoundingClientRect();
  if (bound.width < tableBound.width) {
    this.addClass('as-scroll-horizontal');
    this.$vscrollbar.outerHeight = bound.height - 17;
  } else {
    this.$vscrollbar.outerHeight = bound.height;
    this.removeClass('as-scroll-horizontal');
  }
  if (bound.height < tableBound.height) {
    this.addClass('as-scroll-vertical');
    this.$hscrollbar.outerWidth = bound.width - 17;
  } else {
    this.$hscrollbar.outerWidth = bound.width;
    this.removeClass('as-scroll-vertical');
  }
  var paddingBottom = this.getComputedStyleValue('--tvs-scroll-padding-bottom');
  paddingBottom = parseFloat((paddingBottom || '0px').replace('px', ''));
  this.$vscrollbar.innerHeight = tableBound.height + paddingBottom;
  this.$hscrollbar.innerWidth = tableBound.width;
};
TableScroller.prototype.updateContentSize = function () {
  if (!this.$originTable) return;
  this._updateScrollStatus();
  this._updateFixedYHeaderSize();
  this._updateFixedXColSize();
  this._updateFixedXYHeaderSize();
};
TableScroller.prototype.reindexRows = function () {
  if (!this.$originTableBody) return;
  Array.prototype.filter.call(this.$originTableBody.childNodes, function (elt) {
    return elt.tagName === 'TR';
  }).forEach(function (elt, i) {
    if (elt.$idx === null) return;
    elt.$idx = elt.$idx || $('.as-table-scroller-row-index', elt) || null;
    if (elt.$idx) elt.$idx.attr('data-idx', i + 1);
  });
  Array.prototype.forEach.call(this.$fixXCol.lastChild.childNodes, function (elt, i) {
    if (elt.$idx === null) return;
    elt.$idx = elt.$idx || $('.as-table-scroller-row-index', elt) || null;
    if (elt.$idx) elt.$idx.attr('data-idx', i + 1);
  });
};
TableScroller.prototype.removeRow = function (row) {
  if ($(row).isDescendantOf(this)) {
    row.remove();
    this.requestUpdateContent();
  }
  return this;
};
TableScroller.prototype.addRowBefore = function (row, bf) {
  if (!this.$originTableBody) return this;
  this.$originTableBody.addChildBefore(row, bf);
  this.requestUpdateContent();
  return this;
};
TableScroller.prototype.addRowAfter = function (row, at) {
  if (!this.$originTableBody) return this;
  this.$originTableBody.addChildAfter(row, at);
  this.requestUpdateContent();
  return this;
};
TableScroller.prototype.requestUpdateContent = function () {
  this.domSignal.emit('requestUpdateContent');
};
TableScroller.property = {};
TableScroller.property.fixedCol = {
  set: function set(value) {
    value = value || 0;
    this._fixedCol = value;
    if (value === 0) this.$leftLine.addStyle('display', 'none');else this.$leftLine.removeStyle('display');
    this.requestUpdateContent();

    // this.$domSignal.emit('requestUpdateContent');
  },

  get: function get() {
    return this._fixedCol || 0;
  }
};
_ACore["default"].install(TableScroller);
var _default = TableScroller;
/***
 *
 * @param {TableScroller} elt
 * @constructor
 */
exports["default"] = _default;
function ScrollController(elt) {
  var _this6 = this;
  this.elt = elt;
  Object.keys(this.constructor.prototype).filter(function (k) {
    return k.startsWith('ev_');
  }).forEach(function (k) {
    return _this6[k] = _this6[k].bind(_this6);
  });
  this.vscrollTarget = null;
  this.hscrollTarget = null;
  this.elt.$vscroller.on('scroll', this.ev_vScrollerScroll);
  this.elt.$vscrollbar.on('scroll', this.ev_vScrollbarScroll);
  this.elt.$hscroller.on('scroll', this.ev_hScrollerScroll);
  this.elt.$hscrollbar.on('scroll', this.ev_hScrollbarScroll);
  this.elt.$fixedYHeaderScroller.on('scroll', this.ev_fixedYHeaderScroll);
}
ScrollController.prototype.ev_vScrollerScroll = function (event) {
  var now = new Date().getTime();
  if (this.vscrollTarget && now - this.vscrollTarget.time < 100 && this.vscrollTarget.elt !== this.elt.$vscroller) return;
  this.elt.$vscrollbar.innerOffset = this.elt.$vscroller.scrollTop;
  this.vscrollTarget = {
    time: now,
    elt: this.elt.$vscroller
  };
};
ScrollController.prototype.ev_vScrollbarScroll = function (event) {
  var now = new Date().getTime();
  if (this.vscrollTarget && now - this.vscrollTarget.time < 100 && this.vscrollTarget.elt !== this.elt.$vscrollbar) return;
  this.elt.$vscroller.scrollTop = this.elt.$vscrollbar.innerOffset;
  this.vscrollTarget = {
    time: now,
    elt: this.elt.$vscrollbar
  };
};
ScrollController.prototype.ev_hScrollerScroll = function (event) {
  var now = new Date().getTime();
  if (this.hscrollTarget && now - this.hscrollTarget.time < 100 && this.hscrollTarget.elt !== this.elt.$hscroller) return;
  this.elt.$hscrollbar.innerOffset = this.elt.$hscroller.scrollLeft;
  this.elt.$fixedYHeaderScroller.scrollLeft = this.elt.$hscroller.scrollLeft;
  this.hscrollTarget = {
    time: now,
    elt: this.elt.$hscroller
  };
};
ScrollController.prototype.ev_fixedYHeaderScroll = function (event) {
  var now = new Date().getTime();
  if (this.hscrollTarget && now - this.hscrollTarget.time < 100 && this.hscrollTarget.elt !== this.elt.$fixedYHeaderScroller) return;
  this.elt.$hscrollbar.innerOffset = this.elt.$fixedYHeaderScroller.scrollLeft;
  this.elt.$hscroller.scrollLeft = this.elt.$fixedYHeaderScroller.scrollLeft;
  this.hscrollTarget = {
    time: now,
    elt: this.elt.$fixedYHeaderScroller
  };
};
ScrollController.prototype.ev_hScrollbarScroll = function (event) {
  var now = new Date().getTime();
  if (this.hscrollTarget && now - this.hscrollTarget.time < 100 && this.hscrollTarget.elt !== this.elt.$hscrollbar) return;
  this.elt.$hscroller.scrollLeft = this.elt.$hscrollbar.innerOffset >> 0;
  this.vscrollTarget = {
    time: now,
    elt: this.elt.$hscrollbar
  };
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
/***
 * @param {TokenizeInput} elt
 * @constructor
 */
function TIHistory(elt) {
  this.elt = elt;
  this.stack = [];
  this.topIdx = -1;
}
TIHistory.prototype.commit = function (text, offset) {
  while (this.topIdx < this.stack.length - 1) {
    this.stack.pop();
  }
  var lastText = this.stack.length > 0 ? this.stack[this.stack.length - 1].text : null;
  if (text === lastText) {
    if (this.stack[this.stack.length - 1].offset !== offset) this.stack[this.stack.length - 1].offset = offset;
  } else {
    this.topIdx = this.stack.length;
    var record = {
      text: text,
      offset: offset
    };
    this.stack.push(record);
    this.elt.emit('change', {
      target: this,
      value: record.text,
      action: 'commit',
      record: record,
      type: 'change'
    }, this);
  }
};
TIHistory.prototype.undo = function () {
  if (this.topIdx <= 0) return;
  this.topIdx--;
  var record = this.stack[this.topIdx];
  this.elt.applyData(record.text, record.offset);
  this.elt.emit('change', {
    target: this,
    value: record.text,
    action: 'undo',
    record: record,
    type: 'change'
  }, this);
};
TIHistory.prototype.redo = function () {
  if (this.topIdx + 1 >= this.stack.length) return;
  this.topIdx++;
  var record = this.stack[this.topIdx];
  this.elt.applyData(record.text, record.offset);
  this.elt.emit('change', {
    target: this,
    value: record.text,
    action: 'redo',
    record: record,
    type: 'change'
  }, this);
};
var _default = TIHistory;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _tiutils = __webpack_require__(94614);
var _utils = __webpack_require__(84512);
/****
 *
 * @param {TokenizeInput} elt
 * @constructor
 */
function TISelectionController(elt) {
  this.elt = elt;
  this.prevRange = null;
}
TISelectionController.prototype.onSelect = function () {
  var _this = this;
  var key = this.elt.prevKey && new Date().getTime() - this.elt.prevKey.time < 100 ? this.elt.prevKey.value : '';
  var sel = document.getSelection();
  var range = sel.getRangeAt(0);
  var direction = (0, _utils.getSelectionRangeDirection)(range);
  var newRange;
  var handleEmojiToken = function handleEmojiToken() {
    var startCtn = range.startContainer;
    var startOffset = range.startOffset;
    var startToken;
    var endCtn = range.endContainer;
    var endOffset = range.endOffset;
    var endToken;
    var changed = 0;
    var textData;
    var nextTextNode;
    var prevTextNode;
    var displayText;
    var newText;
    if ((0, _tiutils.isTokenText)(startCtn)) {
      startToken = startCtn.parentElement;
      displayText = startToken.getAttribute('data-display');
      textData = startCtn.data;
      if (range.collapsed) {
        if (textData.length < displayText.length) {
          prevTextNode = _this.getPrevTextNode(startCtn);
          if (!(0, _tiutils.isText)(prevTextNode)) {
            prevTextNode = document.createTextNode('');
            startToken.parentElement.insertBefore(prevTextNode, startToken);
          }
          startToken.remove();
          startCtn = prevTextNode;
          startOffset = prevTextNode.data.length;
          changed = 1;
        } else if (textData === displayText && startOffset < displayText.length && startOffset > 0) {
          if (key === 'arrowright' || !key) {
            startOffset = displayText.length;
            changed = 1;
          } else if (key === 'arrowleft') {
            startOffset = 0;
            changed = 1;
          } else if (key === 'mouseup') {
            startOffset = 0;
            endOffset = displayText.length;
            changed = 2;
          }
        } else if (textData.length > displayText.length) {
          if (startOffset === textData.length) {
            nextTextNode = startToken.nextSibling;
            if (!(0, _tiutils.isText)(nextTextNode)) {
              newText = document.createTextNode('');
              nextTextNode.parentElement.insertBefore(newText, nextTextNode);
              nextTextNode = newText;
            }
            nextTextNode.data = textData.substring(displayText.length) + nextTextNode.data;
            startCtn.data = displayText;
            startCtn = nextTextNode;
            startOffset = textData.length - displayText.length;
            changed = 1;
          } else {
            prevTextNode = startToken.previousSibling;
            if (!(0, _tiutils.isText)(prevTextNode)) {
              newText = document.createTextNode('');
              startToken.parentElement.insertBefore(newText, startToken);
              prevTextNode = newText;
            }
            prevTextNode.data += textData.substring(0, textData.length - displayText.length);
            startCtn.data = displayText;
            startCtn = prevTextNode;
            startOffset = startCtn.data.length;
          }
        }
      } else {
        if (startOffset > 0 && startOffset < displayText.length) {
          startOffset = 0;
          changed = 2;
        }
      }
    }
    if ((0, _tiutils.isTokenText)(endCtn)) {
      endToken = endCtn.parentElement;
      displayText = endToken.getAttribute('data-display');
      if (!range.collapsed) {
        if (endOffset < displayText.length) {
          endOffset = displayText.length;
          changed = 2;
        }
      }
    }
    if (changed > 0) {
      newRange = document.createRange();
      newRange.setStart(startCtn, startOffset);
      if (changed > 1) {
        newRange.setEnd(endCtn, endOffset);
      } else {
        //for saving
        endOffset = startOffset;
        endCtn = startCtn;
      }
      (0, _utils.setSelectionRange)(newRange, direction === 'backward');
    }
    var nextToken, nextText;
    if ((0, _tiutils.isToken)(endCtn.nextSibling)) {
      nextToken = endCtn.nextSibling;
      displayText = nextToken.getAttribute('data-display');
      nextText = (0, _tiutils.getFirstTextNode)(nextToken);
      if (!nextText || nextText.data !== displayText) nextToken.remove();
    }
    _this.prevRange = {
      startOffset: startOffset,
      startContainer: startCtn,
      endOffset: endOffset,
      endContainer: endCtn
    };
  };
  handleEmojiToken();
};
TISelectionController.prototype.getNextTextNode = function (current) {
  return (0, _tiutils.findNextTextNode)(this.elt, current);
};
TISelectionController.prototype.getPrevTextNode = function (current) {
  return (0, _tiutils.findPrevTextNode)(this.elt, current);
};
TISelectionController.prototype.setRangeByOffset = function (offset) {
  var start, end, direction;
  if (typeof offset === "number") {
    start = offset;
    end = offset;
    direction = 'forward';
  } else {
    start = offset.start;
    end = offset.end;
    direction = offset.direction || 'forward';
  }
  var startCtn = null;
  var startOffset = 0;
  var endCtn = null;
  var endOffset = 0;
  var st = '';
  var nodes = Array.prototype.slice.call(this.elt.childNodes);
  if ((0, _tiutils.isNewLine)(nodes[nodes.length - 1])) nodes.pop();
  var node;
  for (var i = 0; i < nodes.length; ++i) {
    node = nodes[i];
    if ((0, _tiutils.isText)(node)) {
      st += node.data;
      if (!startCtn && st.length >= start) {
        startCtn = node;
        startOffset = node.data.length - (st.length - start);
      }
      if (!endCtn && st.length >= end) {
        endCtn = node;
        endOffset = node.data.length - (st.length - end);
      }
    } else if ((0, _tiutils.isToken)(node)) {
      st += node.getAttribute('data-text');
      if (!startCtn && st.length >= start) {
        startCtn = (0, _tiutils.getFirstTextNode)(node);
        startOffset = startCtn.data.length;
      }
      if (!endCtn && st.length >= end) {
        endCtn = (0, _tiutils.getFirstTextNode)(node);
        endOffset = endCtn.data.length;
      }
    } else if ((0, _tiutils.isNewLine)(node)) {
      st += '\n';
      if (!startCtn && st >= start) {
        startCtn = this.elt;
        startOffset = i + 1;
      }
      if (!endCtn && st.length >= end) {
        endCtn = this.elt;
        endOffset = i + 1;
      }
    }
  }
  if (!startCtn) {
    if (nodes.length > 0) {
      node = nodes[nodes.length - 1];
      if ((0, _tiutils.isNewLine)(node)) {
        startCtn = this.elt;
        startOffset = nodes.length;
      } else if ((0, _tiutils.isText)(node)) {
        startCtn = node;
        startOffset = node.length;
      } else {
        startCtn = (0, _tiutils.getLastTextNode)(node);
        startOffset = node.length;
      }
    } else {
      startCtn = this.elt;
      startOffset = 0;
    }
  }
  if (!endCtn) {
    endCtn = startCtn;
    endOffset = startOffset;
  }
  this.prevRange = {
    startContainer: startCtn,
    startOffset: startOffset,
    endContainer: endCtn,
    endOffset: endOffset
  };
  var range = document.createRange();
  range.setStart(startCtn, startOffset);
  range.setEnd(endCtn, endOffset);
  (0, _utils.setSelectionRange)(range, direction === 'backward');
};
TISelectionController.prototype.getOffset = function (range) {
  range = range || this.elt.selectionCtrl.prevRange;
  if (!range) return null;
  var nodes = Array.prototype.slice.call(this.elt.childNodes);
  if ((0, _tiutils.isNewLine)(nodes[nodes.length - 1])) nodes.pop();
  var startCtn = range.startContainer;
  var startOffset = range.startOffset;
  var endCtn = range.endContainer;
  var endOffset = range.endOffset;
  if (startCtn === this.elt) {
    startCtn = this.elt.childNodes[startOffset - 1];
    startOffset = 1;
  } else if ((0, _tiutils.isTokenText)(startCtn)) {
    startCtn = startCtn.parentElement;
    if (startOffset > 0) startOffset = startCtn.getAttribute('data-text').length;
  }
  if (endCtn === this.elt) {
    endCtn = this.elt.childNodes[endOffset];
    endOffset = 1;
  } else if ((0, _tiutils.isTokenText)(endCtn)) {
    endCtn = endCtn.parentElement;
    if (endOffset > 0) endOffset = endCtn.getAttribute('data-text').length;
  }
  var start = undefined;
  var end = undefined;
  var direction = (0, _utils.getSelectionRangeDirection)(range);
  var st = '';
  var node;
  for (var i = 0; i < nodes.length; ++i) {
    node = nodes[i];
    if ((0, _tiutils.isText)(node)) {
      if (start === undefined && node === startCtn) {
        start = st.length + startOffset;
      }
      if (end === undefined && node === endCtn) {
        end = st.length + endOffset;
      }
      st += node.data;
    } else if ((0, _tiutils.isToken)(node)) {
      if (start === undefined && node === startCtn) {
        start = st.length + startOffset;
      }
      if (end === undefined && node === endCtn) {
        end = st.length + endOffset;
      }
      st += node.getAttribute('data-text');
    } else if ((0, _tiutils.isNewLine)(node)) {
      st += '\n';
      if (start === undefined && node === startCtn) {
        start = st.length;
      }
      if (end === undefined && node === endCtn) {
        end = st.length;
      }
    }
  }
  if (start === undefined) start = 0;
  if (end === undefined) {
    end = start;
  }
  return {
    start: start,
    end: end,
    direction: direction
  };
};
var _default = TISelectionController;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = exports.EMPTY_2_SPACES = void 0;
var _EmojiAnims = __webpack_require__(98541);
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _EmojiPicker = _interopRequireDefault(__webpack_require__(24169));
var _utils = __webpack_require__(84512);
var _tiutils = __webpack_require__(94614);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var EMPTY_2_SPACES = String.fromCharCode(0x2003);
exports.EMPTY_2_SPACES = EMPTY_2_SPACES;
var emojiCSSLoaded = false;
function loadEmojiCSS() {
  if (emojiCSSLoaded) return;
  emojiCSSLoaded = true;
  _Dom["default"].documentReady.then(function () {
    var styleSheet = {};
    for (var name in _EmojiAnims.EmojiAnimByIdent) {
      styleSheet['.as-emoji-token[data-text="' + name + '"]'] = {
        'background-image': 'url(' + _EmojiPicker["default"].assetRoot + '/static/x20/' + _EmojiAnims.EmojiAnimByIdent[name][1] + ')'
      };
    }
    (0, _utils.buildCss)(styleSheet);
  });
}

/***
 *
 * @param {TokenizeHyperInput} elt
 * @constructor
 */
function TITextController(elt) {
  loadEmojiCSS();
  this.elt = elt;
}
TITextController.prototype.setText = function (text) {
  this.elt.clearChild();
  this.elt.addChild((0, _tiutils.text2ContentElements)(text, {
    tagMap: this.elt.tagMap
  }));
  this.elt.addChild(this.elt.$br);
};
TITextController.prototype.getText = function () {
  var nodes = Array.prototype.slice.call(this.elt.childNodes);
  if ((0, _tiutils.isNewLine)(nodes[nodes.length - 1])) {
    nodes.pop();
  }
  return nodes.map(function (node) {
    if ((0, _tiutils.isText)(node)) {
      return node.data;
    } else if ((0, _tiutils.isToken)(node)) {
      return node.getAttribute('data-text') || '';
    } else if ((0, _tiutils.isNewLine)(node)) return '\n';
  }).join('');
};

/***
 *
 * @param {Range=} range default: previous selected range
 */
TITextController.prototype.getTextByRange = function (range) {
  range = range || this.elt.selectionCtrl.prevRange;
  if (!range) return this.getText();
  var nodes = Array.prototype.slice.call(this.elt.childNodes);
  if ((0, _tiutils.isNewLine)(nodes[nodes.length - 1])) nodes.pop();
  var startCtn = range.startContainer;
  var startOffset = range.startOffset;
  var endCtn = range.endContainer;
  var endOffset = range.endOffset;
  if (startCtn === this.elt) {
    startCtn = this.elt.childNodes[startOffset - 1];
    startOffset = 0;
  } else if ((0, _tiutils.isTokenText)(startCtn)) {
    startCtn = startCtn.parentElement;
  }
  if (endCtn === this.elt) {
    endCtn = this.elt.childNodes[endOffset];
    endOffset = 0;
  } else if ((0, _tiutils.isTokenText)(endCtn)) {
    endCtn = endCtn.parentElement;
  }
  if (startCtn === endCtn) {
    if ((0, _tiutils.isToken)(startCtn)) {
      return startCtn.getAttribute('data-text');
    } else if ((0, _tiutils.isText)(startCtn)) {
      return startCtn.data.substring(startOffset, endOffset);
    }
    return '';
  }
  var res = '';
  var node;
  var started = false;
  for (var i = 0; i < nodes.length; ++i) {
    node = nodes[i];
    if (started) {
      if (endCtn === node) {
        if ((0, _tiutils.isToken)(endCtn)) {
          res += node.getAttribute('data-text');
        } else if ((0, _tiutils.isText)(node)) {
          res += node.data.substring(0, endOffset);
        }
        break;
      } else {
        if ((0, _tiutils.isToken)(node)) {
          res += node.getAttribute('data-text');
        } else if ((0, _tiutils.isText)(node)) {
          res += node.data;
        } else if ((0, _tiutils.isNewLine)(node)) {
          res += '\n';
        }
      }
    } else {
      if (startCtn === node) {
        started = true;
        if ((0, _tiutils.isText)(node)) {
          res += node.data.substring(startOffset);
        } else if ((0, _tiutils.isToken)(node)) {
          if (startOffset === 0) {
            res += node.getAttribute('data-text');
          }
        }
      }
    }
  }
  return res;
};
TITextController.prototype.applyData = function (text, offset) {
  this.setText(text);
  this.elt.selectionCtrl.setRangeByOffset(offset);
};
TITextController.prototype.insertText = function (text) {
  var range = document.getSelection().getRangeAt(0);
  range.deleteContents();
  this.elt.selectionCtrl.onSelect();
  range = document.getSelection().getRangeAt(0);
  var eltChain = (0, _tiutils.text2ContentElements)(text, {
    tagMap: this.elt.tagMap
  });
  var startCtn = range.startContainer;
  var at;
  if ((0, _tiutils.isTokenText)(startCtn)) {
    at = startCtn.parentElement;
  } else if (startCtn === this.elt) {
    at = this.elt.childNodes[range.startOffset - 1];
  }
  var newNode;
  while (eltChain.length > 0) {
    newNode = eltChain.shift();
    if (!at) {
      this.elt.addChildBefore(newNode, this.elt.firstChild);
      at = newNode;
    } else if ((0, _tiutils.isText)(at) && (0, _tiutils.isText)(newNode)) {
      at.data += newNode.data;
    } else {
      this.elt.addChildAfter(newNode, at);
      at = newNode;
    }
  }
};
var _default = TITextController;
exports["default"] = _default;

/***/ }),

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

"use strict";


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;
__webpack_require__(67362);
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _file = __webpack_require__(54134);
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _TIHistory = _interopRequireDefault(__webpack_require__(77921));
var _TITextController = _interopRequireDefault(__webpack_require__(46867));
var _TISelectionController = _interopRequireDefault(__webpack_require__(97170));
var _keyboard = __webpack_require__(95141);
var _utils = __webpack_require__(84512);
var _tiutils = __webpack_require__(94614);
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 textDelay = _BrowserDetector["default"].isSafari ? 100 : 1;

/***
 * @extends AElement
 * @constructor
 */
function TokenizeHyperInput() {
  this._tagMap = {};
  this.$br = (0, _ACore.$)('br', this);
  this.historyCtrl = new _TIHistory["default"](this);
  this.textCtrl = new _TITextController["default"](this);
  this.selectionCtrl = new _TISelectionController["default"](this);
  this.prevKey = null;
  this.defineEvent(['pasteimg', 'pastefile', 'pastetext', 'change']);
  this.on('paste', this.eventHandler.paste);
  this.on('keydown', this.eventHandler.keydown);
  this.on('mouseup', this.eventHandler.mouseup);
  this.value = '';
  this.historyCtrl.commit('', 0);
  /***
   * @type {{}}
   * @name tagMap
   *@memberOf TokenizeHyperInput#
   *
   */
}

TokenizeHyperInput.tag = 'TokenizeHyperInput'.toLowerCase();
TokenizeHyperInput.render = function () {
  return (0, _ACore._)({
    tag: 'pre',
    "class": 'as-tokenize-hyper-input',
    attr: {
      contenteditable: 'true',
      spellcheck: "false"
    },
    child: 'br'
  });
};
TokenizeHyperInput.prototype.applyData = function (text, offset) {
  this.textCtrl.applyData(text, offset);
};
TokenizeHyperInput.prototype.select = function (offset) {
  if (document.activeElement !== this) this.focus();
  this.applyData(this.value, offset);
};
TokenizeHyperInput.prototype.scrollIntoRange = function (range) {
  var elementBound = range.getBoundingClientRect();
  var viewportBound = this.getBoundingClientRect();
  var dBottom = 0;
  if (range.startContainer && range.startContainer.data && range.startContainer.data.charAt(range.startContainer.data.length - 1) == '\n') dBottom += this.getFontSize() * 1.5;
  var currentScrollTop = this.scrollTop;
  var newScrollTop = currentScrollTop;
  if (elementBound.bottom + dBottom > viewportBound.bottom) {
    newScrollTop = currentScrollTop + (elementBound.bottom + dBottom - viewportBound.bottom);
  }
  if (elementBound.top < viewportBound.top) {
    newScrollTop = currentScrollTop - (viewportBound.top - elementBound.top);
  }
  if (newScrollTop != currentScrollTop) {
    this.scrollTop = newScrollTop;
  }
  var currentScrollLeft = this.scrollLeft;
  var newScrollLeft = currentScrollLeft;
  if (elementBound.right > viewportBound.right) {
    newScrollLeft = currentScrollLeft + (elementBound.right - viewportBound.right);
  }
  if (elementBound.left < viewportBound.left) {
    newScrollLeft = currentScrollLeft - (viewportBound.left - elementBound.left);
  }
  if (newScrollLeft != currentScrollLeft) {
    this.scrollLeft = newScrollLeft;
  }
};
TokenizeHyperInput.prototype.undo = function () {
  this.historyCtrl.undo();
};
TokenizeHyperInput.prototype.redo = function () {
  this.historyCtrl.redo();
};
TokenizeHyperInput.prototype.commitChange = function (text, offset) {
  this.historyCtrl.commit(text, offset);
  this.emit('change', {}, this);
};
TokenizeHyperInput.prototype.waitToCommit = function (text, offset) {
  var thisInput = this;
  if (this._commitTimeout > 0) clearTimeout(this._commitTimeout);
  this._commitTimeout = setTimeout(function () {
    thisInput.commitChange(text, offset);
  }, textDelay);
};
TokenizeHyperInput.prototype.getPosition = function (node, offset) {
  if (!node) return NaN;
  if (node === this) return offset;
  var parent = node.parentElement;
  if (!parent) return NaN;
  var text = '';
  var child;
  var lastBr = false;
  for (var i = 0; i < parent.childNodes.length; ++i) {
    child = parent.childNodes[i];
    if (child == node) break;
    text += this.stringOf(child);
  }
  return this.getPosition(parent, text.length + offset);
};
TokenizeHyperInput.prototype.getSelectPosition = function () {
  return this.selectionCtrl.getOffset();
};

/**
 * @type {TokenizeHyperInput}
 */
TokenizeHyperInput.eventHandler = {};
TokenizeHyperInput.eventHandler.paste = function (event) {
  var _this = this;
  var clipboardData = event.clipboardData || window.clipboardData;
  if (!clipboardData) {
    alert('Input not support browser without clipboard API!');
    return;
  }
  if (clipboardData.items) {
    var items = Array.prototype.slice.call(clipboardData.items);
    var imgItems = items.filter(function (item) {
      return item.type.indexOf('image') >= 0;
    });
    var fileItems = items.filter(function (item) {
      return item.type !== 'text/plain' && item.type.indexOf('image') < 0;
    });
    var plainTextItems = items.filter(function (item) {
      return item.type.indexOf('text/plain') >= 0;
    });
    if (imgItems.length > 0) {
      var imgFiles = imgItems.map(function (it) {
        return it.getAsFile();
      });
      this.emit('pasteimg', {
        target: this,
        imageFile: imgFiles[0],
        imageFiles: imgFiles,
        originalEvent: event
      }, this);
    }
    if (fileItems.length > 0) {
      var files = fileItems.map(function (item) {
        return item.getAsFile();
      });
      this.emit('pastefile', {
        target: this,
        file: files[0],
        files: files,
        originalEvent: event
      }, this);
    }
    if (plainTextItems.length > 0) {
      var plainTextItem = plainTextItems[0]; //only one item
      plainTextItem.getAsString(function (text) {
        _this.textCtrl.insertText(text);
      });
    }
    event.preventDefault();
  } else {
    var text = event.clipboardData.getData('text/plain');
    if (text) {
      event.preventDefault();
      this.textCtrl.insertText(text);
    }
  }
  this.waitToCommit();
};
TokenizeHyperInput.eventHandler.keydown = function (event) {
  var _this2 = this;
  this.prevKey = {
    time: new Date().getTime(),
    value: (0, _keyboard.keyboardEventToKeyBindingIdent)(event)
  };
  setTimeout(function () {
    _this2.selectionCtrl.onSelect();
    _this2.waitToCommit();
  }, textDelay);
};

/***
 * @this TokenizeHyperInput
 * @param event
 */
TokenizeHyperInput.eventHandler.mouseup = function (event) {
  this.prevKey = {
    time: new Date().getTime(),
    value: 'mouseup'
  };
  this.selectionCtrl.onSelect();
};
TokenizeHyperInput.property = {};
TokenizeHyperInput.property.value = {
  set: function set(value) {
    value = value || '';
    this.textCtrl.setText(value);
    // this.applyData(value, value.length);
    this.commitChange(value, value.length);
  },
  get: function get() {
    return this.textCtrl.getText();
  }
};
TokenizeHyperInput.property.disabled = {
  set: function set(value) {
    value = !!value;
    if (value === this.hasClass('as-disabled')) return;
    if (value) {
      this.addClass('as-disabled');
      this.attr({
        contenteditable: undefined,
        oncut: 'return false',
        onpaste: 'return false',
        onkeydown: 'if(event.metaKey) return true; return false;'
      });
    } else {
      this.removeClass('as-disabled');
      this.attr({
        contenteditable: true,
        oncut: undefined,
        onpaste: undefined,
        onkeydown: undefined
      });
    }
  },
  get: function get() {
    return this.hasClass('as-disabled');
  }
};
TokenizeHyperInput.property.tagList = {
  get: function get() {
    return (0, _utils.getTagListInTextMessage)(this.value);
  }
};
TokenizeHyperInput.property.tagMap = {
  set: function set(o) {
    var _this3 = this;
    o = o || {};
    this._tagMap = o;
    Array.prototype.forEach.call(this.childNodes, function (child) {
      var id, text;
      if (child.classList && child.classList.contains('as-tag-token')) {
        id = child.getAttribute('data-text') || '';
        id = id.substring(5, id.length - 1);
        text = _this3._tagMap[id];
        if (text) {
          child.getAttribute('data-display', '@' + text);
          child.firstChild.data = '@' + text;
        }
      }
    });
  },
  get: function get() {
    return this._tagMap;
  }
};
_ACore["default"].install(TokenizeHyperInput);
var _default = TokenizeHyperInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.findNextTextNode = findNextTextNode;
exports.findPrevTextNode = findPrevTextNode;
exports.isTokenText = exports.isToken = exports.isText = exports.isNewLine = exports.getLastTextNode = exports.getFirstTextNode = void 0;
exports.text2ContentElements = text2ContentElements;
exports.tokenizeMessageText = tokenizeMessageText;
var _EmojiAnims = __webpack_require__(98541);
var _ACore = __webpack_require__(34093);
var _TITextController = __webpack_require__(46867);
function tokenizeMessageText(text) {
  var emojis = _EmojiAnims.EmojiAnimByIdent;
  var splitter = Object.keys(_EmojiAnims.EmojiAnimByIdent).concat(['\n']);
  var tagTokens = text.match(/@\[id:\d+]/g) || [];
  var otherTokens = text.split(/@\[id:\d+]/g);
  var tokens = otherTokens.reduce(function (ac, cr, i) {
    ac.push(cr);
    if (i < tagTokens.length) ac.push(tagTokens[i]);
    return ac;
  }, []);
  tokens = splitter.reduce(function (chain, splitter) {
    return chain.reduce(function (ac, token) {
      var subChain = token.split(splitter);
      for (var i = 0; i < subChain.length; ++i) {
        if (subChain[i]) {
          ac.push(subChain[i]);
        }
        if (i + 1 < subChain.length) {
          ac.push(splitter);
        }
      }
      return ac;
    }, []);
  }, tokens);
  tokens = tokens.map(function (text) {
    var tagId;
    if (text === '\n') {
      return {
        type: 'NEW_LINE'
      };
    } else if (emojis[text]) {
      return {
        type: 'EMOJI',
        value: text
      };
    } else if (text.match(/^@\[id:\d+]$/)) {
      tagId = text.substring(5, text.length - 1);
      return {
        type: "TAG",
        value: tagId
      };
    } else return {
      type: 'TEXT',
      value: text
    };
  });
  return tokens;
}
var isText = function isText(node) {
  return node && node.nodeType === Node.TEXT_NODE;
};
exports.isText = isText;
var isNewLine = function isNewLine(node) {
  return node && node.tagName === 'BR';
};

/***
 *
 * @param {Text|AElement}node
 * @returns {null|*}
 */
exports.isNewLine = isNewLine;
var getFirstTextNode = function getFirstTextNode(node) {
  if (node.nodeType === Node.TEXT_NODE || node.tagName === 'BR') return node;
  var nodes = node.childNodes;
  var res = null;
  for (var i = 0; i < nodes.length && !res; ++i) {
    res = res || getFirstTextNode(nodes[i]);
  }
  return res;
};
exports.getFirstTextNode = getFirstTextNode;
var getLastTextNode = function getLastTextNode(node) {
  if (node.nodeType === Node.TEXT_NODE || node.tagName === 'BR') return node;
  var nodes = node.childNodes;
  var res = null;
  for (var i = nodes.length - 1; i > 0 && !res; --i) {
    res = res || getLastTextNode(node);
  }
  return res;
};
exports.getLastTextNode = getLastTextNode;
var isTokenText = function isTokenText(node) {
  if (node.nodeType !== Node.TEXT_NODE) return false;
  return isToken(node.parentElement);
};
exports.isTokenText = isTokenText;
var isToken = function isToken(node) {
  return node && node.classList && (node.classList.contains('as-emoji-token') || node.classList.contains('as-tag-token'));
};
exports.isToken = isToken;
function findNextTextNode(root, current) {
  var nextTextNode = function nextTextNode(node) {
    var res = null;
    var next = node.nextSibling;
    while (next && !res) {
      res = getFirstTextNode(next);
      next = next.nextSibling;
    }
    if (!res && node.parentElement !== root) {
      res = nextTextNode(node.parentElement);
    }
    return res;
  };
  return nextTextNode(current);
}
function findPrevTextNode(root, current) {
  var prevTextNode = function prevTextNode(node) {
    var res = null;
    var prev = node.previousSibling;
    while (prev && !res) {
      res = getLastTextNode(prev);
      prev = prev.previousSibling;
    }
    if (!res && node.parentElement !== root) {
      res = prevTextNode(node.parentElement);
    }
    return res;
  };
  return prevTextNode(current);
}
function text2ContentElements(text, opt) {
  return tokenizeMessageText(text).map(function (token) {
    var textOfTag;
    switch (token.type) {
      case 'NEW_LINE':
        return (0, _ACore._)('br');
      case 'EMOJI':
        return (0, _ACore._)({
          tag: 'span',
          "class": 'as-emoji-token',
          attr: {
            'data-display': _TITextController.EMPTY_2_SPACES,
            'data-text': token.value
          },
          child: {
            text: _TITextController.EMPTY_2_SPACES
          }
        });
      case 'TAG':
        textOfTag = opt.tagMap && opt.tagMap[token.value];
        return (0, _ACore._)({
          tag: 'span',
          "class": 'as-tag-token',
          attr: {
            'data-text': '@[id:' + token.value + ']',
            'data-display': textOfTag ? '@' + textOfTag : '@[id:' + token.value + ']'
          },
          child: {
            text: textOfTag ? '@' + textOfTag : '@[id:' + token.value + ']'
          }
        });
      case 'TEXT':
      default:
        return (0, _ACore._)({
          text: token.value
        });
    }
  });
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _EventEmitter = __webpack_require__(46833);
var STATE_INIT = 0;
var STATE_ATTACHED = 1;
var STATE_RELEASED = 2;
var STATE_FIRED = 3;
var STATE_DESTROYED = 4;

/***
 *
 * @param {AElement[]|AElement} eltList
 * @param {"click"|"mousedown"} eventType
 * @param {function} callback
 * @param {number=} initAfter
 * @param {number=} fireDelay
 * @param {*[]=} args
 * @constructor
 */
function BlurTrigger(eltList, eventType, callback, initAfter, fireDelay, args) {
  this.args = args || [];
  this.callback = callback;
  this.eltTargets = eltList || [];
  this.initAfter = initAfter || 0;
  this.fireDelay = fireDelay || 0;
  this.state = STATE_INIT;
  this.eventType = eventType;
  this['ev_mouse'] = this.ev_mouse.bind(this);
  this['ev_blur'] = this.ev_blur.bind(this);
  if (this.initAfter > 0) {
    setTimeout(this._attach.bind(this));
  } else this._attach();
}
BlurTrigger.prototype._attach = function () {
  if (this.state !== STATE_INIT) return;
  document.addEventListener(this.eventType, this.ev_mouse);
  window.addEventListener('blur', this.ev_blur);
  this.state = STATE_ATTACHED;
};
BlurTrigger.prototype._fire = function () {
  if (this.state !== STATE_RELEASED) return;
  this.callback.apply(this, this.args);
  this.state = STATE_FIRED;
};
BlurTrigger.prototype._release = function () {
  if (this.state !== STATE_ATTACHED) return;
  document.removeEventListener(this.eventType, this.ev_mouse);
  window.removeEventListener('blur', this.ev_blur);
  this.state = STATE_RELEASED;
};
BlurTrigger.prototype.destroy = function () {
  if (this.state === 4) return;
  if (this.state === STATE_ATTACHED) this._release();
  this.state = STATE_DESTROYED;
};
BlurTrigger.prototype._prepareFire = function () {
  if (this.fireDelay > 0) {
    setTimeout(this._fire.bind(this), this.fireDelay);
  } else {
    this._fire();
  }
};
BlurTrigger.prototype.ev_mouse = function (event) {
  var hit = false;
  if (this.eltTargets instanceof Array) {
    hit = this.eltTargets.some(function (elt) {
      return (0, _EventEmitter.hitElement)(elt, event);
    });
  } else if (typeof hit === "function") {
    hit = this.eltTargets.call(this, event.target);
  }
  if (!hit) {
    this._release();
    this._prepareFire();
  }
};
BlurTrigger.prototype.ev_blur = function () {
  setTimeout(function () {
    if (this.state !== STATE_ATTACHED) return;
    var tagName = document.activeElement && document.activeElement.tagName || '';
    tagName = tagName.toLowerCase();
    if (tagName === 'iframe') {
      this._release();
      this._prepareFire();
    }
  }.bind(this), 0);
};
var _default = BlurTrigger;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
/**
 * @deprecated use TextMeasure instead
 * @param opts
 * @constructor
 */
function TextMeasurement(opts) {
  opts = opts || {};
  this.chars = opts.chars || (" !\"$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "[\\]^_abcdefghijklmnopqrstuvwxyz{|}" + "¥©ÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚÝàáâãèéêìíñòóôõùúýĂăĐđĨĩŨũƠơƯưẠ̌̀́̃̉Р" + "ийксуẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾếỀềỂểỄễỆệỈỉỊị" + "ỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợỤụỦủỨứỪừỬửỮữỰựỲỳỴỵỶỷỸỹ–’“”…₫€?").split('');
  this.computed = Object.assign({}, opts.computed || {});
}
TextMeasurement.prototype.compute = function (font) {
  if (this.computed[font]) return true;
  if (!('document' in window)) return false;
  if (!this.canvas) {
    this.canvas = document.createElement('canvas');
    this.ctx = this.canvas.getContext('2d');
  }
  var ctx = this.ctx;
  ctx.font = font;
  var data = {};
  var charBoxes = {};
  data.charBoxes = charBoxes;
  var c, d, i, j;
  var metrics;
  var n = this.chars.length;
  var chars = this.chars;
  for (i = 0; i < n; ++i) {
    c = chars[i];
    metrics = ctx.measureText(c);
    charBoxes[c] = metrics.width;
  }
  var spacing = {};
  data.spacing = spacing;
  var pair;
  for (i = 0; i < n; ++i) {
    c = chars[i];
    for (j = 0; j < n; ++j) {
      d = chars[j];
      pair = c + d;
      metrics = ctx.measureText(pair);
      spacing[pair] = metrics.width - charBoxes[c] - charBoxes[d];
    }
  }
  this.computed[font] = data;
  return true;
};

/***
 *
 * @param {string} text
 * @param {string=} font
 * @return {number}
 */
TextMeasurement.prototype.measureTextWidth = function (text, font) {
  var l = text.length;
  if (l === 0) return 0;
  var width = 0;
  var data = this.computed[font];
  var charBoxes = data.charBoxes;
  var spacing = data.spacing;
  var c, pc;
  pc = text[0];
  width += charBoxes[pc] || charBoxes['0'];
  for (var i = 1; i < l; ++i) {
    c = text[i];
    width += spacing[pc + c];
    width += charBoxes[c] || charBoxes['0'];
    pc = c;
  }
  return width;
};
var _default = TextMeasurement;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _TTRow = _interopRequireWildcard(__webpack_require__(66511));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
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; }
/***
 *
 * @param {TTTable}table
 * @param {TTDBody} data
 * @constructor
 */
function TTBody(table, data) {
  var _this = this;
  this.table = table;
  this.data = data;
  this.elt = this.table.elt.$body;
  /***
   *
   * @type {TTRow[]}
   */
  this.rows = (this.data.rows || []).map(function (rowData) {
    return new _TTRow["default"](_this, rowData, null);
  });
  this.clonedRows = null;
  this.renderRows();
}
TTBody.prototype.applyQueryResult = function (queryResult) {
  this.clearClonedRows();
  if (queryResult) {
    this.table.elt.addClass('as-searching');
    this.clonedRows = this.rows.filter(function (row) {
      return queryResult[row.id];
    }).map(function (row, i) {
      return new _TTRow.TTClonedRow(row, queryResult, i);
    });
    this.clonedRows.sort(function (a, b) {
      var sa = a.score[1];
      var sb = b.score[1];
      if (sa !== sb) return sb - sa;
      return a.idx - b.idx;
    });
    this.renderRows(this.clonedRows);
    this.table.elt.notifySizeChange();
  } else {
    this.table.elt.removeClass('as-searching');
    this.renderRows();
  }
};
TTBody.prototype.clearClonedRows = function () {
  if (this.clonedRows) this.clonedRows.forEach(function (row) {
    return row.detach();
  });
  this.clonedRows = null;
};

/***
 *
 */
TTBody.prototype.renderRows = function (rows) {
  rows = rows || this.rows;
  this.elt.clearChild().addChild(rows.reduce(function (ac, row) {
    row.getRowElements(ac);
    return ac;
  }, []));
};

/***
 *
 * @param data
 */
TTBody.prototype.rowOf = function (data) {
  if (data instanceof _TTRow["default"]) {
    data = data.data;
  }
  var result = null;
  var queue = this.rows.slice();
  var cr;
  while (queue.length > 0 && !result) {
    cr = queue.shift();
    if (cr.data === data || cr.data.id === data || data.id && cr.data.id === data.id) {
      result = cr;
    } else {
      queue.push.apply(queue, cr.subRows);
    }
  }
  return result;
};

/***
 *
 * @param {TTDRow} rowData
 */
TTBody.prototype.addRow = function (rowData) {
  var _this2 = this;
  var row = new _TTRow["default"](this, rowData, null);
  this.data.rows.push(rowData);
  this.rows.push(row);
  var elements = row.getRowElements();
  elements.forEach(function (elt) {
    return _this2.elt.addChild(elt);
  });
  _ResizeSystem["default"].requestUpdateSignal();
};
var _default = TTBody;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _DTBodyCell = _interopRequireDefault(__webpack_require__(47817));
var _utils = __webpack_require__(84512);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {TTRow} row
 * @param {TTDCell} data
 * @constructor
 */
function TTCell(row, data) {
  this.row = row;
  this.data = data;
}
Object.defineProperty(TTCell.prototype, 'elt', {
  get: function get() {
    var _this = this;
    if (!this._elt) {
      this._elt = (0, _ACore._)({
        tag: 'td',
        "class": 'as-tree-table-cell',
        props: {
          ttCell: this
        },
        on: {
          click: function click(event) {
            if (_this.data && _this.data.on && _this.data.on.click) {
              _this.data.on.click.call(_this._elt, event, _this);
            }
          }
        }
      });
      if (typeof this.data["class"] === "string") {
        (0, _utils.addElementClassName)(this._elt, this.data["class"]);
      }
      if (this.data.attr) this._elt.attr(this.data.attr);
      if (this.data["class"]) this._elt.addClass(this.data["class"]);
      if (this.data.style) this._elt.addStyle(this.data.style);
      this.row.body.table.elt.mAdapter.renderBodyCell(this.elt, this.data, this);
    }
    return this._elt;
  }
});
Object.defineProperty(TTCell.prototype, 'innerText', Object.getOwnPropertyDescriptor(_DTBodyCell["default"].prototype, 'innerText'));
var _default = TTCell;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _TTTable = _interopRequireDefault(__webpack_require__(26033));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {TreeTable} tableElt
 * @param opt
 * @constructor
 */
function TTDataAdapter(tableElt, opt) {
  this.tableElt = tableElt;
  this.data = null;
  Object.assign(this, opt || {});
}
TTDataAdapter.prototype.render = function () {
  if (this.tableElt.table) {}
  this.tableElt.table = new _TTTable["default"](this.tableElt, this.data);
};

/***
 *
 * @param {AElement} elt
 * @param {TTDHeadCell} data
 * @param {TTHeadCell} controller
 */
TTDataAdapter.prototype.renderHeadCell = function (elt, data, controller) {
  if (data.child) {
    if (data.child.map) {
      elt.addChild(data.child.map(function (it) {
        return (0, _ACore._)(it);
      }));
    } else {
      elt.addChild((0, _ACore._)(data.child));
    }
  }
  if (data.render) {
    data.render.call(null, elt, data, controller);
  }
  if (data.style) {
    elt.addStyle(data.style);
  }
};

/***
 *
 * @param {AElement} elt
 * @param {TTDCell} data
 * @param {TTCell} controller
 */
TTDataAdapter.prototype.renderBodyCell = function (elt, data, controller) {
  if (data.child) {
    if (data.child.map) {
      elt.addChild(data.child.map(function (it) {
        return (0, _ACore._)(it);
      }));
    } else {
      elt.addChild((0, _ACore._)(data.child));
    }
  }
  if (data.render) {
    data.render.call(null, elt, data, controller);
  }
  if (data.style) {
    elt.addStyle(data.style);
  }
  if (data["class"]) {
    elt.addClass(data["class"]);
  }
  if (data.attr) {
    elt.attr(data.attr);
  }
};
var _default = TTDataAdapter;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _TTHeadRow = _interopRequireDefault(__webpack_require__(16955));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {TTTable} table
 * @param {TTDHead} data
 * @constructor
 */
function TTHead(table, data) {
  var _this = this;
  this.data = data;
  this.table = table;
  this.elt = this.table.elt.$head;
  this.rows = (this.data.rows || []).map(function (rowData) {
    return new _TTHeadRow["default"](_this, rowData);
  });
  this.elt.clearChild().addChild(this.rows.map(function (r) {
    return r.elt;
  }));
}
var _default = TTHead;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
/***
 *
 * @param {TTHeadRow} row
 * @param {TTDHeadCell} data
 * @constructor
 */
function TTHeadCell(row, data) {
  this.row = row;
  this.data = data;
  this.elt = (0, _ACore._)({
    tag: 'th',
    "class": 'as-tree-table-head-cell'
  });
  if (data.attr) this.elt.attr(data.attr);
  if (data.style) this.elt.addStyle(data.style);
  this.row.head.table.elt.mAdapter.renderHeadCell(this.elt, this.data, this);
}
TTHeadCell.prototype.render = function () {};
var _default = TTHeadCell;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _TTHeadCell = _interopRequireDefault(__webpack_require__(25105));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
 *
 * @param {TTHead} head
 * @param {TTDHeadRow} data
 * @constructor
 */
function TTHeadRow(head, data) {
  var _this = this;
  this.head = head;
  this.data = data;
  this.cells = this.data.cells.map(function (cellData) {
    return new _TTHeadCell["default"](_this, cellData);
  });
  this.elt = (0, _ACore._)({
    tag: 'tr',
    "class": 'as-tree-table-head-row'
  });
  this.elt.addChild(this.cells.map(function (cell, i) {
    return cell.elt.attr('data-col-idx', '' + i);
  }));
}
var _default = TTHeadRow;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _ListSearchMaster = _interopRequireDefault(__webpack_require__(85604));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {TreeTable} elt
 * @constructor
 */
function TTQueryController(elt) {
  this.searchMaster = new _ListSearchMaster["default"]();
  this.elt = elt;
  this.$filterInputs = [];
  this.$searchInput = null;
  this['request'] = this['request'].bind(this);
  this._waitDestroy();
  this._rtsiIdx = -1;
}
TTQueryController.prototype._waitDestroy = function () {
  var _this = this;
  setTimeout(function () {
    if (_this.elt.isDescendantOf(document.body)) {
      _this._waitDestroy();
    } else {
      _this.searchMaster.destroy();
    }
  }, 10000);
};
TTQueryController.prototype.attachFilterInput = function (input) {
  if (this.$filterInputs.indexOf(input) >= 0) return;
  if (input.detachTreeTable) input.detachTreeTable();
  input.$treeTable = this;
  if ((0, _ACore.$)(input).isSupportedEvent('stoptyping')) {
    input.on('stoptyping', this.request);
  } else {
    input.on('change', this.request);
  }
  input.detachTreeTable = this.detachFilterInput.bind(this, input);
  this.$filterInputs.push(input);
};
TTQueryController.prototype.detachFilterInput = function (input) {
  var idx = this.$filterInputs.indexOf(input);
  if (idx < 0) return;
  this.$filterInputs.splice(idx, 1);
  input.off(this.$searchInput.isSupportedEvent('stoptyping') ? 'stoptyping' : 'change', this.request);
  input.detachTreeTable = null;
};
TTQueryController.prototype.attachSearchInput = function (input) {
  if (this.$searchInput === input) return;
  if (input.detachTreeTable) input.detachTreeTable();
  this.$searchInput = input;
  if ((0, _ACore.$)(input).isSupportedEvent('stoptyping')) {
    input.on('stoptyping', this.request);
  } else {
    input.on('change', this.request);
  }
  input.detachTreeTable = this.detachSearchInput.bind(this, input);
};
TTQueryController.prototype.detachSearchInput = function (input) {
  input = input || this.$searchInput;
  if (input !== this.$searchInput) return;
  input.off(this.$searchInput.isSupportedEvent('stoptyping') ? 'stoptyping' : 'change', this.request);
  input.detachTreeTable = null;
  this.$searchInput = null;
};
TTQueryController.prototype.makeQuery = function () {
  var res = {};
  if (this.$searchInput && this.$searchInput.value.trim().length > 0) {
    res.text = this.$searchInput.value.trim();
  }
  for (var key in res) {
    return res;
  }
  return null;
};
TTQueryController.prototype.request = function () {
  var _this2 = this;
  var query = this.makeQuery();
  if (query) this.searchMaster.query(query).then(function (searchResult) {
    _this2.elt.table.body.applyQueryResult(searchResult);
  });else this.elt.table.body.applyQueryResult(null);
};
TTQueryController.prototype.getSearchItems = function () {
  var getSearchItemOf = function getSearchItemOf(row) {
    var res = {};
    res.text = row.innerText;
    res.value = row.id;
    if (row.subRows && row.subRows.length > 0) {
      res.items = row.subRows.map(getSearchItemOf);
    }
    return res;
  };
  return this.elt.table.body.rows.map(getSearchItemOf);
};
TTQueryController.prototype.transferSearchItems = function () {
  this.searchMaster.transfer(this.getSearchItems());
};
TTQueryController.prototype.requestTransferSearchItems = function () {
  var _this3 = this;
  if (this._rtsiIdx > 0) return;
  this._rtsiIdx = setTimeout(function () {
    _this3._rtsiIdx = -1;
    _this3.transferSearchItems();
  }, 0);
};
var _default = TTQueryController;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.TTClonedRow = TTClonedRow;
exports["default"] = void 0;
var _ACore = __webpack_require__(34093);
var _TTCell = _interopRequireDefault(__webpack_require__(50487));
var _DTBodyRow = _interopRequireDefault(__webpack_require__(7674));
var _utils = __webpack_require__(84512);
var _stringGenerate = __webpack_require__(10713);
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {TTBody} body
 * @param {TTDRow}data
 * @param parentRow
 * @constructor
 */
function TTRow(body, data, parentRow) {
  var _this = this;
  this.id = (0, _stringGenerate.randomIdent)(8);
  this.level = parentRow ? parentRow.level + 1 : 0;
  this.body = body;
  this.data = data;
  this.parentRow = parentRow;
  this.clonedRow = null;
  this.cells = (this.data.cells || []).map(function (cellData) {
    return new _TTCell["default"](_this, cellData);
  });
  this.subRows = (this.data.subRows || []).map(function (rowData) {
    return new TTRow(body, rowData, _this);
  });
  if (!(0, _utils.isNone)(data.id) && data.subRows && data.subRows.length > 0 && data.id in this.body.table.elt.savedState) {
    this.isOpened = !!this.body.table.elt.savedState[data.id];
  } else if (typeof data.initOpened === 'boolean') {
    this.isOpened = data.initOpened;
  } else if (typeof body.table.data.initOpened === "boolean") {
    this.isOpened = body.table.data.initOpened;
  } else if (typeof body.table.elt.initOpen === 'boolean') {
    this.isOpened = body.table.elt.initOpen;
  }
}
TTRow.prototype.isOpened = false;

/***
 *
 * @param {Array<AElement>=} ac
 */
TTRow.prototype.getRowElements = function (ac) {
  ac = ac || [];
  ac.push(this.elt);
  if (this.isOpened) {
    this.subRows.forEach(function (row) {
      return row.getRowElements(ac);
    });
  }
  return ac;
};
TTRow.prototype.toggle = function () {
  if (this.isOpened) this.close();else this.open();
};
TTRow.prototype.open = function () {
  if (this.isOpened) return;
  if (this.subRows.length === 0) return;
  this.isOpened = true;
  if (!(0, _utils.isNone)(this.data.id) && this.cells)
    //real node
    this.body.table.elt.savedState[this.data.id] = this.isOpened;
  this.elt.addClass('as-is-opened');
  var rowElements = this.getRowElements();
  rowElements.shift();
  var bodyElt = this.body.elt;
  var bf = this.body.elt.findChildAfter(this.elt);
  if (bf) {
    rowElements.forEach(function (elt) {
      return bodyElt.addChildBefore(elt, bf);
    });
  } else {
    bodyElt.addChild(rowElements);
  }
  this.updateSizeUp();
};
TTRow.prototype.close = function () {
  if (!this.isOpened) return;
  var rowElements = this.getRowElements();
  rowElements.shift();
  rowElements.forEach(function (elt) {
    return elt.remove();
  });
  this.isOpened = false;
  if (!(0, _utils.isNone)(this.data.id) && this.cells) this.body.table.elt.savedState[this.data.id] = this.isOpened;
  this._elt.removeClass('as-is-opened');
  this.updateSizeUp();
};
TTRow.prototype.updateSizeUp = function () {
  this.body.table.elt.notifySizeChange();
};
TTRow.prototype.remove = function () {
  var _this2 = this;
  var idx = -1;
  var rowElements;
  var removeRow = function removeRow(idx, rows, dataRows) {
    rows.splice(idx, 1);
    dataRows.splice(idx, 1);
    if (_this2.clonedRow) _this2.clonedRow.remove();
    if (_this2.elt.parentElement) {
      rowElements = _this2.clonedRow ? _this2.clonedRow.getRowElements() : _this2.getRowElements();
      rowElements.forEach(function (elt) {
        return elt.selfRemove();
      });
      _ResizeSystem["default"].requestUpdateSignal();
    }
    _this2.body.table.elt.queryCtrl.requestTransferSearchItems();
  };
  if (this.parentRow) {
    idx = this.parentRow.subRows.indexOf(this);
    if (idx >= 0) {
      removeRow(idx, this.parentRow.subRows, this.parentRow.data.subRows);
      if (this.parentRow.subRows.length === 0) this.parentRow.elt.removeClass('as-has-sub-row');
    }
  } else {
    idx = this.body.rows.indexOf(this);
    if (idx >= 0) {
      removeRow(idx, this.body.rows, this.body.data.rows);
    }
  }
};

/***
 * @param {TTDRow} rowData
 */
TTRow.prototype.addSubRow = function (rowData) {
  var _this3 = this;
  var row = new TTRow(this.body, rowData, this);
  var clonedRow;
  if (this.clonedRow) clonedRow = new TTClonedRow(row, null, this.subRows.length); //idx is not important
  var rowElements;
  var bf;
  if (this.elt.parentElement && this.isOpened) {
    rowElements = this.clonedRow ? this.clonedRow.getRowElements() : this.getRowElements();
    bf = this.body.elt.findChildAfter(rowElements[rowElements.length - 1]);
    rowElements = clonedRow ? clonedRow.getRowElements() : row.getRowElements();
    if (bf) {
      rowElements.forEach(function (elt) {
        return _this3.body.elt.addChildBefore(elt, bf);
      });
    } else {
      rowElements.forEach(function (elt) {
        return _this3.body.elt.addChild(elt);
      });
    }
    _ResizeSystem["default"].requestUpdateSignal();
  }
  this.subRows.push(row);
  if (this.data.subRows) {
    this.data.subRows.push(rowData);
  } else {
    this.data.subRows = [rowData];
  }
  if (this.clonedRow) this.clonedRow.addSubRow(clonedRow);
  if (this._elt) this.elt.addClass('as-has-sub-row');
  this.body.table.elt.queryCtrl.requestTransferSearchItems();
};

/***
 *
 @param {TTDRow} newRowData
 */
TTRow.prototype.replace = function (newRowData) {
  var _this4 = this;
  var idx = -1;
  var rowElements;
  var bf;
  var newRow;
  var newClonedRow;
  var needView;
  var makeReplaceRow = function makeReplaceRow(idx, rows, dataRows) {
    newRow = new TTRow(_this4.body, newRowData, _this4.parentRow);
    rows.splice(idx, 1, newRow);
    dataRows.splice(idx, 1, newRowData);
    if (_this4.clonedRow) {
      newClonedRow = new TTClonedRow(newRow, null, idx);
      _this4.clonedRow.replace(newClonedRow);
    }
    if (_this4.elt.parentElement) {
      rowElements = _this4.clonedRow ? _this4.clonedRow.getRowElements() : _this4.getRowElements();
      bf = _this4.body.elt.findChildAfter(rowElements[rowElements.length - 1]);
      rowElements.forEach(function (elt) {
        return elt.selfRemove();
      });
      rowElements = newClonedRow ? newClonedRow.getRowElements() : newRow.getRowElements();
      if (bf) {
        rowElements.forEach(function (elt) {
          return _this4.body.elt.addChildBefore(elt, bf);
        });
      } else {
        rowElements.forEach(function (elt) {
          return _this4.body.elt.addChild(elt);
        });
      }
      _ResizeSystem["default"].requestUpdateSignal();
    }
    _this4.body.table.elt.queryCtrl.requestTransferSearchItems();
  };
  if (this.parentRow) {
    idx = this.parentRow.subRows.indexOf(this);
    if (idx >= 0) {
      makeReplaceRow(idx, this.parentRow.subRows, this.parentRow.data.subRows);
    }
  } else {
    idx = this.body.rows.indexOf(this);
    if (idx >= 0) {
      makeReplaceRow(idx, this.body.rows, this.body.data.rows);
    }
  }
};

/***
 *
 @param {TTDRow} newRowData
 */
TTRow.prototype.addRowBefore = function (newRowData) {
  var _this5 = this;
  var idx = -1;
  var makeNewRowBefore = function makeNewRowBefore(idx, rows, dataRows) {
    var row, clonedRow;
    var rowElements;
    row = new TTRow(_this5.body, newRowData, _this5.parentRow);
    if (_this5.clonedRow) {
      clonedRow = new TTClonedRow(row, null, idx);
    }
    if (_this5.elt.parentElement) {
      rowElements = clonedRow ? clonedRow.getRowElements() : row.getRowElements();
      rowElements.forEach(function (elt) {
        return _this5.body.elt.addChildBefore(elt, _this5.elt);
      });
      _ResizeSystem["default"].requestUpdateSignal();
    }
    rows.splice(idx, 0, row);
    dataRows.splice(idx, 0, newRowData);
    if (_this5.clonedRow) {
      _this5.clonedRow.addRowBefore(clonedRow);
    }
    _this5.body.table.elt.queryCtrl.requestTransferSearchItems();
  };
  if (this.parentRow) {
    idx = this.parentRow.subRows.indexOf(this);
    if (idx >= 0) {
      makeNewRowBefore(idx, this.parentRow.subRows, this.parentRow.data.subRows);
    }
  } else {
    idx = this.body.rows.indexOf(this);
    if (idx >= 0) {
      makeNewRowBefore(idx, this.body.rows, this.body.data.rows);
    }
  }
};
/***
 *
 @param {TTDRow} newRowData
 */
TTRow.prototype.addRowAfter = function (newRowData) {
  var _this6 = this;
  var idx = -1;
  var rowElements;
  var bf;
  var makeNewRowAfter = function makeNewRowAfter(idx, rows, dataRows) {
    var row = new TTRow(_this6.body, newRowData, _this6.parentRow);
    var clonedRow;
    if (_this6.clonedRow) clonedRow = new TTClonedRow(row, null, idx);
    if (_this6.elt.parentElement) {
      rowElements = _this6.clonedRow ? _this6.clonedRow.getRowElements() : _this6.getRowElements();
      bf = _this6.body.elt.findChildAfter(rowElements[rowElements.length - 1]);
      rowElements = clonedRow ? clonedRow.getRowElements() : row.getRowElements();
      if (bf) {
        rowElements.forEach(function (elt) {
          return _this6.body.elt.addChildBefore(elt, bf);
        });
      } else {
        rowElements.forEach(function (elt) {
          return _this6.body.elt.addChild(elt);
        });
      }
      _ResizeSystem["default"].requestUpdateSignal();
    }
    rows.splice(idx + 1, 0, row);
    dataRows.splice(idx + 1, 0, newRowData);
    if (_this6.clonedRow) _this6.clonedRow.addRowBefore(clonedRow);
    _this6.body.table.elt.queryCtrl.requestTransferSearchItems();
  };
  if (this.parentRow) {
    idx = this.parentRow.subRows.indexOf(this);
    if (idx >= 0) {
      makeNewRowAfter(idx, this.parentRow.subRows, this.parentRow.data.subRows);
    }
  } else {
    idx = this.body.rows.indexOf(this);
    if (idx >= 0) {
      makeNewRowAfter(idx, this.body.rows, this.body.data.rows);
    }
  }
};
Object.defineProperty(TTRow.prototype, 'elt', {
  get: function get() {
    var _this7 = this;
    if (!this._elt) {
      this._elt = (0, _ACore._)({
        tag: 'tr',
        "class": 'as-tree-table-row',
        attr: {
          'data-level': this.level + ''
        },
        props: {
          ttRow: this
        }
      });
      if (this.data.id) this._elt.attr('data-id', this.data.id);
      if (this.isOpened) this._elt.addClass('as-is-opened');
      if (this.subRows.length > 0) this._elt.addClass('as-has-sub-row');
      this._elt.addChild(this.cells.map(function (cell, i) {
        return cell.elt.attr('data-col-idx', i + '');
      }));
      if (this.data.on && typeof this.data.on.click === "function") {
        this._elt.on('click', function (event) {
          _this7.data.on.click.call(_this7._elt, event, _this7);
        });
      }
      this.$toggle = (0, _ACore.$)('.as-tree-table-toggle', this._elt);
      if (this.$toggle) {
        this.$toggleCell = this.$toggle.parentElement;
        this.$toggleCell.addClass('as-has-toggle');
        this.$toggle = (0, _ACore._)({
          elt: this.$toggle,
          child: 'toggler-ico',
          on: {
            click: function click() {
              if (_this7.clonedRow) {
                _this7.clonedRow.toggle();
              } else {
                _this7.toggle();
              }
            }
          }
        });
      }
    }
    return this._elt;
  }
});
Object.defineProperty(TTRow.prototype, 'innerText', Object.getOwnPropertyDescriptor(_DTBodyRow["default"].prototype, 'innerText'));
var _default = TTRow;
/***
 *
 * @param {TTRow} origin
 * @param queryResult
 * @param idx
 * @constructor
 */
exports["default"] = _default;
function TTClonedRow(origin, queryResult, idx) {
  this.body = origin.body;
  this.idx = idx;
  this.id = origin.id;
  this._elt = origin.elt;
  this.elt = origin.elt;
  this.data = origin.data;
  this.origin = origin;
  this.score = queryResult && queryResult[this.id];
  if (!queryResult) this.score = 1e6;
  this.isOpened = this.score && this.score[0] <= this.score[1];
  this.attach();
  if (this.isOpened) {
    this.subRows = this.origin.subRows.filter(function (row) {
      return queryResult[row.id];
    }).map(function (row, i) {
      return new TTClonedRow(row, queryResult, i);
    });
    this.subRows.sort(function (a, b) {
      var sa = a.score[1];
      var sb = b.score[1];
      if (sa !== sb) return sb - sa;
      return a.idx - b.idx;
    });
  } else {
    this.subRows = this.origin.subRows.map(function (row, i) {
      return new TTClonedRow(row, queryResult, i);
    });
  }
}
['toggle', 'open', 'close', 'getRowElements', 'updateSizeUp'].forEach(function (key) {
  TTClonedRow.prototype[key] = TTRow.prototype[key];
});
TTClonedRow.prototype.remove = function () {
  var parentRow = this.origin.parentRow && this.origin.parentRow.clonedRow;
  var idx;
  if (parentRow) {
    idx = parentRow.subRows.indexOf(this);
    if (idx >= 0) {
      parentRow.subRows.splice(idx, 1);
    }
  } else {
    idx = this.origin.body.clonedRows.indexOf(this);
    if (idx >= 0) {
      this.origin.body.clonedRows.splice(idx, 1);
    }
  }
};
TTClonedRow.prototype.replace = function (newClonedRow) {
  var parentRow = this.origin.parentRow && this.origin.parentRow.clonedRow;
  var idx;
  if (parentRow) {
    idx = parentRow.subRows.indexOf(this);
    if (idx >= 0) {
      parentRow.subRows.splice(idx, 1, newClonedRow);
    }
  } else {
    idx = this.origin.body.clonedRows.indexOf(this);
    if (idx >= 0) {
      this.origin.body.clonedRows.splice(idx, 1, newClonedRow);
    }
  }
};
TTClonedRow.prototype.addRowBefore = function (newClonedRow) {
  var parentRow = this.origin.parentRow && this.origin.parentRow.clonedRow;
  var idx;
  if (parentRow) {
    idx = parentRow.subRows.indexOf(this);
    if (idx >= 0) {
      parentRow.subRows.splice(idx, 0, newClonedRow);
    }
  } else {
    idx = this.origin.body.clonedRows.indexOf(this);
    if (idx >= 0) {
      this.origin.body.clonedRows.splice(idx, 0, newClonedRow);
    }
  }
};
TTClonedRow.prototype.addRowAfter = function (newClonedRow) {
  var parentRow = this.origin.parentRow && this.origin.parentRow.clonedRow;
  var idx;
  if (parentRow) {
    idx = parentRow.subRows.indexOf(this);
    if (idx >= 0) {
      parentRow.subRows.splice(idx + 1, 0, newClonedRow);
    }
  } else {
    idx = this.origin.body.clonedRows.indexOf(this);
    if (idx >= 0) {
      this.origin.body.clonedRows.splice(idx + 1, 0, newClonedRow);
    }
  }
};
TTClonedRow.prototype.addSubRow = function (newClonedRow) {
  this.subRows.push(newClonedRow);
};
TTClonedRow.prototype.attach = function () {
  if (this.isOpened) {
    this.origin.elt.addClass('as-is-opened');
  } else {
    this.origin.elt.removeClass('as-is-opened');
  }
  this.origin.clonedRow = this;
};
TTClonedRow.prototype.detach = function () {
  if (this.origin.isOpened) {
    this.origin.elt.addClass('as-is-opened');
  } else {
    this.origin.elt.removeClass('as-is-opened');
  }
  this.origin.clonedRow = null;
  this.subRows.forEach(function (row) {
    return row.detach();
  });
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _TTHead = _interopRequireDefault(__webpack_require__(18743));
var _TTBody = _interopRequireDefault(__webpack_require__(15190));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {TreeTable} elt
 * @param data
 * @constructor
 */
function TTTable(elt, data) {
  this.data = data;
  this.elt = elt;
  this.head = new _TTHead["default"](this, this.data.head);
  this.body = new _TTBody["default"](this, this.data.body);
}
var _default = TTTable;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.ttStructAdapter2TTDAdapter = ttStructAdapter2TTDAdapter;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _TTDataAdapter = _interopRequireDefault(__webpack_require__(59868));
var _noop = _interopRequireDefault(__webpack_require__(5025));
var _DynamicCSS = _interopRequireDefault(__webpack_require__(30401));
__webpack_require__(38322);
var _TTQueryController = _interopRequireDefault(__webpack_require__(56190));
var _datetime = __webpack_require__(58286);
var _LinearColorTinyBar = _interopRequireDefault(__webpack_require__(96026));
var _utils = __webpack_require__(84512);
var _attribute = __webpack_require__(18144);
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _printer = __webpack_require__(97397);
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
var _Vec = _interopRequireDefault(__webpack_require__(73316));
var _Modal = _interopRequireDefault(__webpack_require__(4061));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
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; }
/***
 * @typedef {Object} TTDHeadCell
 * @property {AbsolConstructDescriptor|Array<AbsolConstructDescriptor>|AElement} [child]
 * @property {function(elt:AElement, data:TTDHeadCell, controller:TTCell): void} render
 * @property {CSSStyleDeclaration} style
 */

/***
 * @typedef {Object} TTDHeadRow
 * @property {Array<TTDHeadCell>} cells
 * @property {Array<TTDHeadRow>} subRows
 */

/***
 * @typedef {Object} TTDHead
 * @property {Array<TTDHeadRow>} rows
 */

/***
 * @typedef {Object} TTDCell
 * @property {AbsolConstructDescriptor|Array<AbsolConstructDescriptor>|AElement} [child]
 * @property {function(elt:AElement, data:TTDCell, controller:TTCell): void} render
 * @property {CSSStyleDeclaration} [style]
 * @property {string|Array<string>} class
 * @property {Object} attr
 */

/***
 * @typedef {Object} TTDRow
 * @property {Array<TTDCell>} cells
 * @property {Array<TTDRow>} subRows
 * @property {string} [id]
 *
 */

/***
 * @typedef {Object} TTDHead
 * @property {Array<TTDHeadRow>} rows
 */

/***
 * @typedef {Object} TTDBody
 * @property {Array<TTDRow>} rows
 */

/***
 * @typedef {Object} TTData
 * @property {TTDHead} head
 * @property {TTDBody} body
 * @property {boolean} [initOpened]
 */

/***
 * @typedef {Object} TTDAdapter
 * @property {TTData} data
 */

var _loadCss = function loadCss() {
  var dynamicCss = new _DynamicCSS["default"]();
  dynamicCss.setRules(Array(20).fill(null).reduce(function (ac, cr, i) {
    ac[".as-tree-table-row[data-level=\"".concat(i, "\"] .as-tree-table-toggle::before")] = {
      width: 2 * i + 'em'
    };
    ac[['.as-tree-table.as-hide-col-' + i + ' td[data-col-idx="' + i + '"]', '.as-tree-table.as-hide-col-' + i + ' th[data-col-idx="' + i + '"]'].join(',')] = {
      display: 'none'
    };
    ac[".as-tree-table-row[data-level=\"".concat(i, "\"] .as-tree-table-cell.as-has-toggle")] = {
      'padding-left': "calc(5px + ".concat(2 * i + 1.5, "em)")
    };
    ac[".as-printer-content .as-tree-table-row[data-level=\"".concat(i, "\"] .as-tree-table-cell.as-has-toggle")] = {
      'padding-left': "calc(5px + ".concat(2 * i, "em)")
    };
    return ac;
  }, {})).commit();
  _loadCss = _noop["default"];
};

/***
 * @extends AElement
 * @constructor
 */
function TreeTable() {
  _loadCss();
  this._hiddenColumns = [];
  this.$head = (0, _ACore.$)('thead', this);
  this.$body = (0, _ACore.$)('tbody', this);
  this.savedState = {};
  /**
   *
   * @type {null|TTTable}
   */
  this.table = null;
  /***
   *
   * @type {null|TTDataAdapter}
   */

  this.mAdapter = null;
  this.queryCtrl = new _TTQueryController["default"](this);
  this.rowMoveTool = new TTRowMoveTool(this);
  /***
   * @name adapter
   * @type TTDAdapter
   * @memberOf TreeTable#
   */
  /***
   * @name searchInput
   * @type SearchTextInput
   * @memberOf TreeTable#
   */
}

TreeTable.tag = 'TreeTable'.toLowerCase();
TreeTable.render = function () {
  return (0, _ACore._)({
    extendEvent: ['orderchange'],
    tag: 'table',
    "class": 'as-tree-table',
    child: [{
      tag: 'thead',
      "class": 'as-tree-table-head'
    }, {
      tag: 'tbody'
    }]
  });
};
TreeTable.prototype.removeRow = function (rowData) {
  if (!this.table) return;
  var row = this.table.body.rowOf(rowData);
  if (row) row.remove();
};
TreeTable.prototype.replaceRow = function (rowData, oldRowData) {
  if (!this.table) return;
  var row = this.table.body.rowOf(oldRowData);
  if (row) row.replace(rowData);
};
TreeTable.prototype.getRows = function () {
  return this.table.body.rows.slice();
};

/***
 *
 * @param rowData
 * @param {any|null} parentRow
 */
TreeTable.prototype.addRowIn = function (rowData, parentRow) {
  if (!this.table) return;
  var row;
  if (parentRow) {
    row = this.table.body.rowOf(parentRow);
    if (row) row.addSubRow(rowData);else {
      console.error('Can not find row', parentRow);
    }
  } else {
    this.table.body.addRow(rowData);
  }
};
TreeTable.prototype.addRow = function (rowData) {
  if (!this.table) return;
  this.table.body.addRow(rowData);
};
TreeTable.prototype.addRows = function (rowDataArr) {
  var _this = this;
  if (!this.table) return;
  rowDataArr.forEach(function (rowData) {
    _this.table.body.addRow(rowData);
  });
};

/***
 *
 * @param rowData
 * @param {any|null} bfRow
 */
TreeTable.prototype.addRowBefore = function (rowData, bfRow) {
  if (!this.table) return;
  var row;
  if (bfRow) {
    row = this.table.body.rowOf(bfRow);
    if (row) row.addRowBefore(rowData);else {
      console.error('Can not find row', bfRow);
    }
  } else {
    this.table.body.addRow(rowData);
  }
};

/***
 *
 * @param rowData
 * @param {any|null} atRow
 */
TreeTable.prototype.addRowAfter = function (rowData, atRow) {
  if (!this.table) return;
  var row;
  if (atRow) {
    row = this.table.body.rowOf(atRow);
    if (row) row.addRowAfter(rowData);else {
      console.error('Can not find row', atRow);
    }
  } else {
    if (this.table.body.rows.length === 0) {
      this.table.body.addRow(rowData);
    } else {
      this.table.body.rows[0].addRowBefore(rowData);
    }
  }
};
TreeTable.prototype.rowOf = function (rowData) {
  return this.table.body.rowOf(rowData);
};
TreeTable.prototype.viewIntoRow = function (row) {
  var _this2 = this;
  var counter = 300;
  var wait = function wait() {
    counter--;
    if (_this2.isDescendantOf(document.body)) {
      row = _this2.rowOf(row);
      if (row) {
        (0, _utils.vScrollIntoView)(row.elt);
      }
    } else if (counter > 0) {
      setTimeout(wait, 30);
    }
  };
  setTimeout(wait, 10);
};
TreeTable.prototype.notifySizeChange = function () {
  var c = this.parentElement;
  while (c) {
    if (typeof c.updateSize === 'function') c.updateSize();else if (typeof c.requestUpdateSize === 'function') c.requestUpdateSize();
    c = c.parentElement;
  }
};
TreeTable.prototype.attachSearchInput = function (input) {
  this.searchInput = input;
};
TreeTable.property = {};
TreeTable.property.adapter = {
  set: function set(adapter) {
    if (adapter.type === 'struct') {
      adapter = ttStructAdapter2TTDAdapter(adapter);
    }
    this._adapterData = adapter;
    if (adapter && adapter.data) {
      adapter.data.initOpened = adapter.data.initOpened || adapter.initOpened; //adapt param
    }

    this.mAdapter = new _TTDataAdapter["default"](this, adapter);
    this.mAdapter.render();
    this.queryCtrl.transferSearchItems();
    var c = this.parentElement;
    while (c) {
      if (c.hasClass && c.hasClass('absol-table-vscroller') && c.update) {
        c.update();
        break;
      }
      c = c.parentElement;
    }
    _ResizeSystem["default"].requestUpdateSignal();
    var td = (0, _ACore.$)('td', this);
    if (td) {
      var attachhook = (0, _ACore._)('attachhook').once('attached', function () {
        attachhook.remove();
        _ResizeSystem["default"].requestUpdateSignal();
      }).addTo(td);
    }
  },
  get: function get() {
    return this._adapterData;
  }
};
TreeTable.property.filterInputs = {
  set: function set(inputs) {},
  get: function get() {}
};
TreeTable.property.searchInput = {
  set: function set(input) {
    if (input) this.queryCtrl.attachSearchInput(input);else this.queryCtrl.detachSearchInput();
  },
  get: function get() {
    return this.queryCtrl.$searchInput;
  }
};
TreeTable.property.hiddenColumns = {
  set: function set(value) {
    value = value || [];
    this._hiddenColumns.forEach(function (idxV) {
      this.removeClass('as-hide-col-' + idxV);
    }.bind(this));
    this._hiddenColumns = value;
    this._hiddenColumns.forEach(function (idxV) {
      this.addClass('as-hide-col-' + idxV);
    }.bind(this));
    var c = this.parentElement;
    while (c) {
      if (c.hasClass && (c.hasClass('absol-table-vscroller') || c.hasClass('absol-table-scroller')) && (c.update || c.updateContent)) {
        (c.update || c.updateContent).call(c);
        break;
      }
      c = c.parentElement;
    }
    if (this.isDescendantOf(document.body)) _ResizeSystem["default"].update();
  },
  get: function get() {
    return this._hiddenColumns;
  }
};
_ACore["default"].install(TreeTable);
var _default = TreeTable;
/**
 *
 * @param {TreeTable} elt
 * @constructor
 */
exports["default"] = _default;
function TTRowMoveTool(elt) {
  this.elt = elt;
  this.dragListenners = {
    dragstart: this.ev_dragStart.bind(this),
    drag: this.ev_drag.bind(this),
    dragend: this.ev_dragEnd.bind(this),
    dragdeinit: this.ev_dragDeinit.bind(this)
  };
  this.$body = (0, _ACore._)({
    tag: _Hanger["default"],
    elt: this.elt.$body,
    props: {
      hangOn: 3
    }
  }).on('draginit', this.ev_dragInit.bind(this));
  /**
   *
   * @type {null|TTRow}
   */
  this.inParent = null;
  /**
   *
   * @type {null|TTRow}
   */
  this.row = null;
  this.siblingRows = [];
  this.siblingBounds = [];
}
TTRowMoveTool.prototype._getZIndex = function () {
  var res = 0;
  var c = this.elt;
  while (c) {
    res = Math.max(res, parseInt(getComputedStyle(c).getPropertyValue('z-index'), 10) || 0);
    c = c.parentElement;
  }
  return res;
};
TTRowMoveTool.prototype.ev_dragInit = function (event) {
  var row = this._findRow(event.target, true);
  if (!row) return;
  if (this.elt.table.body.clonedRows) return; // searching
  this.inParent = row.parentRow;
  this.row = row;
  this.$body.on(this.dragListenners);
  event.preventDefault();
};
TTRowMoveTool.prototype.ev_dragDeinit = function () {
  this.$body.off(this.dragListenners);
};
TTRowMoveTool.prototype.ev_dragStart = function (event) {
  var _this3 = this;
  event.preventDefault();
  var row = this.row;
  var originTableElt = this.elt.table.elt;
  var originBody = originTableElt.lastChild;
  var tableBound = originTableElt.getBoundingClientRect();
  var zIndex = this._getZIndex();
  this.$clonedTable = (0, _ACore.$)(originTableElt.cloneNode(false)).addClass('as-dt-body-row-cloned-ctn'); //reuse class
  this.$clonedTable.addStyle({
    tableLayout: 'fixed',
    width: tableBound.width + 'px',
    zIndex: zIndex + 200
  }).addTo(document.body);
  this.$modal = this.$modal || (0, _ACore._)({
    tag: _Modal["default"],
    style: {
      zIndex: zIndex + 201,
      userSelect: 'none'
    }
  });
  this.$modal.addTo(document.body);
  this.$clonedBody = (0, _ACore.$)(originBody.cloneNode());
  this.$clonedTable.addChild(this.$clonedBody);
  var originRowElt = row.elt;
  this.$clonedRow = (0, _ACore.$)(originRowElt.cloneNode(true)).addStyle({
    backgroundColor: originRowElt.getComputedStyleValue('background-color')
  });
  this.$clonedBody.addChild(this.$clonedRow);
  var rowBound = originRowElt.getBoundingClientRect();
  this.$clonedTable.addStyle({
    top: rowBound.top + 'px',
    left: rowBound.left + 'px'
  });
  this.$newPostLine = this.$newPostLine || (0, _ACore._)('.as-dt-insert-line');
  this.$newPostLine.addStyle({
    left: rowBound.left + 'px',
    width: rowBound.width + 'px'
  });
  this.$newPostLine.addTo(document.body);
  this.rowBond = _Rectangle["default"].fromClientRect(rowBound);
  this.mouseOffset = event.currentPoint.sub(this.rowBond.A());
  Array.prototype.forEach.call(this.$clonedRow.childNodes, function (td, i) {
    var originTd = originRowElt.childNodes[i];
    var bound = originTd.getBoundingClientRect();
    (0, _ACore.$)(td).addStyle({
      'width': bound.width + 'px',
      boxSizing: 'border-box'
    });
  });
  this.siblingRows = this.inParent ? this.inParent.subRows.slice() : this.elt.table.body.rows.slice();
  this.firstSiblingRow = this.inParent ? this.inParent.subRows[0] : this.elt.table.body.rows[0];
  this.siblingBounds = (this.inParent ? this.inParent.subRows : this.elt.table.body.rows).map(function (row) {
    return _this3._boundOfRow(row);
  });
  this.idx = this.siblingRows.indexOf(this.row);
  this.newIdx = this.idx;
  this.$scroller = (0, _utils.findVScrollContainer)(this.elt);
  if (this.$scroller === document.body.parentElement) this.$scroller = null;
  this.overflowCheckITV = setInterval(function () {
    if (!_this3.$scroller) return;
    var scrollerBound = _this3.$scroller.getBoundingClientRect();
    var cloneBound = _this3.$clonedTable.getBoundingClientRect();
    if (cloneBound.height >= scrollerBound.height) return;
    var newScrollTop = _this3.$scroller.scrollTop;
    if (cloneBound.top < scrollerBound.top) {
      newScrollTop = newScrollTop - Math.min(100, (scrollerBound.top - cloneBound.top) / 6);
    } else if (cloneBound.bottom > scrollerBound.bottom) {
      newScrollTop = newScrollTop - Math.min(100, (scrollerBound.bottom - cloneBound.bottom) / 6);
      newScrollTop = Math.min(_this3.$scroller.scrollHeight - _this3.$scroller.clientHeight, newScrollTop);
    }
    newScrollTop = Math.max(0, newScrollTop);
    if (newScrollTop !== _this3.$scroller.scrollTop) {
      _this3.$scroller.scrollTop = newScrollTop;
    }
  }, 33);
};
TTRowMoveTool.prototype._boundOfRow = function (row) {
  var rowElements = row.getRowElements();
  var bound = _Rectangle["default"].fromClientRect(rowElements[0].getBoundingClientRect());
  if (rowElements.length > 1) {
    bound = bound.merge(_Rectangle["default"].fromClientRect(rowElements[rowElements.length - 1].getBoundingClientRect()));
  }
  return bound;
};
TTRowMoveTool.prototype.ev_drag = function (event) {
  event.preventDefault();
  var newPos = event.currentPoint.sub(this.mouseOffset);
  this.$clonedTable.addStyle('top', newPos.y + 'px');
  var firstSiblingRowBound = _Rectangle["default"].fromClientRect(this.firstSiblingRow.elt.getBoundingClientRect());
  var viewDelta = firstSiblingRowBound.A().sub(this.siblingBounds[0].A()).y;
  var y = newPos.y + this.rowBond.height / 2 - viewDelta;
  var beforeIdx = this.siblingBounds.length;
  var rBound;
  for (var i = 0; i < this.siblingBounds.length; ++i) {
    rBound = this.siblingBounds[i];
    if (rBound.centerPoint().y > y) {
      beforeIdx = i;
      break;
    }
  }
  if (beforeIdx === this.idx + 1 || beforeIdx === this.idx) {
    this.$newPostLine.addStyle('display', 'none');
    this.newIdx = this.idx;
  } else {
    this.$newPostLine.removeStyle('display');
    if (beforeIdx < this.siblingBounds.length) {
      this.$newPostLine.addStyle('top', this.siblingBounds[beforeIdx].y + viewDelta + 'px');
      if (beforeIdx < this.idx) {
        this.newIdx = beforeIdx;
      } else {
        this.newIdx = beforeIdx - 1;
      }
    } else {
      this.newIdx = this.siblingBounds.length - 1;
      this.$newPostLine.addStyle('top', this.siblingBounds[this.siblingBounds.length - 1].C().y + viewDelta + 'px');
    }
  }
};
TTRowMoveTool.prototype.ev_dragEnd = function (event) {
  clearInterval(this.overflowCheckITV);
  this.$modal.remove();
  this.$newPostLine.remove();
  this.$clonedTable.remove();
  if (this.newIdx !== this.idx) {
    if (this.inParent) {
      this.inParent.subRows.splice(this.idx, 1);
      this.inParent.subRows.splice(this.newIdx, 0, this.row);
      this.inParent.data.subRows.splice(this.idx, 1);
      this.inParent.data.subRows.splice(this.newIdx, 0, this.row.data);
    } else {
      this.elt.table.body.rows.splice(this.idx, 1);
      this.elt.table.body.rows.splice(this.newIdx, 0, this.row);
      this.elt.table.body.data.rows.splice(this.idx, 1);
      this.elt.table.body.data.rows.splice(this.newIdx, 0, this.row.data);
    }
    this.elt.table.body.renderRows();
    this.elt.emit('orderchange', {
      type: 'orderchange',
      target: this.row,
      inParent: this.inParent || this.elt.table.body,
      inParentData: this.inParent ? this.inParent.data : this.elt.table.body.data,
      from: this.idx,
      to: this.newIdx,
      originalEvent: event,
      row: this.row,
      data: this.row.data,
      devMessage: this.inParent ? 'order change in array event.inParent.subRows' : 'order change in array event.inParent.rows'
    });
  }
};
TTRowMoveTool.prototype._findRow = function (elt, inDraZone) {
  var hitDragZone = false;
  while (elt) {
    if (elt.classList.contains('as-drag-zone')) hitDragZone = true;
    if (elt.ttRow) {
      if (hitDragZone || !inDraZone) return elt.ttRow;
      return null;
    }
    elt = elt.parentElement;
  }
  return null;
};

/***
 *
 * @param adapterData
 * @returns {TTDAdapter}
 */
function ttStructAdapter2TTDAdapter(adapterData) {
  var toString = {
    'Date': function Date(x) {
      return x ? (0, _datetime.formatDateTime)(x, 'dd/MM/yyyy') : '';
    },
    'DateTime': function DateTime(x) {
      return x ? (0, _datetime.formatDateTime)(x, 'dd/MM/yyyy HH:mm') : '';
    },
    text: function text(x) {
      return (x || '') + '';
    }
  };
  var getItemDict = function getItemDict(desc) {
    var dict = desc.__dict__;
    if (!dict) {
      Object.defineProperty(desc, '__dict__', {
        enumerable: false,
        writable: true,
        configurable: true,
        value: (desc.items || []).reduce(function makeDict(ac, cr) {
          var key = (0, _utils.keyStringOf)(cr.value);
          ac[key] = cr;
          if (cr.items && cr.items.reduce) {
            cr.items.reduce(makeDict, ac);
          }
          return ac;
        }, {})
      });
      dict = desc.__dict__;
    }
    return dict;
  };
  var handlers = {
    'Date': function Date(x) {
      return [{
        tag: 'span',
        child: {
          text: x ? (0, _datetime.formatDateTime)(x, 'dd/MM/yyyy') : ''
        }
      }];
    },
    'DateTime': function DateTime(x) {
      return [{
        tag: 'span',
        child: {
          text: x ? (0, _datetime.formatDateTime)(x, 'dd/MM/yyyy HH:mm') : ''
        }
      }];
    },
    text: function text(x) {
      return [{
        tag: 'span',
        child: {
          text: (x || '') + ''
        }
      }];
    },
    performance: function performance(x, desc) {
      return [{
        tag: _LinearColorTinyBar["default"].tag,
        props: {
          colorMapping: desc.colorMapping || 'performance',
          value: x,
          extend: typeof desc.extend === "number" && desc.extend > 0 ? desc.extend : 0.5,
          valueText: typeof x === 'number' ? (x * 100).toFixed(2) + '%' : x + ''
        }
      }];
    },
    "enum": function _enum(x, desc) {
      var dict = getItemDict(desc);
      var item = dict[(0, _utils.keyStringOf)(x)];
      if (item) return [{
        tag: 'span',
        child: {
          text: item.text
        }
      }];else return [{
        tag: 'span',
        child: {
          text: ''
        }
      }];
    },
    '{enum}': function _enum(x, desc) {
      var dict = getItemDict(desc);
      if (!(x instanceof Array)) return [{
        tag: 'span',
        child: {
          text: ''
        }
      }];
      var items = x.map(function (it) {
        return dict[(0, _utils.keyStringOf)(it)];
      }).filter(function (it) {
        return !!it;
      });
      var text = items.map(function (it) {
        return it.text;
      }).join(', ');
      return [{
        tag: 'span',
        child: {
          text: text
        }
      }];
    }
  };
  /**
   *
   * @type {TTDAdapter}
   */
  var res = {
    data: {
      initOpened: true,
      head: {
        rows: [{
          cells: adapterData.propertyNames.map(function (name) {
            var cellData = {
              child: {
                text: name
              }
            };
            var descriptor = adapterData.propertyDescriptors[name];
            if (descriptor && descriptor.text) cellData.child.text = descriptor.text;
            return cellData;
          })
        }]
      },
      body: {
        rows: adapterData.records.map(function visit(it) {
          var row = {};
          row.cells = adapterData.propertyNames.map(function (name) {
            var descriptor = adapterData.propertyDescriptors[name];
            var type = descriptor && descriptor.type || 'text';
            var value = it[name];
            var f = toString[type] || toString.text;
            var text = f(value);
            var handler = handlers[type] || handlers.text;
            var cell = {
              innerText: text,
              attr: {
                'data-type': type
              },
              child: handler(value, descriptor)
            };
            if (name === adapterData.treeBy) {
              cell.child.unshift('.as-tree-table-toggle');
            }
            return cell;
          });
          if (it.__children__) {
            row.subRows = it.__children__.map(visit);
          }
          return row;
        })
      }
    }
  };
  return res;
}
_printer.ShareSerializer.addHandlerBefore({
  id: 'TreeTableCellBorder',
  match: function match(elt, scope, stack) {
    if (!elt.hasClass) return false;
    if (!elt.hasClass('as-tree-table-head-cell') && !elt.hasClass('as-tree-table-cell')) return false;
    var style = getComputedStyle(elt);
    var borderColor = style.getPropertyValue('border-color');
    var borderStyle = style.getPropertyValue('border-style');
    var borderWidth = style.getPropertyValue('border-width');
    var borderRadius = style.getPropertyValue('border-radius');
    if (borderStyle === 'none' || borderWidth === '0px') return false;
    scope.declare('borderStyle', {
      width: parseFloat(borderWidth.replace('px', '')),
      radius: (0, _attribute.parseMeasureValue)(borderRadius),
      color: borderColor
    });
    return true;
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    var borderStyle = scope.get('borderStyle');
    var bound = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    var rect = bound.clone();
    var strokeWidth = borderStyle.width;
    rect.x -= printer.O.x;
    rect.y -= printer.O.y;
    var radius = borderStyle.radius;
    var rounded;
    if (radius) {
      switch (radius.unit) {
        case '%':
          rounded = [radius.value * rect.width / 100, radius.value * rect.height / 100];
          break;
        case 'px':
          rounded = radius.value;
          break;
      }
    }
    printer.rect(rect, {
      stroke: borderStyle.color,
      rounded: rounded,
      strokeWidth: strokeWidth
    });
    return true;
  }
}, 'Border');

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.absCeil = absCeil;
exports.addElementAfter = addElementAfter;
exports.addElementClassName = addElementClassName;
exports.addElementsBefore = addElementsBefore;
exports.buildCss = buildCss;
exports.calcDTQueryHash = calcDTQueryHash;
exports.charWidth = void 0;
exports.checkedValues2RootTreeValues = checkedValues2RootTreeValues;
exports.cleanMenuItemProperty = cleanMenuItemProperty;
exports.clockToMillis = void 0;
exports.contenteditableTextOnly = contenteditableTextOnly;
exports.copySelectionItemArray = copySelectionItemArray;
exports.estimateWidth14 = estimateWidth14;
exports.fileAccept = fileAccept;
exports.fileInfoOf = fileInfoOf;
exports.fileSize2Text = fileSize2Text;
exports.findMaxZIndex = findMaxZIndex;
exports.findVScrollContainer = findVScrollContainer;
exports.formatLocalFloat = formatLocalFloat;
exports.forwardEvent = forwardEvent;
exports.forwardMethod = forwardMethod;
exports.getAncestorElementOf = getAncestorElementOf;
exports.getCaretPosition = getCaretPosition;
exports.getMapZoomLevel = getMapZoomLevel;
exports.getSelectionRangeDirection = getSelectionRangeDirection;
exports.getSelectionText = getSelectionText;
exports.getTagListInTextMessage = getTagListInTextMessage;
exports.getTextNodeBounds = getTextNodeBounds;
exports.implicitLatLng = implicitLatLng;
exports.insertTextAtCursor = insertTextAtCursor;
exports.isDateTimeFormatToken = isDateTimeFormatToken;
exports.isInteger = isInteger;
exports.isNaturalNumber = isNaturalNumber;
exports.isNone = isNone;
exports.isRealNumber = isRealNumber;
exports.isScrolledToBottom = isScrolledToBottom;
exports.isURLAddress = isURLAddress;
exports.jsStringOf = jsStringOf;
exports.keyStringOf = keyStringOf;
exports.latLngDistance = latLngDistance;
exports.listenDomContentChange = listenDomContentChange;
exports.measureText = measureText;
exports.millisToClock = void 0;
exports.nearFloor = nearFloor;
exports.normalizeMinuteOfMillis = void 0;
exports.openFileDialog = openFileDialog;
exports.openYesNoQuestionDialog = openYesNoQuestionDialog;
exports.parseLocalFloat = parseLocalFloat;
exports.positiveIntMod = positiveIntMod;
exports.preventNotNumberInput = preventNotNumberInput;
exports.replaceChildrenInElt = replaceChildrenInElt;
exports.replaceFileInObject = replaceFileInObject;
exports.replaceInObject = replaceInObject;
Object.defineProperty(exports, "revokeResource", ({
  enumerable: true,
  get: function get() {
    return _Object.revokeResource;
  }
}));
exports.rootTreeValues2CheckedValues = rootTreeValues2CheckedValues;
exports.setSelectionRange = setSelectionRange;
exports.swapChildrenInElt = swapChildrenInElt;
exports.swapElt = swapElt;
exports.vScrollIntoView = vScrollIntoView;
exports.wrapText = wrapText;
exports.wrapWord = wrapWord;
exports.zeroPadding = zeroPadding;
var _ACore = _interopRequireWildcard(__webpack_require__(34093));
var _stringUtils = __webpack_require__(26243);
var _YesNoQuestionDialog = _interopRequireDefault(__webpack_require__(57318));
var _Modal = _interopRequireDefault(__webpack_require__(4061));
var _ext2MineType = _interopRequireDefault(__webpack_require__(13578));
var _TextMeasurement = _interopRequireDefault(__webpack_require__(77694));
var _datetime = __webpack_require__(58286);
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _Object = __webpack_require__(84131);
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 _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 getSelectionRangeDirection(range) {
  var sel = document.getSelection();
  var direction = 'forward';
  var cmpPosition = sel.anchorNode.compareDocumentPosition(sel.focusNode);
  if (cmpPosition === 4) {
    direction = 'forward';
  } else if (cmpPosition === 2) {
    direction = 'backward';
  } else if (!cmpPosition && sel.anchorOffset > sel.focusOffset || cmpPosition === Node.DOCUMENT_POSITION_PRECEDING) {
    direction = 'backward';
  }
  return direction;
}

/***
 *
 * @param {Range} range
 * @param {boolean=} backward
 */
function setSelectionRange(range, backward) {
  var sel = document.getSelection();
  if (backward) {
    if (typeof sel.extend != "undefined") {
      var endRange = range.cloneRange();
      endRange.collapse(false);
      sel.removeAllRanges();
      sel.addRange(endRange);
      sel.extend(range.startContainer, range.startOffset);
    }
  } else {
    sel.removeAllRanges();
    sel.addRange(range);
  }
}
function insertTextAtCursor(text) {
  var sel, range;
  if (window.getSelection) {
    sel = window.getSelection();
    if (sel.getRangeAt && sel.rangeCount) {
      range = sel.getRangeAt(0);
      range.deleteContents();
      range.insertNode(document.createTextNode(text));
    }
  } else if (document.selection && document.selection.createRange) {
    document.selection.createRange().text = text;
  }
}
function contenteditableTextOnly(element, processText) {
  if (element.__contenteditableTextOnly__) return;
  element.__contenteditableTextOnly__ = true;
  element.addEventListener("paste", function (e) {
    e.preventDefault();
    if (e.clipboardData && e.clipboardData.getData) {
      var text = e.clipboardData.getData("text/plain");
      if (processText) text = processText(text);
      document.execCommand("insertHTML", false, text);
    } else if (window.clipboardData && window.clipboardData.getData) {
      var text = window.clipboardData.getData("Text");
      if (processText) text = processText(text);
      insertTextAtCursor(text);
    }
  });
}
function getSelectionText() {
  var text = "";
  var activeEl = document.activeElement;
  var activeElTagName = activeEl ? activeEl.tagName.toLowerCase() : null;
  if (activeElTagName == "textarea" || activeElTagName == "input" && /^(?:text|search|password|tel|url)$/i.test(activeEl.type) && typeof activeEl.selectionStart == "number") {
    text = activeEl.value.slice(activeEl.selectionStart, activeEl.selectionEnd);
  } else if (window.getSelection) {
    text = window.getSelection().toString();
  }
  return text;
}

/***
 *
 * @param num
 * @param maxVal
 * @return {number}
 */
function positiveIntMod(num, maxVal) {
  if (maxVal <= 0) return 0;
  if (num >= 0 && num < maxVal) {
    return Math.floor(num);
  } else if (num === Infinity) {
    if (maxVal === Infinity) return Infinity;else return 0;
  } else if (num < 0) {
    return (num + Math.ceil(-num / maxVal) * maxVal) % maxVal;
  } else if (num >= maxVal) {
    return Math.floor(num) % maxVal;
  } else return 0;
}
function nearFloor(x, epsilon) {
  var y = Math.floor(x);
  if (x - y + epsilon >= 1) y++;
  return y;
}
function measureText(text, font) {
  // re-use canvas object for better performance
  var canvas = measureText.canvas || (measureText.canvas = document.createElement("canvas"));
  var context = canvas.getContext("2d");
  if (font) context.font = font;
  var metrics = context.measureText(text);
  return metrics;
}
function getCaretPosition(oField) {
  var iCaretPos = 0;
  if (document.selection) {
    oField.focus();
    var oSel = document.selection.createRange();
    oSel.moveStart('character', -oField.value.length);
    iCaretPos = oSel.text.length;
  } else if (oField.selectionStart || oField.selectionStart == '0') iCaretPos = oField.selectionDirection == 'backward' ? oField.selectionStart : oField.selectionEnd;
  return iCaretPos;
}

/**
 *
 * @param {AElement} elt
 */
function preventNotNumberInput(elt) {
  elt.addEventListener('keyup', function () {
    var lastValue = elt.tagName === "DIV" || elt.tagName === "SPAN" ? elt.innerHTML : elt.attributes.value;
    var cValue = parseFloat(this.value);
    if (this.value != lastValue) {
      elt.attributes.value = cValue;
      elt.emit('change', cValue, elt);
    }
  });
  elt.addEventListener("paste", function (e) {
    e.preventDefault();
    var text = "";
    if (e.clipboardData && e.clipboardData.getData) {
      text = e.clipboardData.getData("text/plain");
    } else if (window.clipboardData && window.clipboardData.getData) {
      text = window.clipboardData.getData("Text");
    }
    var matched = text.match(/[+-]?([0-9]*[.])?[0-9]+/);
    if (matched) {
      this.value = matched[0];
    }
  });
  elt.addEventListener('keydown', function (event) {
    var key = event.key;
    if (key && key.length == 1 && !event.ctrlKey && !event.altKey) {
      if (key.match(/[0-9.\-\+]/)) {
        if (key == '.' && this.value.indexOf('.') >= 0) event.preventDefault();
        if ((key == '+' || key == '-') && (this.value.indexOf('+') >= 0 || this.value.indexOf('-') >= 0 || getCaretPosition(this) > 0)) event.preventDefault();
      } else event.preventDefault();
    }
  });
}
function buildCss(StyleSheet) {
  return (0, _ACore._)({
    tag: 'style',
    props: {
      innerHTML: Object.keys(StyleSheet).map(function (key) {
        var style = StyleSheet[key];
        return key + ' {\n' + Object.keys(style).map(function (propName) {
          return propName + ': ' + style[propName] + ';';
        }).join('\n') + '}';
      }).join('\n')
    }
  }).addTo(document.head);
}
function forwardEvent(elt, fromName, toName) {
  elt.defineEvent(toName);
  elt.on(fromName, function (event) {
    event = Object.assign({}, event);
    event.type = toName;
    this.emit.apply(this, [toName, event].concat(Array.prototype.slice.call(arguments, 1)));
  });
}
function forwardMethod(elt, fromName, toName) {
  elt[fromName] = function () {
    this[toName].apply(this, arguments);
  };
}

/***
 *
 * @param {"camera"|"microphone"|"camcorder"|{accept:("image/*"|"audio/*"|"video/*"|undefined), capture:boolean|undefined, multiple:boolean|undefined}|{}=} props
 * @param {boolean=}unSafe
 *  @return {Promise<File[]>}
 */
function openFileDialog(props, unSafe) {
  return new Promise(function (resolve) {
    var input = _ACore["default"]._({
      tag: 'input',
      style: {
        display: 'none'
      },
      attr: {
        type: 'file'
      }
    }).addTo(document.body);
    props = props || {};
    if (props === 'camera') {
      props = {
        accept: 'image/*',
        capture: 'camera'
      };
    } else if (props === 'microphone') {
      props = {
        accept: 'audio/*',
        capture: "microphone"
      };
    } else if (props === 'camcorder') {
      props = {
        accept: 'video/*',
        capture: 'camcorder'
      };
    }
    if (props.accept) {
      if (props.accept instanceof Array) input.attr('accept', props.accept.join(','));else input.attr('accept', props.accept);
    } else {
      input.attr('accept', null);
    }
    if (props.capture) {
      input.attr('capture', props.capture);
    }
    if (props.multiple) {
      input.attr('multiple', 'true');
    } else {
      input.attr('multiple');
    }
    input.value = null;
    function focusHandler() {
      setTimeout(function () {
        window.removeEventListener('focus', focusHandler);
        if (unSafe) {
          input.off('change', changeHandler);
          input.remove();
          resolve([]);
        }
      }, 1000);
    }
    function changeHandler() {
      input.off('change', changeHandler);
      window.removeEventListener('focus', focusHandler);
      var files = Array.prototype.slice.call(input.files);
      resolve(files);
      input.remove();
    }
    input.on('change', changeHandler);
    input.click();
    setTimeout(function () {
      window.addEventListener('focus', focusHandler);
    }, 10);
  });
}
function openYesNoQuestionDialog(title, message) {
  return new Promise(function (resolve) {
    if (window.ModalElement && window.ModalElement.question) {
      window.ModalElement.question({
        title: title,
        message: message,
        onclick: function onclick(sel) {
          if (sel === 0) {
            resolve(true);
          } else {
            resolve(false);
          }
        }
      });
    } else {
      var modal = (0, _ACore._)({
        tag: _Modal["default"].tag,
        child: {
          tag: _YesNoQuestionDialog["default"].tag,
          props: {
            textYes: 'Có',
            textNo: 'Không',
            message: message,
            dialogTitle: title
          },
          on: {
            action: function action(event) {
              modal.remove();
              resolve(event.action.name === 'yes');
            }
          }
        }
      }).addTo(document.body);
    }
  });
}
var charWidth = {
  "A": 9.337890625,
  "Á": 9.337890625,
  "À": 9.337890625,
  "Ả": 9.337890625,
  "Ã": 9.337890625,
  "Ạ": 9.337890625,
  "a": 7.7861328125,
  "á": 7.7861328125,
  "à": 7.7861328125,
  "ả": 7.7861328125,
  "ã": 7.7861328125,
  "ạ": 7.7861328125,
  "Ă": 9.337890625,
  "Ắ": 9.337890625,
  "Ằ": 9.337890625,
  "Ẳ": 9.337890625,
  "Ẵ": 9.337890625,
  "Ặ": 9.337890625,
  "ă": 7.7861328125,
  "ắ": 7.7861328125,
  "ằ": 7.7861328125,
  "ẳ": 7.7861328125,
  "ẵ": 7.7861328125,
  "ặ": 7.7861328125,
  "Â": 9.337890625,
  "Ấ": 9.337890625,
  "Ầ": 9.337890625,
  "Ẩ": 9.337890625,
  "Ẫ": 9.337890625,
  "Ậ": 9.337890625,
  "â": 7.7861328125,
  "ấ": 7.7861328125,
  "ầ": 7.7861328125,
  "ẩ": 7.7861328125,
  "ẫ": 7.7861328125,
  "ậ": 7.7861328125,
  "B": 9.337890625,
  "b": 7.7861328125,
  "C": 10.1103515625,
  "c": 7,
  "D": 10.1103515625,
  "d": 7.7861328125,
  "Đ": 10.1103515625,
  "đ": 7.7861328125,
  "E": 9.337890625,
  "É": 9.337890625,
  "È": 9.337890625,
  "Ẻ": 9.337890625,
  "Ẽ": 9.337890625,
  "Ẹ": 9.337890625,
  "e": 7.7861328125,
  "é": 7.7861328125,
  "è": 7.7861328125,
  "ẻ": 7.7861328125,
  "ẽ": 7.7861328125,
  "ẹ": 7.7861328125,
  "Ê": 9.337890625,
  "Ế": 9.337890625,
  "Ề": 9.337890625,
  "Ể": 9.337890625,
  "Ễ": 9.337890625,
  "Ệ": 9.337890625,
  "ê": 7.7861328125,
  "ế": 7.7861328125,
  "ề": 7.7861328125,
  "ể": 7.7861328125,
  "ễ": 7.7861328125,
  "ệ": 7.7861328125,
  "G": 10.8896484375,
  "g": 7.7861328125,
  "H": 10.1103515625,
  "h": 7.7861328125,
  "I": 3.8896484375,
  "Í": 3.8896484375,
  "Ì": 3.8896484375,
  "Ỉ": 3.8896484375,
  "Ĩ": 3.8896484375,
  "Ị": 3.8896484375,
  "i": 3.1103515625,
  "í": 3.1103515625,
  "ì": 3.1103515625,
  "ỉ": 3.1103515625,
  "ĩ": 3.1103515625,
  "ị": 3.1103515625,
  "K": 9.337890625,
  "k": 7,
  "L": 7.7861328125,
  "l": 3.1103515625,
  "M": 11.662109375,
  "m": 11.662109375,
  "N": 10.1103515625,
  "n": 7.7861328125,
  "O": 10.8896484375,
  "Ó": 10.8896484375,
  "Ò": 10.8896484375,
  "Ỏ": 10.8896484375,
  "Õ": 10.8896484375,
  "Ọ": 10.8896484375,
  "o": 7.7861328125,
  "ó": 7.7861328125,
  "ò": 7.7861328125,
  "ỏ": 7.7861328125,
  "õ": 7.7861328125,
  "ọ": 7.7861328125,
  "Ô": 10.8896484375,
  "Ố": 10.8896484375,
  "Ồ": 10.8896484375,
  "Ổ": 10.8896484375,
  "Ỗ": 10.8896484375,
  "Ộ": 10.8896484375,
  "ô": 7.7861328125,
  "ố": 7.7861328125,
  "ồ": 7.7861328125,
  "ổ": 7.7861328125,
  "ỗ": 7.7861328125,
  "ộ": 7.7861328125,
  "Ơ": 12.00390625,
  "Ớ": 12.00390625,
  "Ờ": 12.00390625,
  "Ở": 12.00390625,
  "Ỡ": 12.00390625,
  "Ợ": 12.00390625,
  "ơ": 9.1806640625,
  "ớ": 9.1806640625,
  "ờ": 9.1806640625,
  "ở": 9.1806640625,
  "ỡ": 9.1806640625,
  "ợ": 9.1806640625,
  "P": 9.337890625,
  "p": 7.7861328125,
  "Q": 10.8896484375,
  "q": 7.7861328125,
  "R": 10.1103515625,
  "r": 4.662109375,
  "S": 9.337890625,
  "s": 7,
  "T": 8.5517578125,
  "t": 3.8896484375,
  "U": 10.1103515625,
  "Ú": 10.1103515625,
  "Ù": 10.1103515625,
  "Ủ": 10.1103515625,
  "Ũ": 10.1103515625,
  "Ụ": 10.1103515625,
  "u": 7.7861328125,
  "ú": 7.7861328125,
  "ù": 7.7861328125,
  "ủ": 7.7861328125,
  "ũ": 7.7861328125,
  "ụ": 7.7861328125,
  "Ư": 11.9560546875,
  "Ứ": 11.9560546875,
  "Ừ": 11.9560546875,
  "Ử": 11.9560546875,
  "Ữ": 11.9560546875,
  "Ự": 11.9560546875,
  "ư": 9.3720703125,
  "ứ": 9.3720703125,
  "ừ": 9.3720703125,
  "ử": 9.3720703125,
  "ữ": 9.3720703125,
  "ự": 9.3720703125,
  "V": 9.337890625,
  "v": 7,
  "X": 9.337890625,
  "x": 7,
  "Y": 9.337890625,
  "Ý": 9.337890625,
  "Ỳ": 9.337890625,
  "Ỷ": 9.337890625,
  "Ỹ": 9.337890625,
  "Ỵ": 9.337890625,
  "y": 7,
  "ý": 7,
  "ỳ": 7,
  "ỷ": 7,
  "ỹ": 7,
  "ỵ": 7,
  " ": 3.8896484375
};
exports.charWidth = charWidth;
function estimateWidth14(text) {
  // return absol.text.measureText(text, '14px arial').width
  var l = 0;
  for (var j = 0; j < text.length; ++j) {
    l += charWidth[text.charAt(j)] || 9.337890625;
  }
  return l;
}

/**
 *TODO: import from absol-acomp
 * @param {Text} text
 * @param {number=} startOffset
 * @param {number=} endOffset
 * @returns {*[]}
 */
function getTextNodeBounds(text, startOffset, endOffset) {
  if (!text || text.nodeType !== Node.TEXT_NODE || !text.parentElement) return null;
  var style = getComputedStyle(text.parentElement);
  var fontSize = parseFloat(style.getPropertyValue('font-size').replace('px', ''));
  var lineHeight = style.getPropertyValue('line-height');
  if (lineHeight === 'normal') lineHeight = 1.2;else lineHeight = parseFloat(lineHeight.replace('px', '')) / fontSize;
  var txt = text.data;
  var y = -Infinity;
  var c;
  var range;
  var parts = [];
  var cPart;
  var j;
  var delta = lineHeight * fontSize / 3;
  var rect;
  var i = 0;
  if (isNaturalNumber(startOffset)) i = Math.max(startOffset, i);
  if (isNaturalNumber(endOffset)) endOffset = Math.min(txt.length, endOffset);else endOffset = txt.length;
  while (i < endOffset) {
    c = txt[i];
    j = i + 1;
    range = document.createRange();
    range.setStart(text, i);
    range.setEnd(text, j);
    rect = _Rectangle["default"].fromClientRect(range.getBoundingClientRect());
    if (Math.abs(rect.y - y) < delta) {
      cPart.end = j;
      cPart.rect = cPart.rect.merge(rect);
    } else {
      cPart = {
        start: i,
        end: j,
        rect: rect
      };
      y = rect.y;
      parts.push(cPart);
    }
    i = j;
  }
  parts.forEach(function (part) {
    rect = part.rect;
    part.text = txt.substring(part.start, part.end);
  });
  return parts;
}

/***
 *
 * @param {number} v
 * @returns {number}
 */
function absCeil(v) {
  var a = Math.ceil(Math.abs(v));
  return v < 0 ? -a : a;
}

/***
 *
 * @param {number} x
 * @param {number} l
 * @returns {String}
 */
function zeroPadding(x, l) {
  var res = Math.abs(x) + '';
  while (res.length < l) {
    res = '0' + res;
  }
  if (x < 0) res = '-' + res;
  return res;
}
var propertyFilter = ["$trigger", "$content", "_isShow", "defineEvent", "isSupportedEvent", "emit", "fire", "eventEmittorOnWithTime", "on", "once", "off", "init", "eventHandler", "super", "defineAttribute", "defineAttributes", "attr", "addStyle", "removeStyle", "addChild", "addTo", "selfRemove", "selfReplace", "clearChild", "containsClass", "addClass", "removeClass", "getComputedStyleValue", "getFontSize", "findChildAfter", "findChildBefore", "addChildBefore", "addChildAfter", "getBoundingRecursiveRect", "isDescendantOf", "getCSSRules", "afterAttached", "afterDisplayed", "_azar_extendEvents", "__azar_force", "_azar_extendAttributes", "_azar_extendTags", "findAvailablePosition", "$container", "autoFixParentSize", "sync", "$dropper", "$vmenu", "$button", "$text", "$key", "$arrow", "$iconCtn", "_textMarginRight", "_tabIndex", '$icon', '_icon', '$textNode', '$primaryBtn', '$extendBtn', '_menuHolder', '_items', 'hasClass'].reduce(function (ac, cr) {
  ac[cr] = true;
  return ac;
}, {});

/**
 * This is a solution for menu, before a better one.
 * @param obj
 * @returns {{}}
 */
function cleanMenuItemProperty(obj) {
  var res = {};
  var keys = Object.keys(obj);
  var key;
  for (var i = 0; i < keys.length; ++i) {
    key = keys[i];
    if (!propertyFilter[key]) {
      res[key] = obj[key];
    }
  }
  res.text = obj.text;
  if (obj.icon) {
    res.icon = obj.icon;
  }
  if (obj.items) {
    res.items = obj.items;
  }
  return res;
}
function getTagListInTextMessage(text) {
  var rg = /@\[id:(\d+)]/g;
  var matched = rg.exec(text);
  var dict = {};
  var v;
  var res = [];
  while (matched) {
    v = parseInt(matched[1]);
    if (isNaN(v)) v = matched[1];
    if (!dict[v]) {
      dict[v] = true;
      res.push(v);
    }
    matched = rg.exec(text);
  }
  return res;
}

/***
 *
 * @param {AElement} e1
 * @param {AElement} e2
 */
function swapElt(e1, e2) {
  var temp = (0, _ACore._)('div');
  e1.parentElement.replaceChild(temp, e1);
  e2.parentElement.replaceChild(e1, e2);
  temp.parentElement.replaceChild(e2, temp);
}
function swapChildrenInElt(e1, e2) {
  var c1 = Array.prototype.slice.call(e1.childNodes);
  var c2 = Array.prototype.slice.call(e2.childNodes);
  (0, _ACore.$)(e1).clearChild();
  (0, _ACore.$)(e2).clearChild();
  while (c2.length > 0) {
    e1.appendChild(c2.shift());
  }
  while (c1.length > 0) {
    e2.appendChild(c1.shift());
  }
}
function replaceChildrenInElt(elt, childNodes) {
  var nChildren = childNodes.slice();
  var cChildren = Array.prototype.slice.call(elt.childNodes);
  var cC, nC;
  while (cChildren.length > 0 && nChildren.length > 0) {
    cC = cChildren[0];
    nC = nChildren[0];
    if (cC === nC) {
      cChildren.shift();
      nChildren.shift();
    } else {
      break;
    }
  }
  cChildren.forEach(function (elt) {
    elt.remove();
  });
  elt.addChild(nChildren);
}
function findVScrollContainer(elt) {
  if (!elt) return null;
  var parent = elt.parentElement;
  var overflowStyle;
  while (parent) {
    overflowStyle = window.getComputedStyle(parent)['overflow'];
    if ((overflowStyle === 'auto scroll' || overflowStyle === 'auto' || overflowStyle === 'hidden auto' || overflowStyle === 'scroll' || parent.tagName === 'HTML') && parent.clientHeight < parent.scrollHeight) {
      break;
    }
    parent = parent.parentElement;
  }
  if (!parent || parent === document || parent.tagName === "HTML" || parent.tagName === "html") {
    parent = document.body.parentElement;
  }
  return parent;
}

/**
 *
 * @param {HTMLElement} elt
 */
function vScrollIntoView(elt) {
  var parent = findVScrollContainer(elt);
  var eBound = elt.getBoundingClientRect();
  var viewportBound = parent.getBoundingClientRect();
  var currentScrollTop = parent.scrollTop;
  var newScrollTop = currentScrollTop;
  if (eBound.bottom > viewportBound.bottom) {
    newScrollTop = currentScrollTop + (eBound.bottom - viewportBound.bottom);
  }
  if (eBound.top < viewportBound.top) {
    newScrollTop = currentScrollTop - (viewportBound.top - eBound.top);
  }
  if (newScrollTop !== currentScrollTop) {
    parent.scrollTop = newScrollTop;
  }
}
function fileSize2Text(s) {
  if (typeof s !== "number" || isNaN(s)) return '';
  var units = ['B', 'KB', 'MB', 'GB', 'TB'];
  var b = 1;
  for (var i = 0; i < units.length; ++i) {
    if (s <= b * 1024) {
      return Math.floor(s / b * 100) / 100 + units[i];
    }
    b *= 1024;
  }
  return Math.floor(s / b * 10) / 100 + 'PB';
}
function isDateTimeFormatToken(text) {
  //ND: like (Next day)
  return ['d', 'dd', 'M', 'MM', 'y', 'yyyy', 'h', 'hh', 'H', 'HH', 'm', 'mm', 'a', 'w', 'ww', 'Q', 'QQ', 'ND'].indexOf(text) >= 0;
}
var normalizeMinuteOfMillis = function normalizeMinuteOfMillis(mil) {
  mil = mil >> 0;
  mil = Math.floor(mil / 6e4) * 6e4;
  if (mil === _datetime.MILLIS_PER_DAY) return mil;
  mil = mil % _datetime.MILLIS_PER_DAY;
  if (mil < 0) mil += _datetime.MILLIS_PER_DAY;
  return mil;
};

/**
 *
 * @param {number} mil
 * @returns {{hour: number, minute: number, isNextDate: boolean}}
 */
exports.normalizeMinuteOfMillis = normalizeMinuteOfMillis;
var millisToClock = function millisToClock(mil) {
  var res = {};
  res.minute = Math.floor(mil / 6e4) % 60;
  var hour = Math.floor(mil / 36e5);
  if (hour >= 24) {
    res.hour = hour % 24;
    res.isNextDate = true;
  } else {
    res.hour = hour;
  }
  return res;
};
exports.millisToClock = millisToClock;
var clockToMillis = function clockToMillis(hour, minute) {
  var res = hour * _datetime.MILLIS_PER_HOUR + minute * _datetime.MILLIS_PER_MINUTE;
  if (isNaturalNumber(res)) return res;
  return null;
};
exports.clockToMillis = clockToMillis;
function isRealNumber(value) {
  return isFinite(value) && typeof value === "number";
}
function isNaturalNumber(value) {
  return isInteger(value) && value >= 0;
}
function isInteger(value) {
  return isFinite(value) && typeof value === "number" && Math.floor(value) === value;
}

/****
 *
 * @param {string} text
 * @param {{locales?:string}|string =} opt
 */
function parseLocalFloat(text, opt) {
  if (typeof opt === "string") opt = {
    locales: opt
  };
  var locales = opt && opt.locales || window.systemconfig && window.systemconfig.numberFormatLocales;
  var sample = locales ? new Intl.NumberFormat(locales).format(123456.78) : 123456.78.toLocaleString();
  // decimal-separator, thousand-separator.
  var thousandSeparator = sample.match(/3(.?)4/)[1] || '';
  var decimalSeparator = sample.match(/6(.?)7/)[1];
  text = text.replace(new RegExp('[' + thousandSeparator + ']', 'g'), '').replace(new RegExp('[' + decimalSeparator + ']', 'g'), '.');
  return parseFloat(text);
}
function formatLocalFloat(value, opt) {
  if (typeof opt === "string") opt = {
    locales: opt
  };
  var formatOpt = Object.assign({}, opt);
  delete formatOpt.locales;
  var locales = opt && opt.locales || window.systemconfig && window.systemconfig.numberFormatLocales;
  var sample;
  var thousandSeparator;
  var decimalSeparator;
  if (!locales) {
    sample = 123456.78.toLocaleString();
    thousandSeparator = sample.match(/3(.?)4/)[1] || '';
    decimalSeparator = sample.match(/6(.?)7/)[1];
    if (decimalSeparator === '.') locales = 'en-US';else if (decimalSeparator === ',') {
      locales = 'vi-VN';
    }
  }
  return new Intl.NumberFormat(locales, formatOpt).format(value);
}

/***
 *
 * @param {String} text
 * @returns {Boolean}
 */
function isURLAddress(text) {
  if (typeof text != "string") return false;
  return text.startsWith('.') || text.startsWith('http://') || text.startsWith('https://') || text.startsWith('/');
}

/***
 *
 * @param {string | null} pattern
 * @param {string} typeString
 * @returns {boolean}
 */
function fileAccept(pattern, typeString) {
  if (!pattern) return true;
  var parts = pattern.split(',').map(function (x) {
    return x.trim().toLowerCase();
  });
  var ext = typeString.split('.').pop().toLowerCase();
  var mineType = typeString.split('/').shift().toLowerCase();
  return parts.some(function (part) {
    if (part === '*') return true;
    if (part === 'audio/*') {
      return mineType === 'audio' || ['.3gp', '.aa', '.aac', '.aax', '.act', '.aiff', '.alac', '.amr', '.ape', '.au', '.awb', '.dss', '.flac', '.gsm', '.m4a', '.m4b', '.m4p', '.mp3', '.mpc', '.ogg, .oga, .mogg', '.opus', '.ra', '.rm', '.raw', '.rf64', '.sln', '.tta', '.voc', '.vox', '.wav', '.wma', '.wv', '.webm', '.8svx', '.cda'].indexOf(ext) >= 0;
    } else if (part === 'video/*') {
      return mineType === 'video' || ['.webm', '.mkv', '.flv', '.flv', '.vob', '.drc', '.gif', '.gifv', '.mng', '.avi', '.wmv', '.yuv', '.rm', '.rmvb', '.viv', '.asf', '.amv', '.m4v', '.svi', '.3gp', '.3g2', '.mxf', '.roq', '.nsv'].indexOf(ext) >= 0;
    } else if (part === 'image/*') {
      return mineType === 'video' || ["ase", "art", "bmp", "blp", "cd5", "cit", "cpt", "cr2", "cut", "dds", "dib", "djvu", "egt", "exif", "gif", "gpl", "grf", "icns", "ico", "iff", "jng", "jpeg", "jpg", "jfif", "jp2", "jps", "lbm", "max", "miff", "mng", "msp", "nef", "nitf", "ota", "pbm", "pc1", "pc2", "pc3", "pcf", "pcx", "pdn", "pgm", "PI1", "PI2", "PI3", "pict", "pct", "pnm", "pns", "ppm", "psb", "psd", "pdd", "psp", "px", "pxm", "pxr", "qfx", "raw", "rle", "sct", "sgi", "rgb", "int", "bw", "tga", "tiff", "tif", "vtf", "xbm", "xcf", "xpm", "3dv", "amf", "ai", "awg", "cgm", "cdr", "cmx", "dxf", "e2d", "egt", "eps", "fs", "gbr", "odg", "svg", "stl", "vrml", "x3d", "sxd", "v2d", "vnd", "wmf", "emf", "art", "xar", "png", "webp", "jxr", "hdp", "wdp", "cur", "ecw", "iff", "lbm", "liff", "nrrd", "pam", "pcx", "pgf", "sgi", "rgb", "rgba", "bw", "int", "inta", "sid", "ras", "sun", "tga", "heic", "heif"].indexOf(ext) >= 0;
    } else if (part.startsWith('.')) {
      return '.' + ext === part;
    } else {
      return part === ext || part === mineType;
    }
  });
}

/***
 *
 * @param {File|Blob|string|{url:string}} fi
 */
function fileInfoOf(fi) {
  var res = {};
  var handle = function handle(o) {
    var parts;
    if (typeof o === "string") {
      res.name = res.name || (o.split('/').pop() || '').replace(/%([\dA-Fa-f][\dA-Fa-f])/g, function (all, g1) {
        var n = parseInt(g1, 16);
        if (typeof n === "number") {
          return String.fromCharCode(n);
        }
        return all;
      }).replace(/\?.+$/, '');
      if (!res.url && isURLAddress(o)) res.url = o;
      parts = res.name.split('.');
      if (!res.type && parts.length > 1) {
        res.type = parts.pop();
      } else if (typeof res.url === 'string') {
        parts = res.url.split('.');
        res.type = parts.pop();
      }
      if (res.type === 'upload') res.type = parts.pop();
    } else if (_typeof(o) === "object" && o) {
      if (o instanceof Blob) {
        res.mimeType = o.type;
      }
      if (!res.name && typeof o.name === "string") {
        res.name = o.name;
      }
      if (!res.size && typeof o.size === "number") {
        res.size = o.size;
      }
      if (typeof o.url === "string") {
        res.url = o.url;
        handle(o.url);
      }
    }
  };
  handle(fi);
  if (res.name) {
    res.name = res.name.replace(/\.upload$/, '');
  }
  if (!res.type && res.name) {
    res.type = res.name.toLowerCase().split('.').slice(1).pop();
  }
  if (!res.mimeType && res.type) {
    res.mimeType = _ext2MineType["default"][res.type];
  }
  for (var k in res) {
    if (res[k] === undefined) delete res[k];
  }
  return res;
}
function addElementsBefore(inElement, elements, at) {
  for (var i = 0; i < elements.length; ++i) {
    (inElement.addChildBefore || inElement.insertBefore).call(inElement, elements[i], at);
  }
}
function addElementAfter(inElement, elements, at) {
  var atIdx;
  var before;
  var i;
  if (at) {
    atIdx = Array.prototype.indexOf.call(inElement.childNodes, at);
    if (at && atIdx < 0) throw new Error("The node before which the new node is to be inserted is not a child of this node.");
    before = inElement.childNodes[atIdx + 1];
    if (before) {
      for (i = 0; i < elements.length; ++i) {
        (inElement.addChildBefore || inElement.insertBefore).call(inElement, elements[i], before);
      }
    } else {
      for (i = 0; i < elements.length; ++i) {
        (inElement.addChild || inElement.appendChild).call(inElement, elements[i]);
      }
    }
  } else {
    before = inElement.firstChild;
    for (i = 0; i < elements.length; ++i) {
      (inElement.addChildBefore || inElement.insertBefore).call(inElement, elements[i], before);
    }
  }
}
function addElementClassName(elt, className) {
  if (typeof className === "string") {
    className = className.trim().split(/\s+/);
  }
  if (className instanceof Array) {
    className.forEach(function (cls) {
      return elt.classList.add(cls);
    });
  }
}
function findMaxZIndex(elt) {
  var e = elt;
  var style;
  var res = 0;
  while (e && e !== document.body) {
    style = getComputedStyle(e);
    res = Math.max(parseFloat(style.getPropertyValue('z-index')) || 0);
    e = e.parentElement;
  }
  return res;
}
function getAncestorElementOf(elt) {
  while (elt.parentElement) {
    elt = elt.parentElement;
  }
  return elt;
}
function checkedValues2RootTreeValues(items, values) {
  var keyOf = function keyOf(x) {
    return _typeof(x) + x;
  };
  var dict = values.reduce(function (ac, cr) {
    ac[keyOf(cr)] = true;
    return ac;
  }, {});
  var checkScan = function checkScan(item) {
    if (dict[keyOf(item.value)]) return true;
    if (item.items && item.items.length > 0) {
      item.items.forEach(function (sItem) {
        return checkScan(sItem);
      });
      dict[keyOf(item.value)] = item.items.every(function (sItem) {
        return dict[keyOf(sItem.value)];
      });
    }
    return dict[keyOf(item.value)];
  };
  var res = [];
  var scan = function scan(item) {
    if (dict[keyOf(item.value)]) {
      res.push(item.value);
    } else if (item.items && item.items.length > 0) {
      item.items.forEach(function (sItem) {
        return scan(sItem);
      });
    }
  };
  items.forEach(function (sItem) {
    return scan(sItem);
  });
  return res;
}
function rootTreeValues2CheckedValues(items, values) {
  var keyOf = function keyOf(x) {
    return _typeof(x) + x;
  };
  var dict = values.reduce(function (ac, cr) {
    ac[keyOf(cr)] = true;
    return ac;
  }, {});
  var res = [];
  var visit = function visit(item, checked) {
    if (checked) res.push(item.value);
    if (item.items && item.items.length > 0) {
      item.items.forEach(function (cr) {
        return visit(cr, checked || dict[keyOf(cr.value)]);
      });
    }
  };
  items.forEach(function (cr) {
    return visit(cr, dict[keyOf(cr.value)]);
  });
  return res;
}

/***
 *
 * @param {SelectionItem[]} items
 * @param {{removeNoView?: boolean, removeNewLine?:boolean}=} opt
 * @returns {SelectionItem[]}
 */
function copySelectionItemArray(items, opt) {
  opt = opt || {};
  if (opt.removeNoView) {
    items = items.filter(function (item) {
      return !item.noView;
    });
  }
  if (opt.removeNewLine) {
    items.forEach(function (it) {
      if (it.text && it.text.indexOf && it.text.indexOf('\n') >= 0) {
        it.text = it.text.replace(/[\r\n]/g, '');
      }
    });
  }
  return items.map(function (item) {
    var newItem;
    if (_typeof(item) === "object" && 'text' in item) {
      newItem = Object.assign({}, item);
    } else {
      newItem = {
        text: item + '',
        value: item
      };
    }
    if (item.items) {
      newItem.items = copySelectionItemArray(item.items, opt);
    }
    return newItem;
  });
}
function compareSelectionItemArray(a, b) {
  if (a === b) return true;
  var aEmpty = !a || !a.length;
  var bEmpty = !b || !b.length;
  if (!aEmpty && aEmpty === bEmpty) return true;
  if (aEmpty !== bEmpty) return false;
  if (a.length !== b.length) return false;
  var n = a.length;
  var ait, bit;
  for (var i = 0; i < n; ++i) {
    ait = a[i];
    bit = b[i];
    if (ait === bit) continue;
    if (ait.text !== bit.text) return false;
    if (ait.text !== bit.text) return false;
    if (!compareSelectionItemArray(ait.items, bit.items)) return false;
  }
  return true;
}

/***
 *
 * @param {AElement|HTMLElement} element
 * @param {number} padding
 */
function isScrolledToBottom(element, padding) {
  if (!isRealNumber(padding)) padding = 0;
  return element.scrollHeight - element.scrollTop - padding <= element.clientHeight;
}
function implicitLatLng(value) {
  var latlng = null;
  var nums;
  if (typeof value === "string") {
    nums = value.split(/\s*,\s*/).map(function (t) {
      return parseFloat(t);
    });
    if (isRealNumber(nums[0]) && isRealNumber(nums[1])) {
      latlng = new google.maps.LatLng(nums[0], nums[1]);
    }
  } else if (value instanceof google.maps.LatLng) {
    latlng = value;
  } else if (value && isRealNumber(value.latitude) && isRealNumber(value.longitude)) {
    latlng = new google.maps.LatLng(value.latitude, value.longitude);
  } else if (value && isRealNumber(value.lat) && isRealNumber(value.lng)) {
    latlng = new google.maps.LatLng(value.lat, value.lng);
  } else if (value instanceof Array && isRealNumber(value[0]) && isRealNumber(value[1])) {
    latlng = new google.maps.LatLng(value[0], value[1]);
  }
  return latlng;
}
function getMapZoomLevel(mapDim, bounds) {
  var WORLD_DIM = {
    height: 256,
    width: 256
  };
  var ZOOM_MAX = 21;
  function latRad(lat) {
    var sin = Math.sin(lat * Math.PI / 180);
    var radX2 = Math.log((1 + sin) / (1 - sin)) / 2;
    return Math.max(Math.min(radX2, Math.PI), -Math.PI) / 2;
  }
  function zoom(mapPx, worldPx, fraction) {
    return Math.floor(Math.log(mapPx / worldPx / fraction) / Math.LN2);
  }
  var ne = bounds.getNorthEast();
  var sw = bounds.getSouthWest();
  var latFraction = (latRad(ne.lat()) - latRad(sw.lat())) / Math.PI;
  var lngDiff = ne.lng() - sw.lng();
  var lngFraction = (lngDiff < 0 ? lngDiff + 360 : lngDiff) / 360;
  var latZoom = zoom(mapDim.height, WORLD_DIM.height, latFraction);
  var lngZoom = zoom(mapDim.width, WORLD_DIM.width, lngFraction);
  return Math.min(latZoom, lngZoom, ZOOM_MAX);
}

/***
 *
 * @param p0
 * @param p1
 * @returns {number}
 */
function latLngDistance(p0, p1) {
  var lat0 = p0.lat();
  var lat1 = p1.lat();
  var lng0 = p0.lng();
  var lng1 = p1.lng();
  var toRad = function toRad(value) {
    return value * Math.PI / 180;
  };
  var R = 6371;
  var dLat = toRad(lat1 - lat0);
  var dLng = toRad(lng1 - lng0);
  lat0 = toRad(lat0);
  lat1 = toRad(lat1);
  var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.sin(dLng / 2) * Math.sin(dLng / 2) * Math.cos(lat0) * Math.cos(lat1);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  var d = R * c;
  return d;
}
function keyStringOf(o) {
  var type = _typeof(o);
  var keys;
  if (o && type === "object") {
    if (typeof o.getTime === "function") {
      return 'd(' + o.getTime() + ')';
    } else if (typeof o.map === "function") {
      return 'a(' + o.map(function (val) {
        return keyStringOf(val);
      }).join(',') + ')';
    } else {
      keys = Object.keys(o);
      keys.sort();
      return 'o(' + keys.map(function (key) {
        return key + ':' + keyStringOf(o[key]);
      }).join(',') + ')';
    }
  } else {
    return type[0] + '(' + o + ')';
  }
}
function jsStringOf(x) {
  if (x === null) return 'null';
  if (x === undefined) return 'undefined';
  var type = _typeof(x);
  if (type === 'string' || type === 'number') return JSON.stringify(x);
  if (x instanceof Date) return 'new Date(' + x.getTime() + ')';
  var keys;
  keys = Object.keys(x);
  keys.sort();
  return '{' + keys.map(function (key) {
    return JSON.stringify(key) + ':' + jsStringOf(x[key]);
  }).join(',') + '}';
}
function calcDTQueryHash(o) {
  var s = jsStringOf(o);
  return (0, _stringUtils.stringHashCode)(s);
}
function replaceInObject(o, replacer, test) {
  return new Promise(function (rs) {
    var sync = [];
    function visit(so) {
      Object.keys(so).forEach(function (key) {
        var newValue;
        if (test(so[key])) {
          newValue = replacer(so[key], key, so);
          if (newValue && newValue.then) {
            sync.push(newValue);
            newValue.then(function (newValue) {
              return so[key] = newValue;
            });
          } else {
            so[key] = newValue;
          }
        } else if (_typeof(so[key]) === "object" && so[key]) {
          visit(so[key]);
        }
      });
    }
    visit(o);
    Promise.all(sync).then(function () {
      rs(o);
    });
  });
}
function replaceFileInObject(o, replacer) {
  return replaceInObject(o, replacer, function (value, key, object) {
    return value instanceof File || value instanceof Blob;
  });
}
function isNone(x) {
  return x === null || x === undefined;
}
var measureTool = new _TextMeasurement["default"]();
function wrapWord(text, width, font) {
  font = font || '14px arial';
  measureTool.compute(font);
  var res = [];
  var i = 1;
  var prevText = '';
  var curText;
  while (text.length > 0) {
    if (i > text.length && text) {
      res.push(text);
      break;
    }
    curText = text.substring(0, i);
    if (measureTool.measureTextWidth(curText, font) <= width || !prevText) {
      prevText = curText;
    } else {
      text = text.substring(prevText.length).trimStart();
      res.push(prevText);
      prevText = '';
      i = 1;
      continue;
    }
    ++i;
  }
  return res;
}
function wrapText(text, width, font) {
  font = font || '14px arial';
  measureTool.compute(font);
  var res = [];
  var i = 1;
  var prevText = '';
  var prevWidth = 0;
  var curText, curWidth;
  while (text.length > 0) {
    if (i > text.length && text) {
      prevText = text;
      prevWidth = measureTool.measureTextWidth(prevText, font);
      if (prevWidth <= width) {
        res.push(prevText);
      } else {
        res.push.apply(res, wrapWord(prevText, width, font));
      }
      break;
    }
    if (!text[i - 1].match(/[\s\n]/) && (!text[i] || text[i].match(/[\s\n]/))) {
      curText = text.substring(0, i);
      curWidth = measureTool.measureTextWidth(curText, font);
      if (curWidth <= width || !prevText) {
        prevText = curText;
        prevWidth = curWidth;
      } else {
        if (prevWidth <= width) {
          res.push(prevText);
        } else {
          prevText = wrapWord(prevText, width, font).shift();
          res.push(prevText);
        }
        text = text.substring(prevText.length).trimStart();
        prevText = '';
        i = 1;
        continue;
      }
    }
    ++i;
  }
  return res;
}
var listenMethodNames = ['appendChild', 'insertBefore', 'addStyle', 'removeStyle', 'removeChild', 'remove'];
var originalMethodNames = listenMethodNames.map(function (x) {
  return 'original_' + x;
});
function listenDomContentChange(elt, callback) {
  function emit(name, event) {
    if (!callback) return;
    if (name === 'change') {
      if (typeof callback === "function") callback(event);else if (callback.change) {
        callback.change(event);
      }
    } else if (typeof callback[name] === "function") callback[name](event);
  }
  var overrideMethods = listenMethodNames.map(function (name, i) {
    if (i < 2) {
      return function (child) {
        var res = this[originalMethodNames[i]].apply(this, arguments);
        addHook(child);
        emit('change', {
          target: this,
          method: name,
          args: Array.prototype.slice.call(arguments)
        });
        return res;
      };
    } else if (i < 4) {
      return function () {
        var res = this[originalMethodNames[i]].apply(this, arguments);
        if (arguments[0] === 'display') emit('change', {
          target: this,
          method: name,
          args: Array.prototype.slice.call(arguments)
        });
        return res;
      };
    } else if (i < 5) {
      return function (child) {
        var res = this[originalMethodNames[i]].apply(this, arguments);
        removeHook(child);
        emit('change', {
          target: this,
          method: name,
          args: Array.prototype.slice.call(arguments)
        });
        return res;
      };
    } else {
      return function () {
        var res = this[originalMethodNames[i]].apply(this, arguments);
        removeHook(this);
        emit('change', {
          target: this,
          method: name,
          args: Array.prototype.slice.call(arguments)
        });
        return res;
      };
    }
  });
  /**
   *
   * @param {HTMLElement|AElement|Node} child
   */
  var addHook = function addHook(child) {
    if (!child) return;
    if (child.nodeType !== Node.ELEMENT_NODE) return;
    if (child.domHooked) return;
    child.domHooked = true;
    var i;
    var ln;
    for (i = 0; i < listenMethodNames.length; ++i) {
      ln = listenMethodNames[i];
      if (!_AElement["default"].prototype[ln] || _AElement["default"].prototype[ln] === child[ln]) {
        child[originalMethodNames[i]] = child[ln];
        child[ln] = overrideMethods[i];
      }
    }
    if (callback && callback.scrollIntoView) {
      child.scrollIntoView1 = child.scrollIntoView;
      child.scrollIntoView = function () {
        emit('scrollIntoView', {
          target: this,
          method: name,
          args: Array.prototype.slice.call(arguments)
        });
      };
    }
    if (!child._azar_extendTags || Object.keys(child._azar_extendTags).length === 0) {
      for (i = 0; i < child.childNodes.length; ++i) {
        addHook(child.childNodes[i]);
      }
    }
  };
  var removeHook = function removeHook(child) {
    if (!child) return;
    if (child.nodeType !== Node.ELEMENT_NODE) return;
    if (!child.domHooked) return;
    delete child.domHooked;
    var i;
    for (i = 0; i < listenMethodNames.length; ++i) {
      if (child[originalMethodNames[i]]) {
        child[listenMethodNames[i]] = child[originalMethodNames[i]];
        delete child[originalMethodNames[i]];
      }
    }
    if (child.scrollIntoView1) {
      child.scrollIntoView = child.scrollIntoView1;
      delete child.scrollIntoView1;
    }
    for (i = 0; i < child.childNodes.length; ++i) {
      removeHook(child.childNodes[i]);
    }
  };
  addHook(elt);
}

/***/ }),

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

"use strict";


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.openVideUrlDialog = openVideUrlDialog;
var _Fragment = _interopRequireDefault(__webpack_require__(5925));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _Modal = _interopRequireDefault(__webpack_require__(4061));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _ACore = __webpack_require__(34093);
var _MessageDialog = _interopRequireDefault(__webpack_require__(11674));
__webpack_require__(1132);
var _videoUtils = _interopRequireWildcard(__webpack_require__(42217));
var _utils = __webpack_require__(84512);
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 Fragment
 * @constructor
 */
function VideoUrlDialog() {
  var _this = this;
  _Fragment["default"].call(this);
  this.task = null;
  this.pendingResult = null;
  Object.keys(VideoUrlDialog.prototype).filter(function (key) {
    return key.startsWith('ev_');
  }).forEach(function (key) {
    _this[key] = _this[key].bind(_this);
  });
}
_OOP["default"].mixClass(VideoUrlDialog, _Fragment["default"]);
VideoUrlDialog.prototype.cache = {};
VideoUrlDialog.prototype.createView = function () {
  var _this2 = this;
  this.$view = (0, _ACore._)({
    tag: _Modal["default"].tag,
    "class": 'as-video-url-dialog-modal',
    child: {
      tag: _MessageDialog["default"].tag,
      "class": 'as-video-url-dialog',
      props: {
        dialogTitle: 'Video',
        dialogActions: [{
          text: 'OK',
          name: 'ok'
        }, {
          text: 'Cancel',
          name: 'cancel'
        }]
      },
      child: [{
        "class": 'as-video-url-dialog-row',
        child: [{
          tag: 'label',
          child: {
            text: 'URL*'
          }
        }, {
          tag: 'input',
          attr: {
            type: 'text'
          },
          "class": ['as-video-url-dialog-url', 'as-text-input']
        }]
      }, {
        "class": 'as-video-url-dialog-row',
        child: [{
          tag: 'label',
          child: {
            text: 'Video Info'
          }
        }, {
          tag: 'span',
          "class": ['as-video-url-dialog-video-info']
        }]
      }, {
        "class": 'as-video-url-dialog-row',
        child: [{
          tag: 'label',
          child: {
            text: 'Display Size'
          }
        }, {
          tag: 'input',
          "class": ['as-text-input', 'as-video-url-dialog-width'],
          attr: {
            type: 'number',
            min: '4'
          }
        }, {
          tag: 'span',
          child: {
            text: ' x '
          }
        }, {
          tag: 'input',
          "class": ['as-text-input', 'as-video-url-dialog-height'],
          attr: {
            type: 'number',
            min: '3'
          }
        }, {
          tag: 'checkbox',
          style: {
            marginLeft: '1em'
          },
          props: {
            text: 'keep ratio'
          }
        }]
      }, {
        "class": 'as-video-url-dialog-row',
        child: [{
          tag: 'label',
          child: {
            text: 'Preview'
          }
        }, {
          tag: 'img',
          "class": 'as-video-url-dialog-video-image'
        }]
      }]
    }
  });
  var keyTimeout = -1;
  this.$urlInput = (0, _ACore.$)('.as-video-url-dialog-url', this.$view).on('paste', function (event) {
    setTimeout(_this2.ev_urlChange.bind(_this2, event), 100);
  }).on('change', this.ev_urlChange).on('keyup', function (event) {
    if (keyTimeout > 0) {
      clearTimeout(keyTimeout);
    }
    keyTimeout = setTimeout(function () {
      keyTimeout = -1;
      _this2.ev_urlChange(event);
    }, 300);
  });
  this.$dialog = (0, _ACore.$)('.as-video-url-dialog', this.$view).on('action', this.ev_action);
  this.$info = (0, _ACore.$)('.as-video-url-dialog-video-info', this.$view);
  this.$image = (0, _ACore.$)('.as-video-url-dialog-video-image', this.$view);
  this.$width = (0, _ACore.$)('.as-video-url-dialog-width', this.$view).on('change', this.ev_widthChange);
  this.$height = (0, _ACore.$)('.as-video-url-dialog-height', this.$view).on('change', this.ev_heightChange);
  this.$ratio = (0, _ACore.$)('checkbox', this.$view).on('change', this.ev_widthChange);
  this.$actionBtns = (0, _ACore.$$)('.as-message-dialog-footer button', this.$view);
  this.$okBtn = this.$actionBtns[0];
};
VideoUrlDialog.prototype.onStart = function () {
  if (this.$view) {
    this.$urlInput.value = '';
    this.$width.value = '';
    this.$height.value = '';
    this.$info.innerHTML = '';
    this.$image.attr('src', undefined);
    this.$okBtn.disabled = true;
  }
  this._prevUrl = null;
};
VideoUrlDialog.prototype.onResume = function () {
  document.body.appendChild(this.getView());
  /*var testcase = [
      'https://www.facebook.com/watch?v=794088524953444',
      'https://www.youtube.com/watch?v=_YzngEllRgM&list=RDGMEMQ1dJ7wXfLlqCjwV0xfSNbAVMX8mhF6HgzVA&index=14',
      'https://vimeo.com/735513454',
      'https://www.dailymotion.com/video/x8d2trt',
      'https://www.youtube.com/embed/AoN__ZtGenc',
      'https://www.youtube.com',
      'https://absol.cf/share/10h.mp4(1).mp4',
      'https://absol.cf/share',
      'https://www.facebook.com/watch?v=386823333524397'
  ]
  this.$urlInput.value = testcase[0];
  this.ev_urlChange();*/
};

VideoUrlDialog.prototype.onPause = function () {
  this.getView().remove();
};
VideoUrlDialog.prototype.resolveCurrentTask = function (result) {
  if (this.task) {
    this.task.resolve(result || this.pendingResult);
    this.task = null;
  }
};
VideoUrlDialog.prototype.cancelCurrentTask = function () {
  if (this.task) {
    this.task.cancel();
    this.task = null;
  }
};
VideoUrlDialog.prototype.assignTask = function (task) {
  this.cancelCurrentTask();
  this._prevUrl = null;
  this.task = task;
  if (task.initInfo) this.onInfo(task.initInfo);
};
VideoUrlDialog.prototype.onInfo = function (info) {
  this.getView();
  this._prevUrl = info.url;
  if (info.error) {
    this.pendingResult = null;
    this.$image.attr('src', undefined);
    this.$info.innerHTML = '<span style="color:#ff2c2c">Can not load video!</span>';
    return;
  }
  this.pendingResult = info;
  if (info.image) this.$image.attr('src', info.image);else {
    this.$image.attr('src', undefined);
  }
  var infoText = [];
  if ((0, _utils.isRealNumber)(info.width) && (0, _utils.isRealNumber)(info.height)) {
    infoText.push([info.width, ' x ', info.height].join(''));
  }
  if ('displayWidth' in info) {
    this.$width.value = info.displayWidth;
    this.$height.value = info.displayHeight;
    this.$urlInput.value = info.url;
  } else if ((0, _utils.isRealNumber)(info.width) && (0, _utils.isRealNumber)(info.height)) {
    infoText.push([info.width, ' x ', info.height].join(''));
    this.$width.value = info.width;
    this.$height.value = info.height;
    this.$ratio.checked = true;
  } else {
    this.$width.value = 560;
    this.$height.value = 315;
  }
  if ('keepRatio' in info) {
    this.$ratio.checked = true;
  }
  if (info.type.startsWith('video/')) {
    infoText.push(info.type.substring(6).toUpperCase());
  }
  if (info.title) {
    infoText.push('<strong>' + info.title + '</strong>');
  }
  this.$info.innerHTML = infoText.join(', ');
  this.$okBtn.disabled = false;
};

/***
 * @param event
 */
VideoUrlDialog.prototype.ev_urlChange = function (event) {
  var _this3 = this;
  var newUrl = this.$urlInput.value;
  if (this._prevUrl === newUrl) return;
  this.$okBtn.disabled = true;
  this._prevUrl = newUrl;
  var info = (0, _videoUtils.parseVideoUrl)(newUrl);
  var sync;
  if (info.videoId === 'INVALID_URL') {
    info.error = 'INVALID_URL';
    sync = Promise.resolve();
  } else if (info.hostType !== '*') {
    info.type = 'text/html';
    sync = (0, _videoUtils["default"])(info.originalUrl, info.hostType === 'facebook').then(function (result) {
      if (newUrl !== _this3._prevUrl) return;
      Object.assign(info, result);
      if (!(0, _utils.isNaturalNumber)(result.width)) {
        info.error = "INVALID_VIDEO";
      }
    });
  } else {
    sync = (0, _videoUtils.getVideoFileHeader)(info.url).then(function (result) {
      if (newUrl !== _this3._prevUrl) return;
      Object.assign(info, result);
      if (result.error) {
        _this3.$info.innerHTML = '<span style="color:#ff2c2c">Can not load video!</span>';
      }
    }).then(function () {
      if (newUrl !== _this3._prevUrl) return;
      if (info.error) return;
      if (info.type.startsWith('video/')) return (0, _videoUtils.getVideoPreview)(info.url).then(function (result1) {
        if (newUrl !== _this3._prevUrl) return;
        Object.assign(info, result1);
      }, function (error1) {
        info.error = "CAN_NOT_LOAD";
      });
    });
  }
  sync.then(function () {
    if (newUrl !== _this3._prevUrl) return;
    _this3.onInfo(info);
  });
};

/***
 * @param event
 */
VideoUrlDialog.prototype.ev_action = function (event) {
  var _this4 = this;
  setTimeout(function () {
    var action = event.action;
    if (action.name === 'cancel') {
      _this4.cancelCurrentTask();
    }
    var width = parseInt(_this4.$width.value);
    var height = parseInt(_this4.$height.value);
    var result = Object.assign({}, _this4.pendingResult);
    if (!isNaN(width) && !isNaN(height)) {
      result.displayWidth = width;
      result.displayHeight = height;
    } else {
      result.displayWidth = 560;
      result.displayHeight = 315;
    }
    result.keepRatio = _this4.$ratio.checked;
    if (action.name === 'ok') {
      _this4.resolveCurrentTask(result);
    }
    _this4.stop();
  }, 100);
};
VideoUrlDialog.prototype.ev_widthChange = function () {
  if (!this.$ratio.checked || !this.pendingResult || !(0, _utils.isRealNumber)(this.pendingResult.width) || !(0, _utils.isRealNumber)(this.pendingResult.height)) return;
  var ratio = this.pendingResult.width / this.pendingResult.height;
  var width = parseFloat(this.$width.value);
  this.$height.value = Math.round(width / ratio);
};
VideoUrlDialog.prototype.ev_heightChange = function () {
  if (!this.$ratio.checked || !this.pendingResult || !(0, _utils.isRealNumber)(this.pendingResult.width) || !(0, _utils.isRealNumber)(this.pendingResult.height)) return;
  var ratio = this.pendingResult.width / this.pendingResult.height;
  var height = parseFloat(this.$height.value);
  this.$width.value = Math.round(height * ratio);
};

/***
 * @type {VideoUrlDialog}
 */
var shareInstance;
function openVideUrlDialog(initInfo) {
  shareInstance = shareInstance || new VideoUrlDialog();
  return new Promise(function (rs) {
    var task = {
      resolved: false,
      canceled: false,
      resolve: function resolve(info) {
        if (this.resolved) return;
        this.resolved = true;
        rs(info);
      },
      cancel: function cancel() {
        if (this.resolved || this.canceled) return;
        if (shareInstance.task !== this) return;
        this.canceled = true;
        rs(null);
      },
      initInfo: initInfo
    };
    shareInstance.start();
    shareInstance.assignTask(task);
  });
}
var _default = VideoUrlDialog;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = getEmbedVideoInfo;
exports.getVideoFileHeader = getVideoFileHeader;
exports.getVideoPreview = getVideoPreview;
exports.parseVideoUrl = parseVideoUrl;
var _ACore = __webpack_require__(34093);
var _FileSaver = __webpack_require__(53069);
var videoUrlRules = [['youtube', /^https:\/\/www.youtube.com\//, /[^a-zAZ]v=([^&]+)/, function (o) {
  return 'https://www.youtube.com/embed/' + o.videoId;
}], ['youtube', /^https:\/\/www.youtube.com\/embed\//, /^https:\/\/www.youtube.com\/embed\/([^&\/]+)/, function (o) {
  return o.url;
}, function (o) {
  return 'https://www.youtube.com/watch?v=' + o.videoId;
}], ['vimeo', /^https:\/\/vimeo.com\//, /vimeo.com\/([0-9A-Za-z_]+)/, function (o) {
  return 'https://player.vimeo.com/video/' + o.videoId;
}], ['dailymotion', /^https:\/\/www.dailymotion.com\/video\//, /dailymotion\.com\/video\/([0-9A-Za-z_]+)/, function (o) {
  return 'https://www.dailymotion.com/embed/video/' + o.videoId;
}], ['facebook', /^https:\/\/www.facebook.com\/watch/, /[^a-zAZ]v=([^&]+)/, function (o) {
  return 'https://www.facebook.com/plugins/video.php?height=315&width=560&show_text=false&t=0&href=' + encodeURIComponent(o.url);
}, function (o) {
  return o.embedUrl;
}], /* INVAID VIDEO ID   */
['youtube', /^https:\/\/www.youtube.com(\/|$)/, 'INVALID_URL'], ['vimeo', /^https:\/\/vimeo.com(\/|$)/, /vimeo.com\/([0-9A-Za-z_]+)/, 'INVALID_URL'], ['dailymotion', /^https:\/\/www.dailymotion.com(\/|$)/, null], ['facebook', /^https:\/\/www.facebook.com/, 'INVALID_URL'], /********************/
['*', /./, /\/([^\/]+)$/, function (o) {
  return o.url;
}]];
function parseVideoUrl(url) {
  url = (url || "").trim();
  var res = {
    url: url
  };
  videoUrlRules.some(function (rule) {
    var matched = url.match(rule[1]);
    if (!matched) return false;
    res.hostType = rule[0];
    if (rule[2] instanceof RegExp) {
      matched = url.match(rule[2]);
      if (!matched) return false;
      res.videoId = matched[1];
    } else if (rule[2] === 'INVALID_URL') {
      res.videoId = "INVALID_URL";
    }
    if (res.videoId !== 'INVALID_URL') {
      res.embedUrl = rule[3](res);
    }
    if (typeof rule[4] === "function") {
      res.originalUrl = rule[4](res);
    } else {
      res.originalUrl = res.url;
    }
    return true;
  });
  return res;
}
var embedVideoSizeCache = {};
var metaRules = [['width', 'og:video:width', /content\s*=\s*"([0-9]+)/, 'number'], ['height', 'og:video:height', /content\s*=\s*"([0-9]+)/, 'number'], ['title', 'og:title', /content\s*=\s*"([^"]+)/, function (s) {
  return s.replace(/\s*-\s*Video Dailymotion$/, '');
}], ['image', 'og:image', /content\s*=\s*"([^"]+)/], ['width', /^video\s/, /width\s*=\s*"([0-9]+)/, 'number', true], ['height', /^video\s/, /height\s*=\s*"([0-9]+)/, 'number', true], ['image', /^img/, /src\s*=\s*"([^"]+)/, function (x) {
  return x.replace(/&amp;/g, '&');
}], ['title', "a href=\"https://www.facebook.com/watch", />([^<]+)/]];
function getEmbedVideoInfo(url, fullPage) {
  // fullPage = false;
  var xUrl = fullPage ? 'https://absol.cf/getpage.php?url=' : 'https://absol.cf/getpagemeta.php?url=';
  embedVideoSizeCache[url] = embedVideoSizeCache[url] || fetch(xUrl + encodeURIComponent(url)).then(function (res) {
    return res.text();
  }).then(function (metaText) {
    if (metaText === 'DOWNLOAD_ERROR') return {
      error: metaText
    };
    var lines = metaText.replace(/\n|(>\s*<)/g, '__spliter__').split('__spliter__');
    var res = {};
    lines.forEach(function (line) {
      metaRules.some(function (rule) {
        var key = rule[0];
        if (key in res) return false;
        var matched;
        if (rule[1] instanceof RegExp) {
          matched = line.match(rule[1]);
          if (!matched) return false;
        } else if (typeof rule[1] === "string") {
          if (line.indexOf(rule[1]) < 0) return false;
        }
        matched = line.match(rule[2]);
        if (!matched) return false;
        var value = matched[1];
        if (rule[3] === 'number') {
          value = parseFloat(value);
          if (isNaN(value)) return false;
        } else if (typeof rule[3] === "function") {
          value = rule[3](value);
        }
        res[key] = value;
        if (rule[4]) return false;
        return true;
      });
    });
    return res;
  });
  return embedVideoSizeCache[url];
}
var videoFileHeaderInfoCache = {};
function getVideoFileHeader(url) {
  videoFileHeaderInfoCache[url] = videoFileHeaderInfoCache[url] || new Promise(function (resolve) {
    var xhr = new XMLHttpRequest();
    xhr.open('HEAD', url, true);
    xhr.onreadystatechange = function () {
      if (this.readyState === 4) {
        if (this.status === 200) {
          var res = {
            type: xhr.getResponseHeader('Content-Type')
          };
          var title;
          var header = xhr.getAllResponseHeaders();
          if (header && (header.indexOf('inline') !== -1 || header.indexOf('attachment') !== -1)) {
            var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
            var matches = filenameRegex.exec(header);
            if (matches != null && matches[1]) {
              title = matches[1].replace(/['"]/g, '');
            }
          } else {
            title = url.split('/').filter(function (x) {
              return !!x;
            }).pop() || '';
            title = title.split('?').shift();
            title = decodeURIComponent(title);
          }
          if (title) res.title = title;
          resolve(res);
        } else {
          resolve({
            error: "STATUS_" + this.status
          });
        }
      }
    };
    xhr.send();
  });
  return videoFileHeaderInfoCache[url];
}
function getVideoPreview(url) {
  return new Promise(function (resolve, reject) {
    var renderDiv = (0, _ACore._)({
      style: {
        position: 'fixed',
        left: 0,
        top: 0,
        overflow: 'hidden',
        'z-index': -1000,
        pointerEvents: 'none',
        visibility: 'hidden'
      }
    }).addTo(document.body);
    var videoElt = (0, _ACore._)({
      tag: 'video',
      attr: {
        crossorigin: "anonymous",
        crossOrigin: "anonymous",
        preload: 'metadata',
        src: url
      },
      on: {
        loadeddata: function loadeddata() {
          clearTimeout(timeout);
          var scale = Math.min(200, videoElt.videoWidth, videoElt.videoHeight) / videoElt.videoWidth;
          var cWidth = Math.ceil(videoElt.videoWidth * scale);
          var cHeight = Math.ceil(videoElt.videoHeight * scale);
          var canvas = (0, _ACore._)({
            tag: 'canvas',
            attr: {
              width: cWidth + 'px',
              height: cHeight + 'px'
            }
          }).addTo(renderDiv);
          var ctx = canvas.getContext('2d');
          ctx.drawImage(videoElt, 0, 0, cWidth, cHeight);
          var image = canvas.toDataURL('image/jpeg', 0.1);
          renderDiv.remove();
          resolve({
            width: videoElt.videoWidth,
            height: videoElt.videoHeight,
            image: image
          });
        },
        error: function error() {
          clearTimeout(timeout);
          renderDiv.remove();
          reject();
        }
      }
    });
    renderDiv.addChild(videoElt);
    videoElt.currentTime = 0.1;
    var timeout = setTimeout(function () {
      renderDiv.remove();
      reject();
    }, 5000);
  });
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = exports._ = exports.$ = void 0;
var _AComp = _interopRequireDefault(__webpack_require__(2515));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var Core = new _Dom["default"]();
Core.install(_AComp["default"].core);
var _ = Core._;
exports._ = _;
var $ = Core.$;
exports.$ = $;
var _default = Core;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(28737);
var _Core = _interopRequireDefault(__webpack_require__(33274));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;

/***
 * extends {AElement}
 * @constructor
 */
function MBlinkModal() {
  this.$attachhook = _('attachhook');
  this.$attachhook.requestUpdateSize = this.updateSize.bind(this);
  this.$attachhook.addTo(this).on('error', function () {
    _Dom["default"].addToResizeSystem(this);
    this.requestUpdateSize();
  });
  this._show = false;
  this.show = false;
}
MBlinkModal.tag = 'MBlinkModal'.toLowerCase();
MBlinkModal.render = function () {
  return _({
    "class": 'am-blink-modal'
  });
};
MBlinkModal.prototype.clearChild = function () {
  var child = Array.prototype.slice(this.childNodes);
};
MBlinkModal.prototype.updateSize = function () {
  this.removeClass('am-animation');
  var bound = this.getBoundingClientRect();
  this.addStyle('--hide-top', -(bound.height + 2) + 'px');
  this.addClass('am-animation');
};
MBlinkModal.property = {};
MBlinkModal.property.show = {
  set: function set(value) {
    this._show = !!value;
    if (this._show) {
      this.addClass('am-show');
    } else {
      this.removeClass('am-show');
    }
  },
  get: function get() {
    return this._show;
  }
};
MBlinkModal.newInstance = function (instanceData) {
  instanceData = instanceData || {};
  instanceData.duration = instanceData.duration || 2000;
  var modal = _(Object.assign({
    tag: 'mblinkmodal'
  }, instanceData || {}));
  var state = 0; //not attach

  function waitToRemove() {
    setTimeout(function () {
      if (state !== 3) return;
      state = 4;
      modal.selfRemove();
    }, 300);
  }
  function waitToShow() {
    setTimeout(function () {
      if (state !== 1) return;
      state = 2;
      modal.show = true;
      waitToClose(instanceData.duration);
    }, 1);
  }
  function waitToClose(mil) {
    if (state === 2) {
      setTimeout(function () {
        if (state !== 2) return;
        state = 3;
        modal.show = false;
        waitToRemove();
      }, mil);
    }
  }
  modal.addTo(document.body);
  modal.$attachhook.once('attached', function () {
    state = 1; //attached
    waitToShow();
  });
  return {
    modal: modal,
    close: waitToClose.bind(null, 100)
  };
};
_Core["default"].install(MBlinkModal);
var _default = MBlinkModal;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(62314);
var _Core = _interopRequireDefault(__webpack_require__(33274));
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _stringGenerate = __webpack_require__(10713);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;
function MBottomTabbar() {
  this._items = [];
  this.$row = $('.am-bottom-tabbar-content-row', this);
  this.$itemDict = {};
  this.$line = $('.am-bottom-tabbar-line', this);
  this.$attachhook = _('attachhook').addTo(this);
  this.$attachhook.requestUpdateSize = this.updateSize.bind(this);
  this.$attachhook.on('error', function () {
    _Dom["default"].addToResizeSystem(this);
  });
  this.$activeItem = null;
  this.$subActiveItem = null;
}
MBottomTabbar.tag = 'MBottomTabbar'.toLowerCase();
MBottomTabbar.render = function () {
  return _({
    "class": 'am-bottom-tabbar',
    extendEvent: 'change',
    child: ['.am-bottom-tabbar-line', {
      "class": 'am-bottom-tabbar-content',
      child: '.am-bottom-tabbar-content-row'
    }]
  });
};
MBottomTabbar.prototype.getItemEltByValue = function (value) {
  return this.$itemDict[value];
};
MBottomTabbar.prototype.modifyItem = function (itemValue, propertyName, newValue) {
  if (this.$itemDict[itemValue]) this.$itemDict[itemValue].data[propertyName] = newValue;
};
MBottomTabbar.prototype.getItem = function (itemValue) {
  if (this.$itemDict[itemValue]) return this.$itemDict[itemValue].data;
  return null;
};
MBottomTabbar.prototype.updateSize = function () {
  this.updateLinePosition();
};
MBottomTabbar.prototype.notifyChange = function () {
  this.emit('change', {
    target: this,
    value: this._value
  }, this);
};
MBottomTabbar.prototype.updateLinePosition = function () {
  if (this.$activeItem) {
    var bound = this.getBoundingClientRect();
    var iBound = this.$activeItem.getBoundingClientRect();
    this.$line.addStyle({
      width: iBound.width + 'px',
      left: iBound.left - bound.left + 'px'
    });
  } else {
    this.$line.addStyle('width', '0');
  }
};
MBottomTabbar.prototype._makeSubItem = function (data, parentElt) {
  var self = this;
  var itemElt = _({
    "class": 'am-bottom-tabbar-item',
    child: [data.icon, '.am-bottom-tabbar-item-counter'],
    props: {
      parentItemElt: parentElt
    }
  });
  itemElt.attr('tabindex', 1);
  this.$itemDict[data.value] = itemElt;
  var counterElt = $('.am-bottom-tabbar-item-counter', itemElt);
  var counter = data.counter;
  if (!data.__bindCounter__) {
    Object.defineProperties(data, {
      __dataBinding__: {
        value: true,
        writable: false,
        enumerable: false
      },
      counter: {
        set: function set(value) {
          counter = value;
          if (value >= 0) {
            if (value > 9) {
              counterElt.innerHTML = '9+';
            } else if (value > 0) {
              counterElt.innerHTML = value;
            } else {
              counterElt.innerHTML = '';
            }
          } else {
            if (value) counterElt.innerHTML = value + "";else counterElt.innerHTML = '';
          }
          if (parentElt.$subItems && parentElt.data) {
            parentElt.data.counter = parentElt.data.items.reduce(function (ac, cr) {
              return ac + (cr.counter || 0);
            }, 0);
          }
        },
        get: function get() {
          return counter;
        }
      }
    });
  }
  data.counter = counter;
  itemElt.data = data;
  function onPress() {
    if (self._value !== data.value) {
      parentElt.lastSubValue = data.value;
      self.value = data.value;
      self.notifyChange();
    }
  }
  itemElt.on('touchstart', onPress, true);
  itemElt.on('pointerdown', onPress, true);
  return itemElt;
};
MBottomTabbar.prototype._makeItem = function (data) {
  var self = this;
  var itemElt = _({
    "class": 'am-bottom-tabbar-item',
    child: [data.icon, '.am-bottom-tabbar-item-counter']
  });
  itemElt.attr('tabindex', 1);
  if (!('value' in data)) data.value = (0, _stringGenerate.randomIdent)();
  this.$itemDict[data.value] = itemElt;
  var subItemCtn;
  var counterElt = $('.am-bottom-tabbar-item-counter', itemElt);
  var counter = data.counter;
  if (data.items && data.items.length > 0) {
    var onPress = function onPress(event) {
      isTouch = event.type === 'touchstart';
      lastTimeFocus = new Date().getTime();
      subItemCtn.addClass('am-prepare-appear');
      // self.addChildAfter(subItemCtn, null);
      document.body.appendChild(subItemCtn);
      setTimeout(function () {
        subItemCtn.removeClass('am-prepare-appear').addClass('am-appear');
      }, 3);
      itemElt.off('touchstart', onPress).off('mousedown', onPress);
      setTimeout(function () {
        itemElt.on('touchstart', onRepress)
        // .on('mousedown', onRepress)
        .on('blur', onRepress);
      }, 100);
    };
    var onRepress = function onRepress(event) {
      if (isTouch && event.type === 'mousedown') return;
      subItemCtn.removeClass('am-appear').addClass('am-prepare-disappear');
      setTimeout(function () {
        subItemCtn.removeClass('am-prepare-disappear').remove();
      }, 205);
      itemElt.off('touchstart', onRepress)
      // .off('mousedown', onRepress)
      .off('blur', onRepress);
      setTimeout(function () {
        itemElt.on('touchstart', onPress);
        // .on('mousedown', onPress);
      }, 100);
    };
    itemElt.lastSubValue = data.items[0].value;
    itemElt.$subItems = data.items.map(function (sItem) {
      return this._makeSubItem(sItem, itemElt);
    }.bind(this));
    counter = data.items.reduce(function (ac, cr) {
      return ac + (cr.counter || 0);
    }, 0);
    subItemCtn = _({
      "class": 'am-bottom-tabbar-sub-item-ctn',
      child: {
        "class": 'am-bottom-tabbar-sub-item-box',
        child: itemElt.$subItems
      }
    });
    var lastTimeFocus = 0;
    var isTouch;
    itemElt.on('touchstart', onPress);
    // .on('mousedown', onPress);
  }

  if (!data.__bindCounter__) {
    Object.defineProperties(data, {
      __dataBinding__: {
        value: true,
        writable: false,
        enumerable: false
      },
      counter: {
        set: function set(value) {
          counter = value;
          if (value >= 0) {
            if (value > 9) {
              counterElt.innerHTML = '9+';
            } else if (value > 0) {
              counterElt.innerHTML = value;
            } else {
              counterElt.innerHTML = '';
            }
          } else {
            if (value) counterElt.innerHTML = value + "";else counterElt.innerHTML = '';
          }
        },
        get: function get() {
          return counter;
        }
      }
    });
  }
  data.counter = counter;
  itemElt.data = data;
  itemElt.on('click', function () {
    if (data.items && data.items.length > 0) {
      if (self.$itemDict[self._value] && self.$itemDict[self._value].parentItemElt !== itemElt) {
        self.value = itemElt.lastSubValue;
        self.notifyChange();
      }
    } else if (self._value !== data.value) {
      self.value = data.value;
      self.notifyChange();
    }
  });
  return itemElt;
};
MBottomTabbar.property = {};

/**
 * @type {MBottomTabbar}
 */
MBottomTabbar.property.items = {
  set: function set(items) {
    items = items || [];
    this._items = items;
    this.$row.clearChild();
    this.$itemDict = {};
    this.$activeItem = null;
    this.$itemDict = {};
    for (var i = 0; i < items.length; ++i) {
      this._makeItem(items[i]).addTo(this.$row);
    }
    if (items && items.length > 0) {
      if (this.$itemDict[this._value]) {
        this.value = this._value;
      } else {
        this.value = items[0].value;
      }
    }
  },
  get: function get() {
    return this._items;
  }
};

/**
 * @type {MBottomTabbar}
 */
MBottomTabbar.property.value = {
  set: function set(value) {
    this._value = value;
    if (this.$activeItem) {
      this.$activeItem.removeClass('am-active');
      this.$activeItem = null;
    }
    if (this.$subActiveItem) {
      this.$subActiveItem.removeClass('am-active');
      this.$subActiveItem = null;
    }
    this.$activeItem = this.$itemDict[value];
    if (this.$activeItem && this.$activeItem.parentItemElt) {
      this.$subActiveItem = this.$activeItem;
      this.$activeItem = this.$activeItem.parentItemElt;
    }
    if (this.$activeItem) {
      this.$activeItem.addClass('am-active');
    }
    if (this.$subActiveItem) {
      this.$subActiveItem.addClass('am-active');
    }
    this.updateLinePosition();
  },
  get: function get() {
    return this._value;
  }
};
_Core["default"].install(MBottomTabbar);
var _default = MBottomTabbar;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _Board = _interopRequireDefault(__webpack_require__(67711));
var _BoardTable = _interopRequireDefault(__webpack_require__(76372));
var _Core = _interopRequireWildcard(__webpack_require__(33274));
__webpack_require__(43937);
var _QuickMenu = _interopRequireDefault(__webpack_require__(8277));
var _Hanger = _interopRequireDefault(__webpack_require__(63561));
var _EventEmitter = __webpack_require__(46833);
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 AElement
 * @constructor
 */
function MCabinetItem() {
  this._content = null;
  this.$content = (0, _Core.$)('.am-cabinet-item-content', this);
  this.$body = (0, _Core.$)('.am-cabinet-item-body', this).on('predrag', this.eventHandler.bodyPredrag).on('touchstart', this.eventHandler.bodyMouseDown).on('touchend', this.eventHandler.bodyMouseUp).on('dragstart', this.eventHandler.bodyDragStart).on('dragend', this.eventHandler.bodyDragEnd).on('drag', this.eventHandler.bodyDrag);
  this.$quickmenuBtn = (0, _Core.$)('.am-cabinet-item-quick-menu-btn', this);
  this.$right = (0, _Core.$)('.am-cabinet-item-right-action-ctn', this);
  this.$drag = (0, _Core.$)('.am-cabinet-item-drag', this).on('touchstart', function () {
    if (MCabinetItem.$openingItem) {
      MCabinetItem.$openingItem.resetView();
      MCabinetItem.$openingItem = null;
    }
  });
  this.$searchInput = null;
  this._quickmenu = null;
  this.commandViewState = 0;
  this._makeQuickMenu();
}
MCabinetItem.tag = 'MCabinetItem'.toLowerCase();
MCabinetItem.render = function () {
  return (0, _Core._)({
    tag: _Board["default"].tag,
    extendEvent: ['click', 'action'],
    "class": 'am-cabinet-item',
    child: [{
      tag: _Hanger["default"].tag,
      "class": ['am-cabinet-item-body'],
      props: {
        hangOn: 10
      },
      child: [{
        "class": ['am-cabinet-item-drag', _BoardTable["default"].DRAG_ZONE_CLASS_NAME],
        child: '<i class="material-icons drag-icon-button">drag_indicator</i>'
      }, {
        "class": ['am-cabinet-item-content']
      }, {
        "class": 'am-cabinet-item-quick-menu-ctn',
        child: {
          tag: 'button',
          "class": 'am-cabinet-item-quick-menu-btn',
          child: '<i class="material-icons">more_horiz</i>'
        }
      }]
    }, {
      "class": 'am-cabinet-item-right-action-ctn'
    }]
  });
};
['addChild', 'removeChild', 'addChildBefore', 'addChildAfter', 'clearChild', 'findChildBefore', 'findChildAfter'].forEach(function (name) {
  MCabinetItem.prototype[name] = function () {
    this.$content[name].apply(this.$content, arguments);
  };
});
MCabinetItem.prototype._makeQuickMenu = function () {
  var self = this;
  this.quickmenuHolder = _QuickMenu["default"].toggleWhenClick(this.$quickmenuBtn, {
    getAnchor: function getAnchor() {
      return [3, 4, 13, 14];
    },
    getMenuProps: function getMenuProps() {
      return self._quickmenu && self._quickmenu.props;
    },
    onOpen: function onOpen() {
      self.resetView();
    },
    onClose: function onClose() {},
    onSelect: function onSelect(item) {
      if (self._quickmenu.onSelect) {
        self._quickmenu.onSelect.call(this, item);
      }
    }
  });
};
MCabinetItem.prototype._makeActionBtn = function (data) {
  var btn = (0, _Core._)({
    tag: 'button',
    "class": 'am-cabinet-item-action',
    on: {
      click: function (event) {
        this.resetView();
        this.emit('action', {
          type: 'action',
          originalEvent: event,
          action: data
        }, this);
      }.bind(this)
    }
  });
  if (data.text) {
    btn.addChild((0, _Core._)({
      text: data.text
    }));
  } else if (data.icon) {
    btn.addChild((0, _Core._)(data.icon));
  }
  return btn;
};
MCabinetItem.prototype.getChildren = function () {
  return this.$body.childNodes;
};
MCabinetItem.prototype.resetView = function () {
  this.$body.addStyle('left', 0 + 'px');
  this.commandViewState = 0;
  this.$quickmenuBtn.removeStyle('opacity').removeStyle('pointer-events');
};
MCabinetItem.prototype.getSearchingText = function () {
  var parts = [];
  function visit(node) {
    if (node.nodeType === 3) {
      parts.push(node.data);
    } else if (node.nodeType === 1) {
      if (node.tagName === 'BUTTON') return;
      if (node.tagName === 'INPUT') {
        parts.push(node.value);
      }
      Array.prototype.forEach.call(node.childNodes, visit);
    }
  }
  visit(this.$content);
  parts = parts.filter(function (p) {
    return !!p;
  });
  return parts.join(' ');
};
MCabinetItem.prototype.selfRemove = function () {
  var parent = this.parentElement;
  if (!parent) return;
  if (parent.hasClass('am-cabinet-list-searching-items-ctn')) {
    parent = parent.parentElement;
  }
  parent.removeChild(this);
};
MCabinetItem.property = {};
MCabinetItem.property.quickmenu = {
  set: function set(value) {
    this._quickmenu = value;
    if (value) {
      this.addClass('am-has-quick-menu');
    } else {
      this.removeClass('am-has-quick-menu');
    }
  },
  get: function get() {
    return this._quickmenu;
  }
};
MCabinetItem.property.rightActions = {
  set: function set(value) {
    value = value || [];
    this._rightActions = value;
    this.$right.clearChild().addChild(value.map(function (data) {
      return this._makeActionBtn(data);
    }.bind(this)));
  },
  get: function get() {
    return this._rightActions;
  }
};
MCabinetItem.property.draggable = {
  set: function set(value) {
    if (this.parentElement && this.parentElement.classList.contains('as-board-table')) {
      console.warn("Don't set draggable after MCabinetItem attached!");
    }
    if (value) {
      this.addClass('as-board');
    } else {
      this.removeClass('as-board');
    }
  },
  get: function get() {
    return this.hasClass('as-board');
  }
};
MCabinetItem.property.content = {
  set: function set(value) {
    value = value || null;
    this._content = value;
    this.$content.clearChild();
    if (!value) return;
    if (value instanceof Array) {
      this.$content.addChild(value.map(function (c) {
        return (0, _Core._)(c);
      }));
    } else {
      this.$content.addChild((0, _Core._)(value));
    }
  },
  get: function get() {
    return this._content;
  }
};

/***
 * @memberOf MCabinetItem#
 * @type {{}}
 */
MCabinetItem.eventHandler = {};

/**
 * @this MCabinetItem
 * @param event
 */
MCabinetItem.eventHandler.bodyMouseUp = function (event) {
  if (this._waitClick) {
    this.emit('click', event, this);
  }
};

/**
 * @this MCabinetItem
 * @param event
 */
MCabinetItem.eventHandler.bodyMouseDown = function (event) {
  if ((0, _EventEmitter.hitElement)(this.$quickmenuBtn, event)) return;
  this._waitClick = true;
};

/**
 * @this MCabinetItem
 * @param event
 */
MCabinetItem.eventHandler.bodyPredrag = function (event) {
  if ((0, _EventEmitter.hitElement)(this.$drag, event)) {
    event.cancel();
  }
};

/**
 * @this MCabinetItem
 * @param event
 */
MCabinetItem.eventHandler.bodyDragStart = function (event) {
  _QuickMenu["default"].close(true);
  this._bodyDraging = false;
  this._rightWidth = this.$right.getBoundingClientRect().width;
  this._waitClick = false;
  if (this._rightWidth === 0) return;
  var d = event.currentPoint.sub(event.startingPoint);
  if (Math.abs(d.x) <= Math.abs(d.y)) return;
  if (this.commandViewState === 0) {
    if (d.x < 0) {
      if (MCabinetItem.$openingItem) {
        MCabinetItem.$openingItem.resetView();
      }
      MCabinetItem.$openingItem = this;
      this._bodyDraging = true;
      this._x0 = 0;
      this.commandViewState = -1;
      this.$body.addStyle('left', d.x + 'px');
    }
  } else if (this.commandViewState === -1) {
    if (d.x > 0) {
      this._bodyDraging = true;
      this.commandViewState = 0;
      this._x0 = -this._rightWidth;
      this.$body.addStyle('left', this._rightWidth - d.x + 'px');
    }
  }
  setTimeout(function () {
    this.addClass('as-dragging');
  }.bind(this), 5);
};

/**
 * @this MCabinetItem
 * @param event
 */
MCabinetItem.eventHandler.bodyDrag = function (event) {
  if (!this._bodyDraging) return;
  var d = event.currentPoint.sub(event.startingPoint);
  var x = this._x0 + d.x;
  this.$body.addStyle('left', x + 'px');
  if (-x > this._rightWidth) {
    this.$right.addStyle('width', -x + 'px');
  }
  this.$quickmenuBtn.addStyle('opacity', 1 - Math.max(0, Math.min(1, -x / this._rightWidth)) + '');
};

/**
 * @this MCabinetItem
 * @param event
 */
MCabinetItem.eventHandler.bodyDragEnd = function (event) {
  if (!this._bodyDraging) return;
  this._bodyDraging = false;
  this.removeClass('as-dragging');
  if (this.commandViewState === 0) {
    this.$right.addStyle('width', this._rightWidth + 'px');
    this.$body.addStyle('left', 0 + 'px');
    if (MCabinetItem.$openingItem === this) MCabinetItem.$openingItem = null;
    this.$quickmenuBtn.removeStyle('opacity').removeStyle('pointer-events');
  } else {
    this.$right.addStyle('width', this._rightWidth + 'px');
    this.$body.addStyle('left', -this._rightWidth + 'px');
    this.$quickmenuBtn.addStyle('opacity', 0 + '').addStyle('pointer-events', 'none');
  }
  setTimeout(function () {
    this.$right.removeStyle('width');
  }.bind(this), 110);
};
_Core["default"].install(MCabinetItem);
var _default = MCabinetItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _BoardTable = _interopRequireDefault(__webpack_require__(76372));
var _Core = _interopRequireWildcard(__webpack_require__(33274));
var _search = _interopRequireWildcard(__webpack_require__(67858));
var _MCabinetItem = _interopRequireDefault(__webpack_require__(34759));
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 BoardTable
 * @constructor
 */
function MCabinetList() {
  this.on('dragitemstart', this.eventHandler.dragItemStart);
  /***
   * @type {boolean}
   * @name searching
   * @memberOf MCabinetList#
   */
}

MCabinetList.tag = 'MCabinetList'.toLowerCase();
MCabinetList.render = function () {
  return (0, _Core._)({
    tag: _BoardTable["default"].tag,
    extendEvent: ['searchstart', 'searchend'],
    "class": 'am-cabinet-list'
  });
};

/****
 * @memberOf MCabinetList#
 * @type {{}}
 */
MCabinetList.eventHandler = {};
MCabinetList.eventHandler.dragItemStart = function () {
  var bound = this.getBoundingClientRect();
  this.addStyle('--am-cabinet-list-bound-left', bound.left + 'px');
};
MCabinetList.prototype.getChildren = function () {
  if (this.searching) return this.$items;
  return Array.prototype.slice.call(this.childNodes);
};
MCabinetList.prototype.clearChild = function () {
  if (this.searching) {
    this.$items = [];
    this._cache = {};
    this._searchingItems = [];
    this.eventHandler.searchModify(null);
    return this;
  } else {
    while (this.firstChild) {
      this.firstChild.remove();
    }
    this._childHolders = [];
    return this;
  }
};
MCabinetList.prototype.removeChild = function (elt) {
  var idx;
  if (this.searching) {
    idx = this.$items.indexOf(elt);
    if (idx < 0) return this;
    this.$items.splice(idx, 1);
    this._searchingItems.splice(idx, 1);
    this._cache = {};
    elt.remove();
    this.eventHandler.searchModify(null);
  } else {
    _BoardTable["default"].prototype.removeChild.call(this, elt);
  }
  return this;
};
MCabinetList.prototype.addChild = function (elt) {
  if (elt instanceof Array) {
    elt.forEach(function (it) {
      this.addChild(it);
    }.bind(this));
    return this;
  }
  if (this.searching) {
    this.$items.push(elt);
    this._searchingItems.push((0, _search["default"])({
      text: elt.getSearchingText(),
      value: elt
    }));
    this.eventHandler.searchModify(null);
  } else {
    _BoardTable["default"].prototype.addChild.call(this, elt);
  }
};
MCabinetList.prototype.addChildBefore = function (elt, bf) {
  elt.selfRemove();
  var idx;
  if (this.searching) {
    if (!bf) {
      this.$items.push(elt);
      this._searchingItems.push((0, _search["default"])({
        text: elt.getSearchingText(),
        value: elt
      }));
    } else {
      idx = this.$items.indexOf(bf);
      if (idx >= 0) {
        this.$items.splice(idx, 0, elt);
        this._searchingItems.splice(idx, 0, (0, _search["default"])({
          text: elt.getSearchingText(),
          value: elt
        }));
      } 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.");
      }
    }
    this.eventHandler.searchModify(null);
  } else {
    _BoardTable["default"].prototype.addChildBefore.call(this, elt, bf);
  }
};
MCabinetList.prototype.addChildAfter = function (elt, at) {
  elt.selfRemove();
  var idx;
  if (this.searching) {
    if (!at) {
      this.$items.unshift(elt);
      this._searchingItems.unshift((0, _search["default"])({
        text: elt.getSearchingText(),
        value: elt
      }));
    } else {
      idx = this.$items.indexOf(at);
      if (idx >= 0) {
        this.$items.splice(idx + 1, 0, elt);
        this._searchingItems.splice(idx + 1, 0, (0, _search["default"])({
          text: elt.getSearchingText(),
          value: elt
        }));
      } 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.");
      }
    }
    this.eventHandler.searchModify(null);
  } else {
    _BoardTable["default"].prototype.addChildBefore.call(this, elt, at);
  }
};
MCabinetList.prototype.findChildBefore = function (elt) {
  if (this.searching) {
    return this.$items[this.$items.indexOf(elt) - 1] || null;
  } else {
    return _BoardTable["default"].prototype.findChildBefore.call(this, elt);
  }
};
MCabinetList.prototype.findChildAfter = function (elt) {
  if (this.searching) {
    return this.$items[this.$items.indexOf(elt) + 1] || null;
  } else {
    return _BoardTable["default"].prototype.findChildBefore.call(this, elt);
  }
};
MCabinetList.property = {};
MCabinetList.property.draggable = {
  set: function set(value) {
    if (value) {
      this.addClass('am-draggable');
    } else {
      this.removeClass('am-draggable');
    }
  },
  get: function get() {
    return this.hasClass('am-draggable');
  }
};

/***
 * @this MCabinetList
 * @param searchInputElt
 */
MCabinetList.prototype.attachSearchInput = function (searchInputElt) {
  if (this.$searchInput) {
    this.$searchInput.off('stoptyping', this.eventHandler.searchModify);
  }
  this.$searchInput = searchInputElt;
  if (this.$searchInput) {
    if (this.$searchInput.$list) {
      this.$searchInput.off('stoptyping', this.$searchInput.$list.eventHandler.searchModify);
    }
    this.$searchInput.$list = this;
    this.$searchInput.on('stoptyping', this.eventHandler.searchModify);
  }
};

/***
 * @this MCabinetList
 * @param event
 */
MCabinetList.eventHandler.searchModify = function (event) {
  if (_MCabinetItem["default"].$openingItem) {
    _MCabinetItem["default"].$openingItem.resetView();
    _MCabinetItem["default"].$openingItem = null;
  }
  var query = this.$searchInput.value;
  query = query.trim();
  if (query.length === 0 && this.hasClass('am-searching')) {
    this.$searchingItemsCtn.remove();

    //pure add
    this._childHolders = [];
    this.$items.forEach(function (e) {
      this.appendChild(e);
      if (e.draggable) {
        this._childHolders.push({
          elt: e
        });
      }
    }.bind(this));
    this.removeClass('am-searching');
    this.emit('searchend', {
      type: 'searchend',
      target: this
    }, this);
  } else if (!this.hasClass('am-searching') && query.length > 0) {
    this.$searchingItemsCtn = this.$searchingItemsCtn || (0, _Core._)('.am-cabinet-list-searching-items-ctn');
    this.cache = {};
    this._searchingItems = Array.prototype.map.call(this.childNodes, function (elt) {
      return (0, _search["default"])({
        text: elt.getSearchingText(),
        value: elt
      });
    });
    this.$items = Array.prototype.slice.call(this.childNodes);
    this.addClass('am-searching');
    //dom clear
    this.innerHTML = '';
    this._childHolders = [];
    this.appendChild(this.$searchingItemsCtn);
    this.emit('searchstart', {
      type: 'searchstart',
      target: this
    }, this);
  }
  if (query.length === 0) return;
  var resultItems = this.cache[query] || (0, _search.searchListByText)(query, this._searchingItems);
  var resultEltList = resultItems.map(function (it) {
    return it.value;
  });
  this.$searchingItemsCtn.clearChild().addChild(resultEltList);
};
MCabinetList.prototype.addInputSearch = MCabinetList.prototype.attachSearchInput;
MCabinetList.prototype.addSearchBox = MCabinetList.prototype.attachSearchInput;
MCabinetList.property.searching = {
  get: function get() {
    return this.hasClass('am-searching');
  }
};
_Core["default"].install(MCabinetList);
var _default = MCabinetList;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _Core = _interopRequireWildcard(__webpack_require__(33274));
var _MCabinetTreeNode = _interopRequireDefault(__webpack_require__(60164));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _search = _interopRequireDefault(__webpack_require__(67858));
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; }
/***
 * @extends AElement
 * @constructor
 */
function MCabinetTree() {
  this.$node = (0, _Core.$)(_MCabinetTreeNode["default"].tag, this).on('toggle', this.eventHandler.toggle).on('click', this.eventHandler.click);
  this.$children = (0, _Core.$)('.am-cabinet-tree-children', this);
  _OOP["default"].drillProperty(this, this.$node, ['content', 'quickmenu']);

  /***
   * @type {number}
   * @name level
   * @memberOf MCabinetTree#
   */
}

MCabinetTree.tag = 'MCabinetTree'.toLowerCase();
MCabinetTree.render = function () {
  return (0, _Core._)({
    extendEvent: ['click'],
    "class": 'am-cabinet-tree',
    child: [{
      tag: _MCabinetTreeNode["default"].tag
    }, {
      "class": 'am-cabinet-tree-children'
    }]
  });
};
MCabinetTree.prototype._updateChildClass = function () {
  if (this.$children.childNodes.length > 0) {
    this.addClass('am-has-children');
  } else {
    this.removeClass('am-has-children');
  }
};
MCabinetTree.prototype.addChild = function (child) {
  if (child && child.forEach) {
    child.forEach(function (c) {
      this.addChild(c);
    }.bind(this));
    return this;
  }
  this.$children.addChild(child);
  child.level = this.level + 1;
  this._updateChildClass();
};
MCabinetTree.prototype.getSearchingItem = function () {
  var text = this.$node.getSearchingText();
  var value = this;
  var items = Array.prototype.map.call(this.$children.childNodes, function (subTree) {
    return subTree.getSearchingItem();
  });
  var res = {
    text: text,
    value: value
  };
  if (items.length > 0) res.items = items;
  return (0, _search["default"])(res);
};
MCabinetTree.property = {};
MCabinetTree.property.level = {
  set: function set(value) {
    this.$node.level = value;
    Array.prototype.forEach.call(this.$children.childNodes, function (treeElt) {
      treeElt.level = value + 1;
    });
  },
  get: function get() {
    return this.$node.level;
  }
};
MCabinetTree.property.opened = {
  set: function set(value) {
    if (value) {
      this.addClass('am-opened');
    } else {
      this.removeClass('am-opened');
    }
  },
  get: function get() {
    return this.hasClass('am-opened');
  }
};

/***
 * @memberOf MCabinetTree#
 * @type {{}}
 */
MCabinetTree.eventHandler = {};
MCabinetTree.eventHandler.toggle = function (event) {
  this.opened = !this.opened;
};
MCabinetTree.eventHandler.click = function (event) {
  this.emit('click', event, this);
};
_Core["default"].install(MCabinetTree);
var _default = MCabinetTree;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _Core = _interopRequireWildcard(__webpack_require__(33274));
var _MCabinetList = _interopRequireDefault(__webpack_require__(81227));
var _Searcher = _interopRequireDefault(__webpack_require__(47106));
var _search = __webpack_require__(67858);
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; }
/***
 * @extends AElement
 * @constructor
 */
function MCabinetTreeList() {
  /***
   *
   * @type {null|SearchTextInput}
   */
  this.$searchInput = null;
  this._searchCache = {};
}
MCabinetTreeList.tag = 'MCabinetTreeList'.toLowerCase();
MCabinetTreeList.render = function () {
  return (0, _Core._)({
    "class": 'am-cabinet-tree-list',
    child: []
  });
};
MCabinetTreeList.prototype.attachSearchInput = _MCabinetList["default"].prototype.attachSearchInput;
MCabinetTreeList.prototype.addInputSearch = MCabinetTreeList.prototype.attachSearchInput;
MCabinetTreeList.prototype.addSearchBox = MCabinetTreeList.prototype.attachSearchInput;

/***
 * @type {{}}
 * @memberOf MCabinetTreeList#
 */
MCabinetTreeList.eventHandler = {};
MCabinetTreeList.eventHandler.searchModify = function (event) {
  var query = this.$searchInput.value;
  query = query.trim();
  if (this.$orderingNodes) {
    this.$orderingNodes.forEach(function (nodeElt) {
      nodeElt.removeClass('am-in-search-result').removeStyle('order');
    });
    if (this.$orderingNodes[0]) {
      this.$orderingNodes[0].removeClass('am-first-result');
    }
  }
  this.$orderingNodes = null;
  if (this.hasClass('am-searching') && query.length === 0) {
    this.removeClass('am-searching');
    return;
  } else if (!this.hasClass('am-searching') && query.length > 0) {
    this._searchCache = {};
    this.addClass('am-searching');
  }
  this._searchCache[' all '] = this._searchCache[' all '] || Array.prototype.map.call(this.childNodes, function (tree) {
    return tree.getSearchingItem();
  });
  this._searchCache[query] = this._searchCache[query] || (0, _search.searchTreeListByText)(query, this._searchCache[' all ']);
  var orderingNodes = [];
  this._searchCache[query].forEach(function visit(item, i) {
    item.value.addClass('am-in-search-result').addStyle('order', i);
    orderingNodes.push(item.value);
    if (item.items && item.items.length > 0) item.items.forEach(visit);
  });
  if (orderingNodes[0]) {
    orderingNodes[0].addClass('am-first-result');
  }
  this.$orderingNodes = orderingNodes;
};
_Core["default"].install(MCabinetTreeList);
var _default = MCabinetTreeList;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _Core = _interopRequireWildcard(__webpack_require__(33274));
__webpack_require__(43937);
__webpack_require__(56685);
var _MCabinetItem = _interopRequireDefault(__webpack_require__(34759));
var _noop = _interopRequireDefault(__webpack_require__(5025));
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; }
/***
 * @extends AElement
 * @constructor
 */
function MCabinetTreeNode() {
  this._level = 0;
  this.$content = (0, _Core.$)('.am-cabinet-tree-node-content', this);
  this.$body = (0, _Core.$)('.am-cabinet-tree-node-body', this);
  this.$toggleCtn = (0, _Core.$)('.am-cabinet-tree-node-toggle-ctn', this);
  this.addEventListener('click', this.eventHandler.click);
  this.$quickmenuBtn = (0, _Core.$)('.am-cabinet-item-quick-menu-btn', this);
  this._makeQuickMenu();
  /***
   * @type {number}
   * @name level
   * @memberOf MCabinetTreeNode#
   */
}

MCabinetTreeNode.tag = 'MCabinetTreeNode'.toLowerCase();
MCabinetTreeNode.render = function () {
  return (0, _Core._)({
    extendEvent: ['click', 'toggle'],
    "class": 'am-cabinet-tree-node',
    child: [{
      "class": 'am-cabinet-tree-node-body',
      child: [{
        "class": 'am-cabinet-tree-node-toggle-ctn',
        child: ['span.mdi.mdi-chevron-right']
      }, {
        "class": 'am-cabinet-tree-node-content'
      }, {
        "class": 'am-cabinet-tree-node-quick-menu-ctn',
        child: {
          tag: 'button',
          "class": 'am-cabinet-item-quick-menu-btn',
          child: '<i class="material-icons">more_horiz</i>'
        }
      }]
    }]
  });
};
MCabinetTreeNode.prototype._makeQuickMenu = _MCabinetItem["default"].prototype._makeQuickMenu;
MCabinetTreeNode.prototype.getSearchingText = _MCabinetItem["default"].prototype.getSearchingText;
MCabinetTreeNode.prototype.resetView = _noop["default"];
MCabinetTreeNode.property = {};
MCabinetTreeNode.property.content = _MCabinetItem["default"].property.content;
MCabinetTreeNode.property.quickmenu = _MCabinetItem["default"].property.quickmenu;
MCabinetTreeNode.property.level = {
  set: function set(value) {
    this._level = value;
    this.$body.addStyle('--level-padding', value * 1.5 + 'em');
  },
  get: function get() {
    return this._level;
  }
};

/***
 * @memberOf MCabinetTreeNode#
 * @type {{}}
 */
MCabinetTreeNode.eventHandler = {};

/***
 * @this MCabinetTreeNode
 * @param event
 */
MCabinetTreeNode.eventHandler.click = function (event) {
  var c = event.target;
  while (c) {
    if (c === this) break;
    if (c === this.$toggleCtn) {
      this.emit('toggle', {
        type: 'toggle',
        target: this,
        originalEvent: event
      }, this);
      this.opened = !this.opened;
      return;
    }
    if (c.tagName === 'INPUT') return;
    if (c.tagName === 'BUTTON') return;
    if (typeof c.checked === "boolean") return;
    if (typeof c.value !== 'undefined') return;
    if (c.isInput) return;
    c = c.parentElement;
  }
  this.emit('click', {
    type: 'click',
    target: this,
    originalEvent: event
  }, this);
};
_Core["default"].install(MCabinetTreeNode);
var _default = MCabinetTreeNode;
exports["default"] = _default;

/***/ }),

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

"use strict";


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 _Core = _interopRequireWildcard(__webpack_require__(33274));
var _MSelectListItem = _interopRequireDefault(__webpack_require__(63516));
var _CheckboxButton = _interopRequireDefault(__webpack_require__(93475));
__webpack_require__(45053);
var _CheckListItem = _interopRequireDefault(__webpack_require__(27129));
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; }
/****
 * @extends MSelectListItem
 * @constructor
 */
function MChecklistItem() {
  this.$checkbox = (0, _Core.$)('.am-selectlist-item-check-ctn > ' + _CheckboxButton["default"].tag, this).on('change', this.eventHandler.checkboxChange);
  _MSelectListItem["default"].call(this);
  this.on('click', this.eventHandler.clickText);
}
MChecklistItem.tag = 'MChecklistItem'.toLowerCase();
MChecklistItem.property = Object.assign({}, _MSelectListItem["default"].property);
MChecklistItem.render = function () {
  return (0, _Core._)({
    extendEvent: ['change', 'select'],
    "class": 'am-selectlist-item',
    child: [{
      "class": 'am-selectlist-item-check-ctn',
      child: {
        tag: _CheckboxButton["default"].tag
      }
    }, {
      "class": 'am-selectlist-item-text-ctn',
      child: {
        tag: 'span',
        "class": 'am-selectlist-item-text',
        child: {
          text: ''
        }
      }
    }, {
      "class": 'am-selectlist-item-desc-ctn',
      child: {
        tag: 'span',
        "class": 'am-selectlist-item-desc',
        child: {
          text: ''
        }
      }
    }]
  });
};
MChecklistItem.eventHandler = {};
MChecklistItem.eventHandler.clickText = _CheckListItem["default"].eventHandler.clickText;
MChecklistItem.eventHandler.checkboxChange = _CheckListItem["default"].eventHandler.checkboxChange;
MChecklistItem.property.selected = _CheckListItem["default"].property.selected;
_Core["default"].install(MChecklistItem);
var _default = MChecklistItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.makeItem = makeItem;
exports.measureListSize = measureListSize;
exports.releaseItem = releaseItem;
exports.requireItem = requireItem;
var _MListModal = _interopRequireDefault(__webpack_require__(57305));
var _Core = _interopRequireWildcard(__webpack_require__(33274));
var _SelectList = __webpack_require__(884);
var _MChecklistItem = _interopRequireDefault(__webpack_require__(72067));
var _CheckListBox = _interopRequireDefault(__webpack_require__(62896));
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 }; }
function measureListSize(items) {
  var descWidth = (0, _SelectList.measureMaxDescriptionWidth)(items);
  var textWidth = (0, _SelectList.measureMaxTextWidth)(items);
  var width = descWidth + 20 + textWidth + 12 + 15 + 18; //padding, margin
  return {
    width: width,
    descWidth: descWidth,
    textWidth: textWidth
  };
}
var itemPool = [];
function onClickItem(event) {
  var thisSL = this.$parent;
  if (thisSL) {
    thisSL.eventHandler.selectItem(this, event);
  }
}

/**
 * @returns {MSelectListItem}
 */
function makeItem() {
  return (0, _Core._)({
    tag: _MChecklistItem["default"],
    on: {
      select: onClickItem
    }
  });
}
function requireItem($parent) {
  var item;
  if (itemPool.length > 0) {
    item = itemPool.pop();
  } else {
    item = makeItem();
  }
  item.$parent = $parent;
  return item;
}
function releaseItem(item) {
  item.$parent = null;
  item.attr('class', 'am-selectlist-item');
  item.selected = false;
  itemPool.push(item);
}

/***
 * @extends MListModal
 * @constructor
 */
function MChecklistModal() {
  this._initFooter();
  _MListModal["default"].call(this);
}
MChecklistModal.tag = 'MChecklistModal'.toLowerCase();
Object.assign(MChecklistModal.prototype, _MListModal["default"].prototype);
MChecklistModal.property = Object.assign({}, _MListModal["default"].property);
MChecklistModal.eventHandler = Object.assign({}, _MListModal["default"].eventHandler);
MChecklistModal.render = function () {
  return (0, _Core._)({
    extendEvent: ['change', 'pressclose', 'pressout', 'cancel'],
    "class": 'am-list-modal',
    child: [{
      "class": ['am-list-popup-box'],
      child: [{
        "class": 'am-list-popup-header',
        child: [{
          tag: 'searchtextinput'
        }, {
          tag: 'button',
          "class": 'am-list-popup-close-btn',
          child: 'span.mdi.mdi-close'
        }]
      }, {
        "class": 'am-list-popup-list-scroller',
        child: {
          "class": 'am-list-popup-content',
          child: Array(this.prototype.preLoadN).fill('.am-list-popup-list-page.am-selectlist.am-check-list')
        }
      }, {
        "class": 'as-dropdown-box-footer',
        child: [{
          tag: 'checkbox',
          "class": 'as-select-list-box-check-all',
          props: {
            checked: false,
            text: 'Check All'
          }
        }, {
          "class": 'as-dropdown-box-footer-right',
          child: {
            tag: 'a',
            "class": 'as-select-list-box-cancel-btn',
            child: {
              text: 'Cancel'
            }
          }
        }]
      }]
    }]
  });
};
MChecklistModal.prototype._requireItem = function (pageElt, n) {
  var itemElt;
  while (pageElt.childNodes.length > n) {
    itemElt = pageElt.lastChild;
    itemElt.selfRemove();
    releaseItem(itemElt);
  }
  while (pageElt.childNodes.length < n) {
    itemElt = requireItem(this);
    pageElt.addChild(itemElt);
  }
};
MChecklistModal.prototype._initFooter = _CheckListBox["default"].prototype._initFooter;
MChecklistModal.property.values = {
  set: function set(value) {
    _MListModal["default"].property.values.set.apply(this, arguments);
    console.log(this._values.length, this.items.length);
    this.$checkAll.checked = this._values.length === this.items.length;
  },
  get: _CheckListBox["default"].property.values.get
};
MChecklistModal.property.items = {
  set: function set(value) {
    _MListModal["default"].property.items.set.apply(this, arguments);
    this.$checkAll.checked = this._values.length === this._items.length;
  },
  get: _CheckListBox["default"].property.items.get
};
MChecklistModal.eventHandler.selectItem = function (itemElt, event) {
  var selected = itemElt.selected;
  var data = itemElt.data;
  var value = itemElt.value;
  var idx;
  if (selected) {
    this._valueDict[value + ''] = true;
    this._values.push(value);
  } else {
    delete this._valueDict[value + ''];
    idx = this._values.indexOf(value);
    if (idx >= 0) this._values.splice(idx, 1);
    this.$checkAll.checked = false;
  }
  this.emit('change', {
    type: 'change',
    target: this,
    itemElt: this,
    value: value,
    data: data,
    itemData: data,
    action: selected ? "check" : "uncheck",
    originalEvent: event.originalEvent || event.originEvent || event
  });
};
MChecklistModal.eventHandler.checkAllChange = _CheckListBox["default"].eventHandler.checkAllChange;
MChecklistModal.eventHandler.clickCancelBtn = _CheckListBox["default"].eventHandler.clickCancelBtn;
_Core["default"].install(MChecklistModal);
var _default = MChecklistModal;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(29778);
var _Core = _interopRequireDefault(__webpack_require__(33274));
var _QuickMenu = _interopRequireDefault(__webpack_require__(8277));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
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); }
var _ = _Core["default"]._;
var $ = _Core["default"].$;
function MConversation() {
  this._name = '';
  this._shortContent = '';
  this._time = '';
  this._avatarSrc = null;
  this.$name = $('.am-conversation-name', this);
  this.$shortContent = $('.am-conversation-short-content', this);
  this.$time = $('span.am-conversation-time', this);
  this.$counter = $('.am-conversation-counter', this);
  this.$avatar = $('.am-conversation-avatar', this);
  _OOP["default"].drillProperty(this, this.$counter, 'counter', 'innerHTML');
  _OOP["default"].drillProperty(this, this.$avatar, 'avatarSrc', 'src');
  _OOP["default"].drillProperty(this, this.$avatar, 'onlineStatus', 'status');
}
MConversation.tag = 'MConversation'.toLowerCase();
MConversation.render = function () {
  return _({
    "class": 'am-conversation',
    child: [{
      "class": 'am-conversation-avatar-ctn',
      child: 'mcircleavatar.am-conversation-avatar'
    }, {
      "class": 'am-conversation-body',
      child: ['.am-conversation-name', '.am-conversation-short-content']
    }, {
      "class": 'am-conversation-time-ctn',
      child: 'span.am-conversation-time'
    }, {
      "class": 'am-conversation-counter'
    }, '.am-conversation-bottom-line']
  });
};
MConversation.property = {};

/**
 * @type {MConversation}
 */
MConversation.property.name = {
  set: function set(value) {
    value = value || '';
    this.$name.clearChild();
    if (value) {
      this.$name.addChild(_({
        text: value
      }));
    }
    this._name = value;
  },
  get: function get() {
    return this._name;
  }
};

/**
 * @type {MConversation}
 */
MConversation.property.time = {
  set: function set(value) {
    value = value || '';
    this.$time.clearChild().addChild(_({
      text: value
    }));
    this._time = value;
  },
  get: function get() {
    return this._time;
  }
};

/**
 * @type {MConversation}
 */
MConversation.property.shortContent = {
  set: function set(value) {
    if (_typeof(value) == 'object') {
      this.$shortContent.clearChild().addChild(_(value));
    } else {
      this.$shortContent.innerHTML = value + '';
    }
    this._shortContent = value;
  },
  get: function get() {
    return this._shortContent;
  }
};

/**
 * @type {MConversation}
 */
MConversation.property.unread = {
  set: function set(value) {
    if (value) {
      this.addClass('am-status-unread');
    } else {
      this.removeClass('am-status-unread');
    }
  },
  get: function get() {
    return this.containsClass('am-status-unread');
  }
};
_Core["default"].install(MConversation);
var _default = MConversation;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(86099);
var _Core = _interopRequireDefault(__webpack_require__(33274));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;

/***
 *  @extends AElement
 * @constructor
 */
function MHSnapScroller() {
  this.addClass('am-h-snap-scroller');
  //still fail on iOS, disable all
  // this.on('touchstart', this.eventHandler.touchstart);
  // this.on('touchend', this.eventHandler.touchend);
  // this.on('scroll', this.eventHandler.scroll);
  this._scroll = {
    speed: 0,
    lastEventTime: 0,
    homeGoing: false,
    release: true,
    homeX: 0,
    x: 0,
    scrollEnded: true
  };
}
MHSnapScroller.tag = 'MHSnapScroller'.toLowerCase();
MHSnapScroller.render = function () {
  return _({});
};
MHSnapScroller.prototype._findHomeX = function () {
  var bound = this.getBoundingClientRect();
  var centerX = (bound.left + bound.right) / 2;
  var eBounds = Array.prototype.map.call(this.childNodes, function (elt) {
    return elt.getBoundingClientRect();
  }).filter(function (bound) {
    return bound.width > 0;
  });
  var scrollLeft = this.scrollLeft;
  var nearestX = Infinity;
  var nextX = Infinity;
  var childCenterX;
  for (var i = 0; i < eBounds.length; ++i) {
    childCenterX = (eBounds[i].left + eBounds[i].right) / 2;
    if (Math.abs(childCenterX - centerX) < Math.abs(nearestX - centerX)) {
      nearestX = childCenterX;
    }
    if (childCenterX - centerX >= 0 == this._scroll.speed >= 0) {
      if (Math.abs(childCenterX - centerX) < Math.abs(nextX - centerX)) {
        nextX = childCenterX;
      }
    }
  }
  if (nearestX - centerX >= 0 != this._scroll.speed >= 0 && nextX != Infinity) {
    nearestX = nextX;
  }
  return Math.max(0, Math.min(this.scrollWidth - this.clientWidth, scrollLeft + (nearestX - centerX)));
};
MHSnapScroller.prototype.startHomeGoing = function () {
  if (this._scroll.homeGoing || !this._scroll.release || !this._scroll.scrollEnded) return;
  var homeX = this._findHomeX();
  this._scroll.homeX = homeX;
  this._scroll.homeGoing = true;
  if (this._scroll.speed < 50 && this._scroll.speed >= 0) {
    this._scroll.speed = 50;
  } else if (this._scroll.speed > -50 && this._scroll.speed < 0) {
    this._scroll.speed = -50;
  }
  this.eventHandler.homeGoingTick();
};
MHSnapScroller.prototype.stopHomeGoing = function () {
  if (!this._scroll.homeGoing) return;
  this._scroll.homeGoing = false;
};

/***
 *
 * @type {{}|MHSnapScroller}
 */
MHSnapScroller.eventHandler = {};
MHSnapScroller.eventHandler.homeGoingTick = function (toFinish) {
  if (!this._scroll.homeGoing) return;
  if (toFinish === true) {
    this.stopHomeGoing();
    return;
  }
  var last = this._scroll.lastEventTime;
  var now = new Date().getTime();
  var dt = (now - last) / 1000;
  var dx = dt * this._scroll.speed;
  var limitDx = this._scroll.homeX - this._scroll.x;
  var needContinue = false;
  if (Math.abs(dx) >= Math.abs(limitDx) || dx * limitDx <= 0) {
    this._scroll.x = this._scroll.homeX;
  } else {
    this._scroll.x += dx;
    needContinue = true;
  }
  this.scrollLeft = this._scroll.x;
  if (needContinue) requestAnimationFrame(this.eventHandler.homeGoingTick);else requestAnimationFrame(this.eventHandler.homeGoingTick.bind(this, true));
};
MHSnapScroller.eventHandler.stopScroll = function () {
  this._scroll.scrollEnded = true;
  this.startHomeGoing();
};

/***
 *
 * @param {TouchEvent} event
 */
MHSnapScroller.eventHandler.touchstart = function (event) {
  this.stopHomeGoing();
  this._scroll.release = false;
};

/***
 *
 * @param {TouchEvent} event
 */
MHSnapScroller.eventHandler.touchend = function (event) {
  if (event.touches.length === 0) {
    this._scroll.release = true;
    this.startHomeGoing();
  }
};
MHSnapScroller.eventHandler.scroll = function () {
  if (this._scroll.homeGoing) return;
  var last = this._scroll.lastEventTime;
  this._scroll.scrollEnded = false;
  var now = new Date().getTime();
  if (now - last > 100) {
    this._scroll.speed = 0;
    this._scroll.lastEventTime = now;
    this._scroll.x = this.scrollLeft;
  } else if (now > last) {
    this._scroll.speed = (this.scrollLeft - this._scroll.x) * 1000 / (now - last);
    this._scroll.lastEventTime = now;
    this._scroll.x = this.scrollLeft;
  }
  if (this._scroll.stopTimeout > 0) {
    clearTimeout(this._scroll.stopTimeout);
  }
  this._scroll.stopTimeout = setTimeout(this.eventHandler.stopScroll, 30);
};
var _default = MHSnapScroller;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(51231);
var _Core = _interopRequireDefault(__webpack_require__(33274));
var _QuickMenu = _interopRequireDefault(__webpack_require__(8277));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;
function MHeaderBar() {
  this._title = null;
  this._titleDesc = null;
  this._actionIcon = null;
  this._commands = [];
  this._quickmenuHolder = null;
  this._quickmenu = null;
  this.$right = $('.am-header-bar-right', this);
  this.$leftBtn = null;
  this.$titleCtn = null;
  this.$title = null;
  this.$titleDesc = null;
  this.$commands = [];
}
MHeaderBar.tag = 'MHeaderBar'.toLowerCase();
MHeaderBar.render = function () {
  return _({
    extendEvent: ['action', 'command'],
    "class": 'am-header-bar',
    child: [{
      "class": 'am-header-bar-right'
    }]
  });
};
MHeaderBar.prototype.notifyAction = function () {
  this.emit('action', {
    type: 'action',
    target: this
  }, this);
};
MHeaderBar.prototype.notifyCommand = function (commandItem) {
  this.emit('command', {
    type: 'command',
    target: this,
    commandName: commandItem.name,
    commandItem: commandItem
  }, this);
};
MHeaderBar.prototype.showTitle = function (flag) {
  if (!this.$titleCtn && flag) {
    this.$titleCtn = _({
      "class": 'am-header-bar-title-ctn',
      child: [{
        "class": 'am-header-bar-no-size-wrapper',
        child: {
          "class": 'am-header-bar-title-wrapper',
          child: [{
            "class": 'am-header-bar-title'
          }, {
            "class": 'am-header-bar-title-desc'
          }]
        }
      }]
    });
    this.$title = $('.am-header-bar-title', this.$titleCtn);
    this.$titleDesc = $('.am-header-bar-title-desc', this.$titleCtn);
  }
  if (flag) {
    this.insertBefore(this.$titleCtn, this.$right);
  } else {
    if (this.$titleCtn) this.$titleCtn.remove();
  }
};
MHeaderBar.prototype.showActionBtn = function (flag) {
  if (!this.$leftBtn && flag) {
    this.$leftBtn = _({
      tag: 'button',
      "class": 'am-header-bar-left-btn',
      child: 'span.mdi.mdi-chevron-left',
      on: {
        click: this.notifyAction.bind(this)
      }
    });
  }
  if (flag) {
    this.insertBefore(this.$leftBtn, this.firstChild);
  } else {
    if (this.$leftBtn) this.$leftBtn.remove();
  }
};
MHeaderBar.prototype.showQuickMenu = function (flag) {
  if (!this.$quickmenuBtn && flag) {
    this.$quickmenuBtn = _({
      tag: 'button',
      "class": ['am-header-bar-action', 'am-header-bar-quickmenu-btn'],
      child: {
        "class": 'am-header-bar-quickmenu-btn-circle',
        child: ['span.mdi.mdi-dots-horizontal-circle-outline', 'span.mdi.mdi-dots-horizontal-circle']
      }
    });
  }
  if (flag) {
    this.$right.addChild(this.$quickmenuBtn);
  } else {
    if (this.$quickmenuBtn) this.$quickmenuBtn.remove();
  }
};
MHeaderBar.prototype._makeCommandBtn = function (item) {
  return _({
    tag: 'button',
    "class": 'am-header-bar-command',
    child: item.icon || [],
    on: {
      click: this.notifyCommand.bind(this, item)
    }
  });
};
MHeaderBar.property = {};

/**
 * @type {MHeaderBar}
 */
MHeaderBar.property.quickmenu = {
  set: function set(value) {
    if (this._quickmenuHolder) {
      this._quickmenuHolder.remove();
      this._quickmenu = null;
    }
    if (value) {
      this.showQuickMenu(true);
      var button = this.$quickmenuBtn;
      var onClose = value.onClose;
      var onOpen = value.onOpen;
      value.onOpen = function () {
        button.addClass('am-status-active');
        onOpen && onOpen.apply(this, arguments);
      };
      value.onClose = function () {
        button.removeClass('am-status-active');
        onClose && onClose.apply(this, arguments);
      };
      if (!value.getAnchor) {
        value.getAnchor = function () {
          return [2];
        };
      }
      if (!value.getMenuProps && value.props) {
        value.getMenuProps = function () {
          var res = Object.assign({}, value.props);
          if (typeof res.items === "function") {
            res.items = res.items();
          }
          return res;
        };
      }
      this._quickmenuHolder = _QuickMenu["default"].toggleWhenClick(this.$quickmenuBtn, value);
    } else {
      this.showQuickMenu(false);
      value = null;
    }
    this._quickmenu = value;
  },
  get: function get() {
    return this._quickmenu;
  }
};

/**
 * @type {MHeaderBar}
 */
MHeaderBar.property.title = {
  set: function set(value) {
    if (value) {
      this.showTitle(true);
      if (typeof value === 'string') {
        this.$title.innerHTML = value;
      } else {
        this.$title.clearChild().addChild(_(value));
      }
    } else {
      this.showTitle(false);
      value = null;
    }
    this._title = value;
  },
  get: function get() {
    return this._title;
  }
};

/**
 * @type {MHeaderBar}
 */
MHeaderBar.property.titleDesc = {
  set: function set(value) {
    if (value) {
      value = value + '';
      this.showTitle(true);
      this.$titleDesc.clearChild().addChild(_({
        text: value
      }));
    } else {
      this.showTitle(false);
      if (this.$titleDesc) this.$titleDesc.clearChild();
      value = null;
    }
    this._titleDesc = value;
  },
  get: function get() {
    return this._titleDesc;
  }
};

/**
 * @type {MHeaderBar}
 */
MHeaderBar.property.actionIcon = {
  set: function set(value) {
    if (value) {
      this.showActionBtn(true);
      this.$leftBtn.clearChild().addChild(_(value));
    } else {
      this.showActionBtn(false);
      value = null;
    }
    this._actionIcon = value;
  },
  get: function get() {
    return this._actionIcon;
  }
};

/**
 * @type {MHeaderBar}
 */
MHeaderBar.property.commands = {
  set: function set(value) {
    this.$commands.forEach(function (e) {
      e.selftRemove();
    });
    this.$commands = [];
    var commandBtn;
    if (value) {
      var firstChild = this.$right.firstChild;
      if (firstChild) {
        for (var i = 0; i < value.length; ++i) {
          commandBtn = this._makeCommandBtn(value[i]);
          this.$right.addChildBefore(commandBtn, firstChild);
        }
      } else {
        for (var i = 0; i < value.length; ++i) {
          commandBtn = this._makeCommandBtn(value[i]);
          this.$right.addChild(commandBtn);
        }
      }
    } else {
      this._commands = [];
    }
    this._commands = value;
  },
  get: function get() {
    return this._commands;
  }
};
_Core["default"].install(MHeaderBar);
var _default = MHeaderBar;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(85300);
var _Core = _interopRequireDefault(__webpack_require__(33274));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;
function MLeftNavigator() {
  this.on('dragstart', this.eventHandler.modalDragStart).on('drag', this.eventHandler.modalDrag).on('dragend', this.eventHandler.modalDragEnd);
  this.$content = $('.am-navigator-content', this);
  this.$modal = $('.am-navigator-modal', this);
  this._contentWidth = 0;
  this._speedTimeout = -1;
  this._dragSpeed = 0;
  this._preDragTime = 0;
  this._state = -1;
  this._preventDrag = false;
}
MLeftNavigator.tag = 'MLeftNavigator'.toLowerCase();
MLeftNavigator.render = function () {
  return _({
    tag: 'hanger',
    "class": 'am-navigator',
    child: ['.am-navigator-modal', '.am-navigator-content'],
    props: {
      hangOn: 9
    }
  });
};
['addChild', 'addChildBefore', 'addChildAfter', 'clearChild', 'findChildBefore', 'findChildAfter', 'removeChild'].forEach(function (key) {
  MLeftNavigator.prototype[key] = function () {
    return this.$content[key].apply(this.$content, arguments);
  };
});
MLeftNavigator.prototype.getChildNodes = function () {
  return this.$modal.childNodes;
};
MLeftNavigator.prototype.open = function (v0) {
  if (this._state == 1) return;
  v0 = v0 || 1000;
  v0 = Math.max(400, Math.min(4000, v0));
  var ctBound = this.$content.getBoundingClientRect();
  var dx = -ctBound.left;
  var dt = Math.sqrt(2 * dx / v0) / 2;
  this.$content.addStyle('transition', 'right ease-out ' + dt + 's');
  this.$modal.addStyle('transition', 'opacity ease-out ' + dt + 's');
  this.$content.addStyle('right', 'calc(100% - ' + ctBound.width + 'px)');
  this.$modal.addStyle('opacity', '0.5');
  this.addClass('am-open');
  var thisnm = this;
  this._state = -1;
  thisnm.$modal.on('click', thisnm.eventHandler.clickModal);
  setTimeout(function () {
    thisnm._state = 1;
    thisnm.$content.removeStyle('transition');
    thisnm.$modal.removeStyle('transition');
  }, dt * 1000 + 1);
};
MLeftNavigator.prototype.close = function (v0) {
  if (this._state == -1) return;
  this.$modal.off('click', this.eventHandler.clickModal);
  v0 = v0 || 0;
  v0 = v0 || 1000;
  v0 = Math.max(400, Math.min(4000, v0));
  var ctBound = this.$content.getBoundingClientRect();
  var dx = ctBound.right;
  var dt = Math.sqrt(2 * dx / v0) / 2;
  this.$content.addStyle('transition', 'right ease-out ' + dt + 's');
  this.$modal.addStyle('transition', 'opacity ease-out ' + dt + 's');
  this.$content.addStyle('right', '100%');
  setTimeout(this.$modal.addStyle.bind(this.$modal, 'opacity', '0.001'), 4);
  // this.$modal.addStyle('opacity', '0.001');

  var thisnm = this;
  this._state = 0;
  setTimeout(function () {
    thisnm._state = -1;
    thisnm.$content.removeStyle('transition');
    thisnm.$modal.removeStyle('transition');
    thisnm.removeClass('am-open');
  }, dt * 1000 + 1);
};

/** 
 * @type {MLeftNavigator}
 */
MLeftNavigator.eventHandler = {};
MLeftNavigator.eventHandler.modalDragStart = function (event) {
  this.$modal.off('click', this.eventHandler.clickModal);
  this._contentWidth = this.$content.getBoundingClientRect().width;
  this._prevState = this._state;
  this._preDragTime = new Date().getTime();
  this._preMoveDistance = 0;
  this._dragSpeed = 0;
  this._preX = event.clientX;
  var moveVec = event.currentPoint.sub(event.startingPoint);
  if (Math.abs(moveVec.x) > Math.abs(moveVec.y)) {
    this.addClass('am-dragging');
    event.preventDefault();
    this._preventDrag = false;
  } else {
    this._preventDrag = true;
  }
};
MLeftNavigator.eventHandler.modalDrag = function (event) {
  if (this._preventDrag) return;
  var thisnm = this;
  var now = new Date().getTime();
  if (now - this._preDragTime > 10) {
    var dt = now - this._preDragTime;
    this._dragSpeed = (event.clientX - this._preX) * 1000 / dt;
    this._preDragTime = now;
    this._preX = event.clientX;
  }
  if (this._speedTimeout > 0) {
    this._speedTimeout = -1;
  }
  this._speedTimeout = setTimeout(function () {
    thisnm._dragSpeed = 0;
  }, 200);
  var moveVec = event.currentPoint.sub(event.startingPoint);
  var dx;
  if (this._state != 0) {
    event.preventDefault();
    if (this._state == -1) {
      dx = Math.max(0, Math.min(moveVec.x, this._contentWidth));
    } else if (this._state == 1) {
      dx = Math.max(0, Math.min(this._contentWidth + moveVec.x, this._contentWidth));
    }
    this.$content.addStyle({
      right: 'calc(100% - ' + dx + 'px)'
    });
    this.$modal.addStyle('opacity', dx / this._contentWidth / 2 + '');
  }

  // this.$modal.addStyle('opacity', dx / this._contentWidth / 2 +'')
};

MLeftNavigator.eventHandler.clickModal = function (event) {
  if (event.target == this.$modal) this.close();
};

/**
 * throwing_speed 400px/s
 * 
 */
MLeftNavigator.eventHandler.modalDragEnd = function () {
  if (this._preventDrag) {
    this._preventDrag = false;
  } else {
    this.removeClass('am-dragging');
    this._state = 0; //animating state
    var ctBound = this.$content.getBoundingClientRect();
    if (this._dragSpeed > -200 || ctBound.right > ctBound.width / 2 && this._dragSpeed >= 0) {
      this.open(this._dragSpeed);
    } else if (this._dragSpeed < -200 || ctBound.right < ctBound.width / 2 && this._dragSpeed <= 0) {
      this.close(-this._dragSpeed);
    } else {
      if (this._prevState == 1) this.open();else if (this._prevState == -1) this.close();
    }
  }
};
_Core["default"].install(MLeftNavigator);
var _default = MLeftNavigator;
exports["default"] = _default;

/***/ }),

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

"use strict";


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
}));
var _exportNames = {};
Object.defineProperty(exports, "default", ({
  enumerable: true,
  get: function get() {
    return _MListModal["default"];
  }
}));
var _MListModal = _interopRequireWildcard(__webpack_require__(11032));
Object.keys(_MListModal).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
  if (key in exports && exports[key] === _MListModal[key]) return;
  Object.defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _MListModal[key];
    }
  });
});
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; }

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(64194);
var _Core = _interopRequireDefault(__webpack_require__(33274));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _MMatMenuItem = _interopRequireDefault(__webpack_require__(10399));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;
function MMatMenu() {}
MMatMenu.tag = 'MMatMenu'.toLowerCase();
MMatMenu.render = function () {
  return _({
    extendEvent: ['press'],
    "class": 'am-mat-menu'
  });
};
MMatMenu.prototype.notifyPress = function (args) {
  this.emit('press', Object.assign({
    target: this,
    type: 'press'
  }, args || {}), this);
};
MMatMenu.property = {};
MMatMenu.property.items = {
  set: function set(items) {
    items = items || [];
    this.clearChild();
    var item;
    var itemElt;
    for (var i = 0; i < items.length; ++i) {
      item = items[i];
      itemElt = _({
        tag: 'mmatmenuitem',
        props: Object.assign({}, item),
        on: {
          press: this.eventHandler.itemPress
        }
      });
      this.addChild(itemElt);
    }
  },
  get: function get() {
    return Array.map.call(this.childNodes, function (elt) {
      return {
        text: elt.text,
        items: elt.items,
        icon: elt.icon
      };
    });
  }
};

/***
 * @type {MMatMenuItem}
 */
MMatMenu.eventHandler = {};
MMatMenu.eventHandler.itemPress = function (event) {
  this.notifyPress(event);
};
_Core["default"].install(MMatMenu);
var _default = MMatMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(64194);
var _Core = _interopRequireDefault(__webpack_require__(33274));
var _MMdiRect = _interopRequireDefault(__webpack_require__(29001));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;
function MMatMenuButton() {
  this.$toggleIcon = $('.am-mat-menu-button-toggle-icon-ctn span.mdi.mdi-chevron-right', this);
  this.$icon = null;
  this.$iconCtn = $('.am-mat-menu-button-icon-ctn', this);
  this.$text = $('.am-mat-menu-button-text', this);
  this.icon = {
    tag: 'mmdirect',
    props: {
      iconName: "home"
    }
  };
  this._status = 'none';
  this._level = 0;
  this.$level = $('.am-mat-menu-button-level', this);
}
MMatMenuButton.tag = 'MMatMenuButton'.toLowerCase();
MMatMenuButton.render = function () {
  return _({
    tag: 'button',
    "class": 'am-mat-menu-button',
    child: [{
      "class": 'am-mat-menu-button-level'
    }, {
      "class": 'am-mat-menu-button-icon-ctn'
    }, {
      tag: 'span',
      "class": 'am-mat-menu-button-text',
      child: {
        text: 'Trang chủ'
      }
    }, {
      "class": 'am-mat-menu-button-toggle-icon-ctn',
      child: 'span.mdi.mdi-chevron-right'
    }]
  });
};
MMatMenuButton.property = {};

/**
 * @type {MMatMenuButton}
*/
MMatMenuButton.property.level = {
  set: function set(value) {
    value = Math.max(0, value || 0);
    this.$level.innerHTML = '&nbsp;'.repeat(value * 4);
    this.attr('data-level', value);
  },
  get: function get() {
    return this._level;
  }
};

/**
 * @type {MMatMenuButton}
*/
MMatMenuButton.property.status = {
  set: function set(value) {
    this.removeClass('am-status-open').removeClass('am-status-close');
    if (value == 'open') {
      this.$toggleIcon.addClass('mdi-rotate-90');
      this.addClass('am-status-open');
    } else if (value == 'close') {
      this.$toggleIcon.removeClass('mdi-rotate-90');
      this.addClass('am-status-close');
    } else {
      value = 'none';
    }
    this._status = value;
  },
  get: function get() {
    return this._status;
  }
};

/**
 * @type {MMatMenuButton}
*/
MMatMenuButton.property.icon = {
  set: function set(value) {
    value = value || null;
    if (this.$icon) {
      this.$icon.remove();
    }
    if (value) {
      this.$icon = _(value).addTo(this.$iconCtn);
    }
  },
  get: function get() {
    return this._icon;
  }
};

/**
 * @type {MMatMenuButton}
*/
MMatMenuButton.property.text = {
  set: function set(value) {
    this.$text.firstChild.data = value;
  },
  get: function get() {
    return this.$text.firstChild.data;
  }
};
_Core["default"].install(MMatMenuButton);
var _default = MMatMenuButton;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(64194);
var _Core = _interopRequireDefault(__webpack_require__(33274));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;
function MMatMenuItem() {
  this.$node = $('mmatmenubutton', this).on('click', this.eventHandler.clickNode);
  _OOP["default"].drillProperty(this, this.$node, ['icon', 'text']);
  /**
   * @type {import('./MMatMenu').default}
   */
  this.$matmenu = $('mmatmenu', this).on('press', this.eventHandler.itemPress);
  this.$dropdown = $('.am-mat-menu-dropdown', this);
}
MMatMenuItem.tag = 'MMatMenuItem'.toLowerCase();
MMatMenuItem.render = function () {
  return _({
    extendEvent: ['press'],
    "class": 'am-mat-menu-item',
    child: [{
      tag: 'mmatmenubutton'
    }, {
      "class": 'am-mat-menu-dropdown',
      child: {
        tag: 'mmatmenu'
      }
    }]
  });
};
MMatMenuItem.prototype.getNode = function () {
  return this.$node;
};
MMatMenuItem.prototype.openChild = function () {
  this.$node.status = 'open';
  this.addClass('am-status-open');
  var menuBound = this.$matmenu.getBoundingClientRect();
  this.$dropdown.addStyle('max-height', menuBound.height + 2 + 'px');
};
MMatMenuItem.prototype.closeChild = function () {
  this.$node.status = 'close';
  this.removeClass('am-status-open');
  this.$dropdown.removeStyle('max-height');
};
MMatMenuItem.prototype.toggleChild = function () {
  if (this.$node.status == 'open') {
    this.closeChild();
  } else if (this.$node.status == 'close') {
    this.openChild();
  }
};
MMatMenuItem.prototype.notifyPress = function (args) {
  this.emit('press', Object.assign({
    target: this,
    type: 'press',
    item: this,
    menuItem: this
  }, args || {}), this);
};
MMatMenuItem.property = {};
MMatMenuItem.property.items = {
  set: function set(items) {
    items = items || [];
    if (items.length > 0) this.$node.status = 'close';else this.$node.status = 'none';
    this.$matmenu.items = items;
    this.level = this.level; // update
  },

  get: function get() {
    return this.$matmenu.items;
  }
};
MMatMenuItem.property.level = {
  set: function set(value) {
    this.$node.level = value;
    value = this.$node.level;
    for (var i = 0; i < this.$matmenu.childNodes.length; ++i) {
      this.$matmenu.childNodes[i].level = value + 1;
    }
  },
  get: function get() {
    return this.$node.level;
  }
};

/**
 * @type {MMatMenuItem}
 */
MMatMenuItem.eventHandler = {};
MMatMenuItem.eventHandler.clickNode = function (event) {
  if (this.$node.status == 'none') {
    //todo
    this.notifyPress();
  } else {
    this.toggleChild();
  }
};
MMatMenuItem.eventHandler.itemPress = function (event) {
  this.notifyPress(event);
};
_Core["default"].install(MMatMenuItem);
var _default = MMatMenuItem;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(6913);
var _Core = _interopRequireDefault(__webpack_require__(33274));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;
function MMdiRect() {
  this.$icon = $('.am-mdi-rect-icon', this);
  this._iconName = undefined;
}
MMdiRect.tag = 'MMdiRect'.toLowerCase();
MMdiRect.render = function () {
  return _({
    "class": 'am-mdi-rect',
    child: 'span.mdi.am-mdi-rect-icon'
  });
};
MMdiRect.property = {};

/**
 * @type {MMdiRect}
 */
MMdiRect.property.iconName = {
  set: function set(value) {
    value = value || null;
    if (this._iconName) this.$icon.removeClass('mdi-' + this._iconName);
    this._iconName = value;
    if (this._iconName) this.$icon.addClass('mdi-' + this._iconName);
  },
  get: function get() {
    return this._iconName;
  }
};
MMdiRect.attribute = {};
MMdiRect.attribute.iconName = {
  set: function set(value) {
    this.iconName = value;
  },
  get: function get() {
    return this.iconName;
  },
  remove: function remove() {
    this.iconName = undefined;
  }
};
_Core["default"].install(MMdiRect);
var _default = MMdiRect;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(37907);
var _Core = _interopRequireDefault(__webpack_require__(33274));
var _utils = __webpack_require__(84512);
var _MMessageTool = _interopRequireDefault(__webpack_require__(14230));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;

/***
 * @extends MessageInput
 * @constructor
 */
function MMessageInput() {
  this.autoSend = true;
  this.$left = _('.am-message-input-left').addTo(this);
  this.$moreBtn = _({
    tag: 'button',
    "class": ['as-message-input-plugin-btn', 'am-message-input-plugin-more'],
    child: 'span.mdi.mdi-plus'
  }).addTo(this.$left).on('click', this.eventHandler.clickMore);
  this.$cameraBtn = _({
    tag: 'button',
    "class": ['as-message-input-plugin-btn', 'am-message-input-plugin-camera'],
    child: 'span.mdi.mdi-camera-outline'
  }).on('click', this.eventHandler.clickCameraBtn);
  this.$right = $('.as-message-input-right', this);
  this.$right.addChildBefore(this.$cameraBtn, this.$fileBtn);
}
MMessageInput.tag = 'mmessageinput';
MMessageInput.render = function (data) {
  return _('messageinput.am-message-input', true);
};

/***
 *
 * @type {{}|MMessageInput}
 */
MMessageInput.eventHandler = {};
MMessageInput.eventHandler.clickCameraBtn = function (event) {
  var thisMi = this;
  (0, _utils.openFileDialog)('camera').then(function (files) {
    if (files.length > 0) {
      this.notifyAddFiles(files).then(function (files) {
        this.handleAddingFileByType(files);
      }.bind(this));
    }
  }.bind(this));
};
MMessageInput.eventHandler.clickMore = function () {
  _MMessageTool["default"].open().then(function (result) {
    if (result.type === 'file' || result.type == 'image') {
      this.notifyAddFiles(result.files).then(function (files) {
        this.handleAddingFileByType(files);
      }.bind(this));
    }
  }.bind(this), function () {});
};
_Core["default"].install(MMessageInput);
var _default = MMessageInput;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Core = _interopRequireDefault(__webpack_require__(33274));
__webpack_require__(57223);
var _Dom = _interopRequireDefault(__webpack_require__(64821));
var _utils = __webpack_require__(84512);
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _stringGenerate = __webpack_require__(10713);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;
var supportContactPicker = 'contacts' in navigator && 'ContactsManager' in window && false; //disable until done

/***
 * @extends AElement
 * @constructor
 */
function MMessageTool() {
  this.$contactPicker = $('.am-message-tool-contact-picker', this);
  if (!supportContactPicker) {
    this.$contactPicker.remove();
    // this.$contactPicker.addStyle('display', 'none');
  }

  this.$image = $('.am-message-tool-image', this).on('click', this.openImages.bind(this));
  this.$video = $('.am-message-tool-video', this).on('click', this.openVideos.bind(this));
  this.$file = $('.am-message-tool-file', this).on('click', this.openFiles.bind(this));
  this.$closeBtn = $('.am-message-tool-header-close-btn', this).on('click', this.notifyClose.bind(this));
}
MMessageTool.tag = 'MMessageTool'.toLowerCase();
function makePlugin(data) {
  return {
    "class": ['am-message-tool-plugin'].concat(data["class"] ? [data["class"]] : []),
    child: [{
      "class": 'am-message-tool-plugin-icon-ctn',
      child: data.icon
    }, {
      "class": 'am-message-tool-plugin-content',
      child: [{
        "class": 'am-message-tool-plugin-name',
        child: {
          text: data.name
        }
      }, {
        "class": 'am-message-tool-plugin-desc',
        child: {
          text: data.desc
        }
      }]
    }]
  };
}
MMessageTool.render = function () {
  return _({
    "class": 'am-message-tool',
    extendEvent: ['pressclose', 'resolve'],
    child: [{
      "class": 'am-message-tool-box',
      child: [{
        "class": 'am-message-tool-header',
        child: [{
          "class": 'am-message-tool-header-close-btn-ctn',
          child: {
            tag: 'button',
            "class": 'am-message-tool-header-close-btn',
            child: 'span.mdi.mdi-close'
          }
        }, {
          "class": 'am-message-tool-title',
          child: {
            text: this.prototype.titleText
          }
        }]
      }, {
        "class": 'am-message-tool-body',
        child: [makePlugin({
          "class": 'am-message-tool-image',
          name: "Ảnh",
          desc: "Chia sẻ ảnh",
          icon: 'span.mdi.mdi-file-image-outline'
        }), makePlugin({
          "class": 'am-message-tool-video',
          name: "Video",
          desc: "Chia sẻ video",
          icon: 'span.mdi.mdi-file-video-outline'
        }), makePlugin({
          "class": 'am-message-tool-file',
          name: "Tệp",
          desc: "Chia sẻ tệp",
          icon: 'span.mdi.mdi-file-outline'
        }), makePlugin({
          "class": 'am-message-tool-contact-picker',
          name: "Liên hệ",
          desc: "Chia sẻ liên hệ từ danh bạ",
          icon: 'span.mdi.mdi-account-box-outline'
        })]
      }]
    }]
  });
};
MMessageTool.prototype.titleText = "Nội dung và công cụ";
MMessageTool.prototype.openImages = function () {
  var thisMT = this;
  return (0, _utils.openFileDialog)({
    multiple: true,
    accept: "image/*"
  }).then(function (files) {
    if (files && files.length > 0) {
      thisMT.notifyResolve({
        type: 'image',
        files: files
      });
    } else {
      thisMT.notifyClose();
    }
  });
};
MMessageTool.prototype.openVideos = function () {
  var thisMT = this;
  (0, _utils.openFileDialog)({
    multiple: true,
    accept: "video/*"
  }).then(function (files) {
    console.log('resolve', files);
    if (files && files.length > 0) {
      thisMT.notifyResolve({
        type: 'video',
        files: files
      });
    } else {
      thisMT.notifyClose();
    }
  });
};
MMessageTool.prototype.openFiles = function () {
  var thisMT = this;
  return (0, _utils.openFileDialog)({
    multiple: true
  }).then(function (files) {
    if (files && files.length > 0) {
      thisMT.notifyResolve({
        type: 'file',
        files: files
      });
    } else {
      thisMT.notifyClose();
    }
  });
};
MMessageTool.prototype.notifyClose = function () {
  this.emit('pressclose', {
    type: 'pressclose',
    target: this
  }, this);
};
MMessageTool.prototype.notifyResolve = function (value) {
  this.emit('resolve', {
    type: 'resolve',
    target: this,
    value: value
  }, this);
};
_Core["default"].install(MMessageTool);
MMessageTool.$share = _('mmessagetool');
MMessageTool.resolveCB = null;
MMessageTool.rejectCB = null;
MMessageTool.currentSession = null;
MMessageTool._closeTimeout = -1;
MMessageTool.open = function () {
  if (MMessageTool._closeTimeout >= 0) {
    clearTimeout(MMessageTool._closeTimeout);
    MMessageTool._closeTimeout = -1;
  }
  if (typeof MMessageTool.resolveCB == "function") {
    MMessageTool.rejectCB();
    MMessageTool.resolveCB = null;
    MMessageTool.rejectCB = null;
  }

  // MMessageTool.$share
  MMessageTool.$share.addStyle('visibility', 'hidden');
  MMessageTool.$share.addClass('am-hiding');
  setTimeout(function () {
    MMessageTool.$share.removeStyle('visibility');
    MMessageTool.$share.removeClass('am-hiding');
  }, 1);
  MMessageTool.$share.addTo(document.body);
  var ss = (0, _stringGenerate.randomIdent)(20);
  return new Promise(function (rs, rj) {
    MMessageTool.currentSession = ss;
    MMessageTool.resolveCB = rs;
    MMessageTool.rejectCB = rj;
    function finish() {
      MMessageTool.$share.off('pressclose', pressClose);
      MMessageTool.$share.off('resolve', resolve);
      if (MMessageTool.currentSession !== ss) return;
      MMessageTool.resolveCB = null;
      MMessageTool.resolveCB = null;
      MMessageTool.rejectCB = null;
      MMessageTool.$share.addClass('am-hiding');
      MMessageTool._closeTimeout = setTimeout(function () {
        MMessageTool.$share.remove();
      }, 250);
      if (arguments.length === 0) {
        rj();
      } else {
        rs(arguments[0]);
      }
    }
    function pressClose() {
      finish();
    }
    function resolve(event) {
      finish(event.value);
    }
    MMessageTool.$share.on('pressclose', pressClose);
    MMessageTool.$share.on('resolve', resolve);
  });
};
var _default = MMessageTool;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.makeItem = makeItem;
exports.releaseBoxItem = releaseBoxItem;
exports.requireBoxItem = requireBoxItem;
__webpack_require__(64952);
var _MSelectMenu = _interopRequireDefault(__webpack_require__(53984));
var _Core = _interopRequireWildcard(__webpack_require__(33274));
__webpack_require__(33190);
var _MSelectBox = _interopRequireDefault(__webpack_require__(28281));
var _SelectListItem = __webpack_require__(57040);
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 }; }
var boxItemPool = [];
function closeBoxItem(event) {
  var thisSB = this.$parent;
  if (!thisSB) return;
  var itemValue = this.value;
  var index = thisSB.values.indexOf(itemValue);
  if (index >= 0) {
    thisSB.values = thisSB.values.slice(0, index).concat(thisSB.values.slice(index + 1));
    thisSB.emit('remove', {
      type: 'remove',
      values: thisSB.values,
      target: thisSB,
      itemElt: this,
      value: this.value,
      itemData: this.data
    }, thisSB);
    thisSB.emit('change', {
      type: 'change',
      values: thisSB.values,
      target: thisSB
    }, thisSB);
  }
}

/**
 * @returns {MSelectListItem}
 */
function makeItem() {
  return (0, _Core._)({
    tag: 'selectboxitem',
    on: {
      close: closeBoxItem
    }
  });
}
function requireBoxItem($parent) {
  var item;
  if (boxItemPool.length > 0) {
    item = boxItemPool.pop();
  } else {
    item = makeItem();
  }
  item.$parent = $parent;
  return item;
}
function releaseBoxItem(item) {
  item.$parent = null;
  boxItemPool.push(item);
}

/***
 * @extends AElement
 * @constructor
 */
function MMultiCheckMenu() {
  this._isFocus = false;
  this._values = [];
  this._orderly = false;
  this._itemsByValue = {};
  this.$boxItems = [];
  this.$selectlist = (0, _Core._)({
    tag: 'mchecklistmodal',
    on: {
      change: this.eventHandler.modalChange,
      pressout: this.eventHandler.modalSubmit,
      pressclose: this.eventHandler.modalSubmit,
      cancel: this.eventHandler.modalCancel
    }
  });
  this.on('click', this.eventHandler.click);
  this.$attachhook = (0, _Core.$)('attachhook', this).on('error', this.eventHandler.attached);
  this._tempValues = []; //20p
  this.orderly = false;
  this.items = [];
  this.values = [];
}
MMultiCheckMenu.tag = 'MMultiCheckMenu'.toLowerCase();
Object.assign(MMultiCheckMenu.prototype, _MSelectBox["default"].prototype);
MMultiCheckMenu.property = Object.assign({}, _MSelectBox["default"].property);
MMultiCheckMenu.eventHandler = Object.assign({}, _MSelectBox["default"].eventHandler);
MMultiCheckMenu.render = function () {
  return (0, _Core._)({
    tag: 'bscroller',
    "class": ['absol-selectbox', 'absol-bscroller', 'am-select-box', 'am-multi-check-menu'],
    extendEvent: ['change', 'add', 'remove', 'minwidthchange'],
    attr: {
      tabindex: '1'
    },
    child: 'attachhook'
  }, true);
};
MMultiCheckMenu.property.isFocus = {
  set: function set(value) {
    if (!this._isFocus && value) {
      this._tempValues = this._values.slice();
      this.$selectlist.values = this._tempValues;
    }
    _MSelectBox["default"].property.isFocus.set.call(this, value);
  },
  get: _MSelectBox["default"].property.isFocus.get
};
MMultiCheckMenu.eventHandler.modalChange = function (event) {
  var value, idx;
  switch (event.action) {
    case "check":
      value = event.value;
      idx = this._tempValues.indexOf(value);
      if (idx < 0) {
        this._tempValues.push(value);
        this._sortValuesIfNeed(this._tempValues);
      }
      break;
    case "uncheck":
      value = event.value;
      idx = this._tempValues.indexOf(value);
      if (idx >= 0) {
        this._tempValues.splice(idx, 1);
      }
      break;
    case "check_all":
      this._tempValues = this._items.map(function (item) {
        return (0, _SelectListItem.getValueOfListItem)(item);
      });
      break;
    case "uncheck_all":
      this._tempValues.splice(0, this._tempValues.length);
      break;
  }
  this.viewItemsByValues(this._tempValues);
};
MMultiCheckMenu.eventHandler.modalSubmit = function (event) {
  var curDict = this._values.reduce(function (ac, cr) {
    ac[cr + ''] = true;
    return ac;
  }, {});
  var newDict = this._tempValues.reduce(function (ac, cr) {
    ac[cr + ''] = true;
    return ac;
  }, {});
  var removedValues = this._values.filter(function (val) {
    return !newDict[val + ''];
  });
  var addedValues = this._tempValues.filter(function (val) {
    return !curDict[val + ''];
  });
  this._values = this._tempValues.slice();
  this._sortValuesIfNeed(this._values);
  this.$selectlist.remove();
  if (removedValues.length > 0) {
    removedValues.forEach(function (value) {
      var item = this._itemsByValue[value + ''];
      this.emit('remove', {
        type: 'remove',
        itemData: item,
        value: value
      }, this);
    }.bind(this));
  }
  if (addedValues.length > 0) {
    addedValues.forEach(function (value) {
      var item = this._itemsByValue[value + ''];
      this.emit('remove', {
        type: 'add',
        itemData: item,
        value: value
      }, this);
    }.bind(this));
  }
  if (removedValues.length > 0 || addedValues.length > 0) {
    this.emit('change', {
      type: 'change',
      values: this.values,
      target: this
    }, this);
  }
  this.isFocus = false;
};
MMultiCheckMenu.eventHandler.modalCancel = function (event) {
  this.viewItemsByValues(this._values);
  this.isFocus = false;
};
_Core["default"].install('MSelectBox'.toLowerCase(), MMultiCheckMenu);
_Core["default"].install(MMultiCheckMenu);
var _default = MMultiCheckMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(45090);
var _Core = _interopRequireDefault(__webpack_require__(33274));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;
function MNavigatorMenu() {
  this.$header = $('.am-navigator-menu-body', this);
  this.$body = $('.am-navigator-menu-body', this);
  var data = [{
    items: [{
      text: 'Trang chủ',
      icon: 'span.mdi.mdi-home'
    }]
  }, {
    gname: 'Danh mục',
    items: [{
      text: 'Kiểu dữ liệu',
      icon: 'span.mdi.mdi-alpha-t-box-outline'
    }, {
      text: 'Bảng',
      icon: 'span.mdi.mdi-file-table-outline'
    }, {
      text: 'Trạng thái',
      icon: 'span.mdi.mdi-check'
    }, {
      text: 'Nhóm đối tượng',
      icon: 'span.mdi.mdi-google-circles-communities'
    }, {
      text: 'Đối tượng',
      icon: 'span.mdi.mdi-cube-outline'
    }, {
      text: 'Chat',
      icon: 'span.mdi.mdi-chat-outline'
    }, {
      text: 'Quốc gia',
      icon: 'span.mdi.mdi-earth'
    }, {
      text: 'Công ty',
      icon: 'span.mdi.mdi-warehouse'
    }, {
      text: 'Liên hệ',
      icon: 'span.mdi.mdi-contact-mail'
    }, {
      text: 'Loại',
      icon: 'span.mdi.mdi-grain'
    }]
  }, {
    gname: 'Báo cáo',
    items: [{
      text: 'Báo cáo của tôi',
      icon: 'span.mdi.mdi-note-text'
    }, {
      text: 'Báo cáo công khai',
      icon: 'span.mdi.mdi-note-text-outline'
    }]
  }, {
    gname: 'Hệ thống',
    items: [{
      text: 'Người dùng',
      icon: 'span.mdi.mdi-account-outline'
    }, {
      text: 'Hồ sơ cá nhân',
      icon: 'span.mdi.mdi-file-account'
    }, {
      text: 'Đăng xuất',
      icon: 'span.mdi.mdi-logout'
    }]
  }];
  var thismn = this;
  data.forEach(function (gr) {
    thismn.$body.addChild(thismn._makeGroup(gr.gname, gr.items));
  });
}
MNavigatorMenu.tag = 'MNavigatorMenu'.toLowerCase();
MNavigatorMenu.render = function () {
  return _({
    tag: 'mleftnavigator',
    "class": 'am-navigator-menu',
    child: [{
      "class": 'am-navigator-menu-header',
      child: [{
        "class": 'am-navigator-menu-avatar-ctn',
        child: '.am-navigator-menu-avatar'
      }, {
        "class": 'am-navigator-menu-full-name',
        child: {
          text: 'Phạm Quốc Du Thiên'
        }
      }, {
        "class": 'am-navigator-menu-email',
        child: {
          text: 'blueskythien2010@live.com'
        }
      }]
    }, {
      "class": 'am-navigator-menu-body',
      child: []
    }]
  }, true);
};
/**
 *
                    {
                        class: 'am-navigator-menu-group',
                        child: [

                            {
                                class: 'am-navigator-menu-item',
                                child: [
                                    {
                                        class: 'am-navigator-menu-item-icon-ctn',
                                        child: 'span.mdi.mdi-home'
                                    },
                                    {
                                        tag: 'span',
                                        class: 'am-navigator-menu-item-text',
                                        child: { text: 'Trang chủ' }
                                    }
                                ]

                            }
                        ]
                    },
                    {
                        class: 'am-navigator-menu-group',
                        child: [
                            {
                                class: 'am-navigator-menu-group-name',
                                child: { text: 'Danh mục' }
                            },
                            {
                                class: 'am-navigator-menu-item',
                                child: [
                                    {
                                        class: 'am-navigator-menu-item-icon-ctn',
                                        child: 'span.mdi.mdi-alpha-t-box-outline'
                                    },
                                    {
                                        tag: 'span',
                                        class: 'am-navigator-menu-item-text',
                                        child: { text: 'Kiểu dữ liệu' }
                                    }
                                ]

                            }
                        ]
                    }
 */

MNavigatorMenu.prototype._makeItem = function (icon, text) {
  return _({
    "class": 'am-navigator-menu-item',
    child: [{
      "class": 'am-navigator-menu-item-icon-ctn',
      child: icon ? icon : []
    }, {
      tag: 'span',
      "class": 'am-navigator-menu-item-text',
      child: {
        text: text
      }
    }]
  });
};
MNavigatorMenu.prototype._makeGroup = function (groupName, items) {
  var aobj = {
    "class": 'am-navigator-menu-group',
    child: []
  }; //absol object
  if (groupName) {
    aobj.child.push({
      "class": 'am-navigator-menu-group-name',
      child: {
        text: groupName + ''
      }
    });
  }
  ;
  var thismn = this;
  aobj.child = aobj.child.concat(items.map(function (item) {
    return thismn._makeItem(item.icon, item.text);
  }));
  return _(aobj);
};
MNavigatorMenu.property = {};

/**
 * @type {MNavigatorMenu}
 */
MNavigatorMenu.property.headerBackgroundSrc = {
  set: function set() {},
  get: function get() {}
};

/**
 * @type {MNavigatorMenu}
 */
MNavigatorMenu.property.avatarSrc = {
  set: function set() {},
  get: function get() {}
};
_Core["default"].install(MNavigatorMenu);
var _default = MNavigatorMenu;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.makeItem = makeItem;
exports.releaseBoxItem = releaseBoxItem;
exports.requireBoxItem = requireBoxItem;
__webpack_require__(64952);
var _MSelectMenu = _interopRequireDefault(__webpack_require__(53984));
var _Core = _interopRequireDefault(__webpack_require__(33274));
var _MListModal = _interopRequireWildcard(__webpack_require__(57305));
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 }; }
/*global absol*/
var _ = _Core["default"]._;
var $ = _Core["default"].$;
var boxItemPool = [];
function closeBoxItem(event) {
  var thisSB = this.$parent;
  if (!thisSB) return;
  var itemValue = this.value;
  var index = thisSB.values.indexOf(itemValue);
  if (index >= 0) {
    thisSB.values = thisSB.values.slice(0, index).concat(thisSB.values.slice(index + 1));
    thisSB.emit('remove', {
      type: 'remove',
      values: thisSB.values,
      target: thisSB,
      itemElt: this,
      value: this.value,
      itemData: this.data
    }, thisSB);
    thisSB.emit('change', {
      type: 'change',
      values: thisSB.values,
      target: thisSB
    }, thisSB);
  }
}

/**
 * @returns {MSelectListItem}
 */
function makeItem() {
  return _({
    tag: 'selectboxitem',
    on: {
      close: closeBoxItem
    }
  });
}
function requireBoxItem($parent) {
  var item;
  if (boxItemPool.length > 0) {
    item = boxItemPool.pop();
  } else {
    item = makeItem();
  }
  item.$parent = $parent;
  return item;
}
function releaseBoxItem(item) {
  item.$parent = null;
  boxItemPool.push(item);
}

/***
 * @extends Element
 * @constructor
 */
function MSelectBox() {
  this._isFocus = false;
  this._values = [];
  this._orderly = false;
  this._itemsByValue = {};
  this.$boxItems = [];
  this.$selectlist = _('mlistmodal');
  this.$selectlist.displayValue = _MListModal.VALUE_HIDDEN;
  this.$selectlist.on('pressitem', this.eventHandler.pressItem, true).on('pressout', this.eventHandler.pressOut).on('pressclose', this.eventHandler.pressOut);
  this.on('click', this.eventHandler.click);
  this.$attachhook = $('attachhook', this).on('error', this.eventHandler.attached);
  this._values = [];
  this.orderly = false;
  this.items = [];
  this.values = [];
}
MSelectBox.tag = 'MSelectBox'.toLowerCase();
MSelectBox.render = function () {
  return _({
    tag: 'bscroller',
    "class": ['absol-selectbox', 'absol-bscroller', 'am-select-box'],
    extendEvent: ['change', 'add', 'remove', 'minwidthchange'],
    attr: {
      tabindex: '1'
    },
    child: 'attachhook'
  }, true);
};
MSelectBox.prototype.getRecommendWith = function () {
  return this.$selectlist.estimateSize.textWidth + 60;
};
MSelectBox.prototype._dictByValue = _MSelectMenu["default"].prototype._dictByValue;
MSelectBox.property = {};
MSelectBox.property.disabled = _MSelectMenu["default"].property.disabled;
MSelectBox.property.hidden = _MSelectMenu["default"].property.hidden;
MSelectBox.property.enableSearch = _MSelectMenu["default"].property.enableSearch;
MSelectBox.prototype.init = function (props) {
  props = props || [];
  Object.keys(props).forEach(function (key) {
    if (props[key] === undefined) delete props[key];
  });
  this["super"](props);
};
MSelectBox.prototype._requireBoxItems = function (n) {
  var boxItemElt;
  while (this.$boxItems.length < n) {
    boxItemElt = requireBoxItem(this);
    this.$boxItems.push(boxItemElt);
    this.addChild(boxItemElt);
  }
  while (this.$boxItems.length > n) {
    boxItemElt = this.$boxItems.pop();
    boxItemElt.selfRemove();
    releaseBoxItem(boxItemElt);
  }
};
MSelectBox.prototype._sortValuesIfNeed = function (values) {
  if (this._orderly) {
    var thisMB = this;
    values.sort(function (a, b) {
      var aItem = thisMB._itemsByValue[a];
      var bItem = thisMB._itemsByValue[b];
      if (!aItem) return 1;
      if (!bItem) return -1;
      return aItem.__index__ - bItem.__index__;
    });
  }
};
MSelectBox.prototype._assignBoxItems = function (values) {
  var n = values.length;
  var item;
  var value;
  for (var i = 0; i < n; ++i) {
    value = values[i];
    item = this._itemsByValue[value];
    this.$boxItems[i].data = item || {
      text: 'error'
    };
  }
};
MSelectBox.prototype._updateValues = function () {
  this.viewItemsByValues(this._values);
};
MSelectBox.prototype.viewItemsByValues = function (values) {
  this._requireBoxItems(values.length);
  this._assignBoxItems(values);
};
MSelectBox.prototype.querySelectedItems = function () {
  return Array.prototype.map.call(this.$holderItem.childNodes, function (e) {
    return e.data;
  });
};
MSelectBox.property.isFocus = _MSelectMenu["default"].property.isFocus;

/***
 *
 * @type {MSelectBox}
 */
MSelectBox.property.items = {
  set: function set(items) {
    items = items || [];
    items.forEach(function (item, i) {
      item.__index__ = i;
    });
    this._items = items;
    this._itemsByValue = this._dictByValue(items);
    this.$selectlist.items = items;
    this.addStyle('--item-min-width', this.$selectlist.estimateSize.textWidth + 60 + 'px');
    this._sortValuesIfNeed(this._values);
    this._updateValues();
  },
  get: function get() {
    return this._items;
  }
};
MSelectBox.property.values = {
  set: function set(values) {
    values = values || [];
    values = values instanceof Array ? values : [values];
    values = values.slice();
    this._values = values;
    this.$selectlist.values = values;
    this._sortValuesIfNeed(this._values);
    this._updateValues();
  },
  get: function get() {
    return this._values || [];
  }
};
MSelectBox.property.orderly = {
  set: function set(value) {
    this._orderly = !!value;
    this._sortValuesIfNeed(this._values);
    this._updateValues();
  },
  get: function get() {
    return !!this._orderly;
  }
};

/***
 *
 * @type {MSelectBox}
 */
MSelectBox.eventHandler = {};
MSelectBox.eventHandler.pressOut = _MSelectMenu["default"].eventHandler.pressOut;
MSelectBox.eventHandler.attached = _MSelectMenu["default"].eventHandler.attached;
MSelectBox.eventHandler.click = function (event) {
  if (event.target == this) {
    this.isFocus = !this.isFocus;
  }
};
MSelectBox.eventHandler.pressItem = function (event) {
  this.values.push(event.value);
  this._sortValuesIfNeed(this._values);
  this._updateValues();
  this.$selectlist.values = this.values;
  this.emit('add', {
    type: 'add',
    itemData: event.itemElt.data,
    value: event.value,
    values: this.values
  }, this);
  this.emit('change', {
    type: 'change',
    values: this.values,
    target: this
  }, this);
  this.isFocus = false;
};
_Core["default"].install('MSelectBox'.toLowerCase(), MSelectBox);
var _default = MSelectBox;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
exports.makeItem = makeItem;
exports.measureListSize = measureListSize;
exports.releaseItem = releaseItem;
exports.requireItem = requireItem;
var _SelectList = __webpack_require__(884);
var _MSelectList = _interopRequireDefault(__webpack_require__(14899));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function measureListSize(items) {
  var descWidth = (0, _SelectList.measureMaxDescriptionWidth)(items);
  var textWidth = (0, _SelectList.measureMaxTextWidth)(items);
  var width = descWidth + 20 + textWidth + 12 + 15; //padding, margin
  return {
    width: width,
    descWidth: descWidth,
    textWidth: textWidth
  };
}
var itemPool = [];
function onClickItem(event) {
  var thisSL = this.$parent;
  if (thisSL) {
    thisSL.value = this.value;
    thisSL.emit('pressitem', {
      type: 'pressitem',
      target: thisSL,
      itemElt: this,
      value: this.value,
      data: this.data
    });
  }
}

/**
 * @returns {MSelectListItem}
 */
function makeItem() {
  return _({
    tag: 'mselectlistitem',
    on: {
      click: onClickItem
    }
  });
}
function requireItem($parent) {
  var item;
  if (itemPool.length > 0) {
    item = itemPool.pop();
  } else {
    item = makeItem();
  }
  item.$parent = $parent;
  return item;
}
function releaseItem(item) {
  item.$parent = null;
  item.attr('class', 'am-selectlist-item');
  item.selected = false;
  itemPool.push(item);
}
var _default = _MSelectList["default"];
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _MSelectListItem = _interopRequireDefault(__webpack_require__(82799));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _default = _MSelectListItem["default"];
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _MSelectMenu = _interopRequireDefault(__webpack_require__(70448));
var _Core = _interopRequireDefault(__webpack_require__(33274));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
_Core["default"].install(_MSelectMenu["default"]);
var _default = _MSelectMenu["default"];
exports["default"] = _default;

/***/ }),

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

"use strict";


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
}));
var _exportNames = {};
Object.defineProperty(exports, "default", ({
  enumerable: true,
  get: function get() {
    return _MSelectTreeMenu["default"];
  }
}));
var _Core = _interopRequireDefault(__webpack_require__(33274));
var _MSelectTreeMenu = _interopRequireWildcard(__webpack_require__(3770));
Object.keys(_MSelectTreeMenu).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
  if (key in exports && exports[key] === _MSelectTreeMenu[key]) return;
  Object.defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _MSelectTreeMenu[key];
    }
  });
});
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 }; }
_Core["default"].install(_MSelectTreeMenu["default"]);

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
__webpack_require__(82986);
var _Core = _interopRequireDefault(__webpack_require__(33274));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _ = _Core["default"]._;
var $ = _Core["default"].$;
function MTinyProfileBlock() {
  this._avatarSrc = '';
  this.$name = $('.am-tiny-profile-block-name', this);
  this.$desc = $('.am-tiny-profile-block-desc', this);
  this.$avatar = $('.am-tiny-profile-block-avatar', this);
}
MTinyProfileBlock.tag = 'MTinyProfileBlock'.toLowerCase();
MTinyProfileBlock.render = function () {
  return _({
    "class": 'am-tiny-profile-block',
    extendEvent: 'change',
    child: [{
      "class": 'am-tiny-profile-block-avatar'
    }, {
      "class": 'am-tiny-profile-block-text-ctn',
      child: [{
        "class": 'am-tiny-profile-block-name',
        child: {
          text: 'Pham Quoc Du Thien'
        }
      }, {
        "class": 'am-tiny-profile-block-desc',
        child: {
          text: 'View your profile'
        }
      }]
    }]
  });
};
MTinyProfileBlock.property = {};

/**
 * @type {MTinyProfileBlock}
 */
MTinyProfileBlock.property.desc = {
  set: function set(value) {
    this.$desc.firstChild.data = value + '';
  },
  get: function get() {
    return this.$desc.firstChild.data;
  }
};

/**
 * @type {MTinyProfileBlock}
 */
MTinyProfileBlock.property.name = {
  set: function set(value) {
    this.$name.firstChild.data = value + '';
  },
  get: function get() {
    return this.$name.firstChild.data;
  }
};

/**
 * @type {MTinyProfileBlock}
 */
MTinyProfileBlock.property.avatarSrc = {
  set: function set(value) {
    value = value + '';
    this._avatarSrc = value;
    this.$avatar.addStyle('background-image', 'url(' + value + ')');
  },
  get: function get() {
    return this._avatarSrc;
  }
};
_Core["default"].install(MTinyProfileBlock);
var _default = MTinyProfileBlock;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _MSelectTreeMenu = __webpack_require__(3770);
var _default = _MSelectTreeMenu.MTreeModal;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = install;
var _MLeftNavigator = _interopRequireDefault(__webpack_require__(75943));
var _MNavigatorMenu = _interopRequireDefault(__webpack_require__(84029));
var _MBottomTabbar = _interopRequireDefault(__webpack_require__(42499));
var _MTinyProfileBlock = _interopRequireDefault(__webpack_require__(77640));
var _MMatMenuButton = _interopRequireDefault(__webpack_require__(3702));
var _MMatMenuItem = _interopRequireDefault(__webpack_require__(10399));
var _MMatMenu = _interopRequireDefault(__webpack_require__(82566));
var _MHeaderBar = _interopRequireDefault(__webpack_require__(72162));
var _MConversation = _interopRequireDefault(__webpack_require__(73114));
var _MMessageInput = _interopRequireDefault(__webpack_require__(21558));
var _MSelectListItem = _interopRequireDefault(__webpack_require__(63516));
var _MSelectList = _interopRequireDefault(__webpack_require__(53953));
var _MSelectMenu = _interopRequireDefault(__webpack_require__(53984));
var _MSelectTreeMenu = _interopRequireDefault(__webpack_require__(97840));
var _MSelectBox = _interopRequireDefault(__webpack_require__(28281));
var _MBlinkModal = _interopRequireDefault(__webpack_require__(66189));
var _MListModal = _interopRequireDefault(__webpack_require__(57305));
var _MTreeModal = _interopRequireDefault(__webpack_require__(13762));
var _MHSnapScroller = _interopRequireDefault(__webpack_require__(67819));
var _MChecklistModal = _interopRequireDefault(__webpack_require__(84267));
var _MChecklistItem = _interopRequireDefault(__webpack_require__(72067));
var _MMultiCheckMenu = _interopRequireDefault(__webpack_require__(87523));
var _MCabinetList = _interopRequireDefault(__webpack_require__(81227));
var _MCabinetItem = _interopRequireDefault(__webpack_require__(34759));
var _MCabinetTreeList = _interopRequireDefault(__webpack_require__(7983));
var _MCabinetTree = _interopRequireDefault(__webpack_require__(62303));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function install(core) {
  core.install([_MMessageInput["default"], _MNavigatorMenu["default"], _MBottomTabbar["default"], _MLeftNavigator["default"], _MTinyProfileBlock["default"], _MMatMenuButton["default"], _MMatMenuItem["default"], _MMatMenu["default"], _MHeaderBar["default"], _MConversation["default"], _MSelectListItem["default"], _MSelectList["default"], _MSelectMenu["default"], _MSelectTreeMenu["default"], _MSelectBox["default"], _MBlinkModal["default"], _MListModal["default"], _MTreeModal["default"], _MHSnapScroller["default"], _MChecklistItem["default"], _MChecklistModal["default"], _MMultiCheckMenu["default"], _MCabinetItem["default"], _MCabinetList["default"], _MCabinetTreeList["default"], _MCabinetTree["default"]]);
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Ref = _interopRequireDefault(__webpack_require__(90060));
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 {{defined?:function,revoked?:function,get?:function, set?: function, descriptor?: Object|function, export?: function}} AttributeHandler
 */

/***
 *
 * @param {Object} node
 * @constructor
 */
function Attributes(node) {
  Object.defineProperty(this, '$$node', {
    enumerable: false,
    configurable: true,
    writable: false,
    value: node
  });
  Object.defineProperty(this, '_definedProperties', {
    enumerable: false,
    writable: false,
    value: {}
  });
  Object.defineProperty(this, '_definedComputedHandlers', {
    enumerable: false,
    writable: false,
    value: {}
  });
}
Object.defineProperty(Attributes.prototype, 'loadAttributeHandlers', {
  enumerable: false,
  configurable: true,
  writable: false,
  value: function value(newHandlers) {
    var self = this;
    var definedHandlers = this._definedProperties;
    var definedComputedHandlers = this._definedComputedHandlers;
    Object.keys(this._definedProperties).forEach(function (key) {
      if (!newHandlers[key]) {
        delete definedHandlers[key];
        delete definedComputedHandlers[key];
        delete self[key];
      }
    });
    Object.keys(newHandlers).forEach(function (key) {
      if (definedHandlers[key] !== newHandlers[key]) {
        self.defineProperty(key, newHandlers[key]);
      }
    });
  }
});
Object.defineProperty(Attributes.prototype, 'unloadAttributeHandlers', {
  enumerable: false,
  configurable: true,
  writable: false,
  value: function value(oldHandlers) {
    var self = this;
    Object.keys(oldHandlers).forEach(function (key) {
      self.revokeProperty(key, oldHandlers[key]);
    });
  }
});
Object.defineProperty(Attributes.prototype, 'revokeProperty', {
  enumerable: false,
  configurable: true,
  writable: false,
  value: function value(name, handler) {
    if (!this._definedProperties[name]) return;
    if (handler && this._definedProperties[name] !== handler) return; //verify
    if (handler.revoked) {
      handler.revoked.call(this, this._definedComputedHandlers[name].ref);
    }
    var value = this[name];
    delete this[name];
    this[name] = value;
    delete this._definedProperties[name];
  }
});
Object.defineProperty(Attributes.prototype, 'defineProperty', {
  enumerable: false,
  configurable: true,
  writable: false,
  value: function value(name, handler) {
    var self = this;
    this._definedProperties[name] = handler;
    var hadValue = !!(name in this);
    var privateValueRef = new _Ref["default"](this[name]);
    var objectDescriptor = {
      enumerable: true,
      configurable: true,
      set: function set(value) {
        if (handler.set) privateValueRef.set(handler.set.apply(self.$$node, Array.prototype.slice.call(arguments).concat([privateValueRef])));else privateValueRef.set(value);
      },
      get: function get() {
        if (handler.get) return handler.get.apply(self.$$node, Array.prototype.slice.call(arguments).concat([privateValueRef]));else return privateValueRef.get();
      }
    };
    Object.defineProperty(this, name, objectDescriptor);
    this._definedComputedHandlers[name] = objectDescriptor;
    objectDescriptor.ref = privateValueRef;
    if (handler.defined) {
      handler.defined.call(this, privateValueRef);
    }
    if (hadValue) this[name] = privateValueRef.get();
  }
});
Object.defineProperty(Attributes.prototype, 'getProperty', {
  enumerable: false,
  configurable: true,
  writable: false,
  value: function value(name) {
    var args = Array.prototype.slice.call(arguments, 1);
    var handler = this._definedComputedHandlers[name];
    if (handler) {
      return handler.get.apply(this, args);
    } else return this[name];
  }
});
Object.defineProperty(Attributes.prototype, 'setProperty', {
  enumerable: false,
  configurable: true,
  writable: false,
  value: function value(name, _value) {
    var args = Array.prototype.slice.call(arguments, 1);
    var handler = this._definedComputedHandlers[name];
    if (handler) {
      return handler.set.apply(this, args);
    } else this[name] = _value;
  }
});
Object.defineProperty(Attributes.prototype, 'export', {
  enumerable: false,
  configurable: true,
  value: function value() {
    var self = this;
    return Object.keys(this).reduce(function (ac, key) {
      var value;
      var handler = self._definedProperties[key];
      var computedHandler = self._definedComputedHandlers[key];
      var exporter = handler && handler["export"];
      if (exporter) {
        value = exporter.call(self.$$node, computedHandler.ref);
      } else {
        value = self[key];
      }
      if (value !== undefined) ac[key] = value;
      return ac;
    }, {});
  }
});
Object.defineProperty(Attributes.prototype, 'getPropertyDescriptor', {
  enumerable: false,
  configurable: true,
  writable: false,
  value: function value(name) {
    var handler = this._definedProperties[name];
    if (handler && typeof handler.descriptor === 'function') return handler.descriptor.call(this.$$node);
    var value = this[name];
    return handler && handler.descriptor || {
      type: _typeof(value)
    };
  }
});
var _default = Attributes;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
function CMDRunner(_this, commands) {
  this._this = _this;
  this.commands = {};
  this.assign(commands);
}
CMDRunner.prototype.has = function (cmdName) {
  return !!this.commands[cmdName];
};
CMDRunner.prototype.add = function (cmdName, handler) {
  this.commands[cmdName] = handler;
  return this;
};
CMDRunner.prototype.remove = function (cmdName) {
  delete this.commands[cmdName];
  return this;
};
CMDRunner.prototype.assign = function (obj) {
  for (var cmdName in obj) {
    if (typeof obj[cmdName] == 'function') {
      this.add(cmdName, obj[cmdName]);
    }
  }
};
CMDRunner.prototype.invoke = function () {
  if (this.commands[arguments[0]]) {
    var args = Array.prototype.slice.call(arguments, 1);
    return this.commands[arguments[0]].apply(this._this, args);
  } else {
    throw new Error('No command: ' + arguments[0]);
  }
};
var _default = CMDRunner;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.warn(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.warn(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;

/***/ }),

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

"use strict";


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__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ContextManager = _interopRequireDefault(__webpack_require__(88062));
var _GrandContext = _interopRequireDefault(__webpack_require__(84179));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
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"];
Fragment.prototype.revokeResource = function () {
  this.destroy();
};
var _default = Fragment;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Context = _interopRequireDefault(__webpack_require__(16311));
var _ContextManager = _interopRequireDefault(__webpack_require__(88062));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
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;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
/***
 *
 * @param {T} value
 * @param {*=} type
 * @constructor
 * @template T
 */
function Ref(value, type) {
  this.type = type;
  this.value = value;
}
Ref.prototype.toString = function () {
  return this.value + '';
};

/***
 *
 * @return {T}
 */
Ref.prototype.valueOf = function () {
  return this.value;
};

/***
 *
 * @param {T}value
 */
Ref.prototype.set = function (value) {
  this.value = value;
};

/**
 *
 * @return {T}
 */
Ref.prototype.get = function () {
  return this.value;
};
var _default = Ref;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _stringGenerate = __webpack_require__(10713);
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {TaskManager} manager
 * @param {function(finishTask: function, bundle: any): (void|Promise)=} func
 * @param {any=} bundle
 * @constructor
 */
function Task(manager, func, bundle) {
  this.manager = manager;
  this.id = (0, _stringGenerate.randomIdent)(12);
  this.func = func;
  this.bundle = bundle;
  this.state = 0;
}
Task.prototype.begin = function () {
  if (this.state !== 0) return;
  this.state = 1;
  var sync;
  if (this.func) {
    try {
      sync = this.func(this.end.bind(this), this.bundle);
    } catch (error) {
      console.error(error);
    }
  }
  if (sync && sync.then) sync["catch"](function (error) {
    return console.error(error);
  }).then(this.end.bind(this));
};
Task.prototype.end = function () {
  if (this.state !== 1) return;
  this.state = 2;
  this.manager.onFinishTask(this);
};
function TaskManager(opt) {
  _EventEmitter["default"].call(this);
  opt = opt || {};
  this.limit = typeof opt.limit === "number" && opt.limit >= 1 ? opt.limit : Infinity;
  this.pendingTasks = [];
  this.runningTasks = [];
}
_OOP["default"].mixClass(TaskManager, _EventEmitter["default"]);

/***
 *
 * @param {function(finishTask: function, bundle: any): (void|Promise)} func
 * @param {any} bundle
 */
TaskManager.prototype.requestTask = function (func, bundle) {
  var task = new Task(this, func, bundle);
  if (this.runningTasks.length < this.limit) {
    this.runningTasks.push(task);
    this.emit('task_begin', {
      type: 'task_begin',
      task: task
    }, this);
    task.begin();
  } else {
    this.pendingTasks.push(task);
  }
};
TaskManager.prototype.onFinishTask = function (task) {
  var idx = this.runningTasks.indexOf(task);
  if (idx < 0) return;
  this.runningTasks.splice(idx, 1);
  this.emit('task_end', {
    type: 'task_end',
    task: task
  }, this);
  while (this.pendingTasks.length > 0 && this.runningTasks.length < this.limit) {
    task = this.pendingTasks.shift();
    this.runningTasks.push(task);
    this.emit('task_begin', {
      type: 'task_begin',
      task: task
    }, this);
    task.begin();
  }
};
TaskManager.prototype.newTask = function () {
  var task = new Task(this, null, null);
  this.runningTasks.push(task);
  this.emit('task_begin', {
    type: 'task_begin',
    task: task
  }, this);
  task.begin();
  return task;
};
var _default = TaskManager;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
function VarScope(parent) {
  this.parent = parent;
  this.data = {};
}
VarScope.prototype.revoke = function (name) {
  delete this.data[name];
  return this;
};
VarScope.prototype.isDeclared = function (name) {
  return name in this.data;
};

/***
 *
 * @param name
 * @param initValue
 * @param {boolean=} force
 * @return {VarScope}
 */
VarScope.prototype.declare = function (name, initValue, force) {
  if (name in this.data && !force) throw new Error(name + ' is already delared in this scope!');
  this.data[name] = initValue;
  return this;
};
VarScope.prototype.get = function (name) {
  var scope = this.findScope(name);
  if (!scope) throw new Error(name + ' is not declared!');
  return scope.data[name];
};
VarScope.prototype.set = function (name, value) {
  var scope = this.findScope(name);
  if (!scope) throw new Error(name + ' is not declared!');
  scope.data[name] = value;
};
VarScope.prototype.findScope = function (name) {
  var currentScope = this;
  while (currentScope) {
    if (name in currentScope.data) break;
    currentScope = currentScope.parent;
  }
  return currentScope;
};
var _default = VarScope;
exports["default"] = _default;

/***/ }),

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

"use strict";


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

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = safeThrow;
function safeThrow(error) {
  setTimeout(function () {
    if (error.stack) {
      try {
        error.message += '\n' + error.stack;
      } catch (e) {
        //can not modify message
      }
    }
    throw error;
  }, 0);
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _TemplateString = _interopRequireDefault(__webpack_require__(73021));
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 {number[]}
 */
Color.prototype.toCMYK = function () {
  return Color.rgbToCMYK(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]}})']
 *     ['cmyk', 'toCMYK()', 'hwba({{x[0] * 100%}}, {{x[1] * 100}}%, {{x[2] * 100}}%)']
 */
/****
 *
 * @param {"rgba"|"rgb"|"hsl"|"hsla"|"hsb"|"hsba"|"hex3"|"hex4"|"hex6"|"hex6"|hex8|"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]}})'], ['cmyk', 'toCMYK()', 'cmyk({{x[0] * 100}}%, {{x[1] * 100}}%, {{x[2] * 100}}%)']].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');
Color.regexes.cmyk = new RegExp(['^cmyk\\(', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.percent.source, ',', Color.regexes.percent.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);
};
Color.fromCMYK = function (c, m, y, k) {
  var rgba = this.cmykToRGB([c, m, y, k]).concat([0]);
  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) / 255 : parseFloat(v);
    }));
  } 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) / 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) / 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) / (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) / (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) / (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) / (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) / (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) / (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) / (i == 0 ? 360 : i < 3 ? 100 : 1);
    }));
  } else if (this.regexes.cmyk.test(text)) {
    return this.fromCMYK.apply(this, this.regexes.cmyk.exec(text).slice(1).map(function (v, i) {
      return parseFloat(v) / 100;
    }));
  } 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.cmykToText = function (cmyk) {
  return 'cmyk(' + cmyk.map(function (x) {
    return x * 100 + '%';
  }).join(', ') + ')';
};
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));
};
Color.cmykToRGB = function (cmyk) {
  var c = cmyk[0];
  var m = cmyk[1];
  var y = cmyk[2];
  var k = cmyk[3];
  c = c * (1 - k) + k;
  m = m * (1 - k) + k;
  y = y * (1 - k) + k;
  var r = 1 - c;
  var g = 1 - m;
  var b = 1 - y;
  return [r, g, b];
};
Color.rgbToCMYK = function (rgb) {
  var r = rgb[0];
  var g = rgb[1];
  var b = rgb[2];
  var c = 1 - r;
  var m = 1 - g;
  var y = 1 - b;
  var k = Math.min(c, Math.min(m, y));
  c = (c - k) / (1 - k);
  m = (m - k) / (1 - k);
  y = (y - k) / (1 - k);
  c = isNaN(c) ? 0 : c;
  m = isNaN(m) ? 0 : m;
  y = isNaN(y) ? 0 : y;
  k = isNaN(k) ? 0 : k;
  return [c, m, y, k];
};
var _default = Color;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.UnicodeBase64Converter = void 0;
exports.base64DecodeUnicode = base64DecodeUnicode;
exports.base64EncodeUnicode = base64EncodeUnicode;
function base64EncodeUnicode(str) {
  return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function toSolidBytes(match, p1) {
    return String.fromCharCode('0x' + p1);
  }));
}
;
function base64DecodeUnicode(str) {
  return decodeURIComponent(atob(str).split('').map(function (c) {
    return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
  }).join(''));
}
var UnicodeBase64Converter = {
  encode: base64EncodeUnicode,
  decode: base64DecodeUnicode
};
exports.UnicodeBase64Converter = UnicodeBase64Converter;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var ext2MineType = {
  "323": "text/h323",
  "*": "application/octet-stream",
  "3g2": "video/3gpp2",
  "3gp": "video/3gpp",
  "7z": "application/x-7z-compressed",
  aac: "audio/aac",
  abw: "application/x-abiword",
  acx: "application/internet-property-stream",
  ai: "application/postscript",
  aif: "audio/x-aiff",
  aifc: "audio/x-aiff",
  aiff: "audio/x-aiff",
  arc: "application/x-freearc",
  asf: "video/x-ms-asf",
  asr: "video/x-ms-asf",
  asx: "video/x-ms-asf",
  au: "audio/basic",
  avi: "video/x-msvideo",
  axs: "application/olescript",
  azw: "application/vnd.amazon.ebook",
  bas: "text/plain",
  bcpio: "application/x-bcpio",
  bin: "application/octet-stream",
  bmp: "image/bmp",
  bz: "application/x-bzip",
  bz2: "application/x-bzip2",
  c: "text/plain",
  cat: "application/vnd.ms-pkiseccat",
  cda: "application/x-cdf",
  cdf: "application/x-netcdf",
  cer: "application/x-x509-ca-cert",
  "class": "application/octet-stream",
  clp: "application/x-msclip",
  cmx: "image/x-cmx",
  cod: "image/cis-cod",
  cpio: "application/x-cpio",
  crd: "application/x-mscardfile",
  crl: "application/pkix-crl",
  crt: "application/x-x509-ca-cert",
  csh: "application/x-csh",
  css: "text/css",
  csv: "text/csv",
  dcr: "application/x-director",
  der: "application/x-x509-ca-cert",
  dir: "application/x-director",
  dll: "application/x-msdownload",
  dms: "application/octet-stream",
  doc: "application/msword",
  docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
  dot: "application/msword",
  dvi: "application/x-dvi",
  dxr: "application/x-director",
  eot: "application/vnd.ms-fontobject",
  eps: "application/postscript",
  epub: "application/epub+zip",
  etx: "text/x-setext",
  evy: "application/envoy",
  exe: "application/octet-stream",
  fif: "application/fractals",
  flr: "x-world/x-vrml",
  gif: "image/gif",
  gtar: "application/x-gtar",
  gz: "application/gzip",
  h: "text/plain",
  hdf: "application/x-hdf",
  hlp: "application/winhlp",
  hqx: "application/mac-binhex40",
  hta: "application/hta",
  htc: "text/x-component",
  htm: "text/html",
  html: "text/html",
  htt: "text/webviewhtml",
  ico: "image/vnd.microsoft.icon",
  ics: "text/calendar",
  ief: "image/ief",
  iii: "application/x-iphone",
  ins: "application/x-internet-signup",
  isp: "application/x-internet-signup",
  jar: "application/java-archive",
  jfif: "image/pipeg",
  jpe: "image/jpeg",
  jpeg: "image/jpeg",
  jpg: "image/jpeg",
  js: "text/javascript",
  json: "application/json",
  jsonld: "application/ld+json",
  latex: "application/x-latex",
  lha: "application/octet-stream",
  lsf: "video/x-la-asf",
  lsx: "video/x-la-asf",
  lzh: "application/octet-stream",
  m13: "application/x-msmediaview",
  m14: "application/x-msmediaview",
  m3u: "audio/x-mpegurl",
  man: "application/x-troff-man",
  mdb: "application/x-msaccess",
  me: "application/x-troff-me",
  mht: "message/rfc822",
  mhtml: "message/rfc822",
  mid: "audio/midi",
  midi: "audio/midi",
  mjs: "text/javascript",
  mny: "application/x-msmoney",
  mov: "video/quicktime",
  movie: "video/x-sgi-movie",
  mp2: "video/mpeg",
  mp3: "audio/mpeg",
  mp4: "video/mp4",
  mpa: "video/mpeg",
  mpe: "video/mpeg",
  mpeg: "video/mpeg",
  mpg: "video/mpeg",
  mpkg: "application/vnd.apple.installer+xml",
  mpp: "application/vnd.ms-project",
  mpv2: "video/mpeg",
  ms: "application/x-troff-ms",
  msg: "application/vnd.ms-outlook",
  mvb: "application/x-msmediaview",
  nc: "application/x-netcdf",
  nws: "message/rfc822",
  oda: "application/oda",
  odp: "application/vnd.oasis.opendocument.presentation",
  ods: "application/vnd.oasis.opendocument.spreadsheet",
  odt: "application/vnd.oasis.opendocument.text",
  oga: "audio/ogg",
  ogv: "video/ogg",
  ogx: "application/ogg",
  opus: "audio/opus",
  otf: "font/otf",
  p10: "application/pkcs10",
  p12: "application/x-pkcs12",
  p7b: "application/x-pkcs7-certificates",
  p7c: "application/x-pkcs7-mime",
  p7m: "application/x-pkcs7-mime",
  p7r: "application/x-pkcs7-certreqresp",
  p7s: "application/x-pkcs7-signature",
  pbm: "image/x-portable-bitmap",
  pdf: "application/pdf",
  pfx: "application/x-pkcs12",
  pgm: "image/x-portable-graymap",
  php: "application/x-httpd-php",
  pko: "application/ynd.ms-pkipko",
  pma: "application/x-perfmon",
  pmc: "application/x-perfmon",
  pml: "application/x-perfmon",
  pmr: "application/x-perfmon",
  pmw: "application/x-perfmon",
  png: "image/png",
  pnm: "image/x-portable-anymap",
  pot: "application/vnd.ms-powerpoint",
  ppm: "image/x-portable-pixmap",
  pps: "application/vnd.ms-powerpoint",
  ppt: "application/vnd.ms-powerpoint",
  pptx: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
  prf: "application/pics-rules",
  ps: "application/postscript",
  pub: "application/x-mspublisher",
  qt: "video/quicktime",
  ra: "audio/x-pn-realaudio",
  ram: "audio/x-pn-realaudio",
  rar: "application/vnd.rar",
  ras: "image/x-cmu-raster",
  rgb: "image/x-rgb",
  rmi: "audio/mid",
  roff: "application/x-troff",
  rtf: "application/rtf",
  rtx: "text/richtext",
  scd: "application/x-msschedule",
  sct: "text/scriptlet",
  setpay: "application/set-payment-initiation",
  setreg: "application/set-registration-initiation",
  sh: "application/x-sh",
  shar: "application/x-shar",
  sit: "application/x-stuffit",
  snd: "audio/basic",
  spc: "application/x-pkcs7-certificates",
  spl: "application/futuresplash",
  src: "application/x-wais-source",
  sst: "application/vnd.ms-pkicertstore",
  stl: "application/vnd.ms-pkistl",
  stm: "text/html",
  sv4cpio: "application/x-sv4cpio",
  sv4crc: "application/x-sv4crc",
  svg: "image/svg+xml",
  swf: "application/x-shockwave-flash",
  t: "application/x-troff",
  tar: "application/x-tar",
  tcl: "application/x-tcl",
  tex: "application/x-tex",
  texi: "application/x-texinfo",
  texinfo: "application/x-texinfo",
  tgz: "application/x-compressed",
  tif: "image/tiff",
  tiff: "image/tiff",
  tr: "application/x-troff",
  trm: "application/x-msterminal",
  ts: "video/mp2t",
  tsv: "text/tab-separated-values",
  ttf: "font/ttf",
  txt: "text/plain",
  uls: "text/iuls",
  ustar: "application/x-ustar",
  vcf: "text/x-vcard",
  vrml: "x-world/x-vrml",
  vsd: "application/vnd.visio",
  wav: "audio/wav",
  wcm: "application/vnd.ms-works",
  wdb: "application/vnd.ms-works",
  weba: "audio/webm",
  webm: "video/webm",
  webp: "image/webp",
  wks: "application/vnd.ms-works",
  wmf: "application/x-msmetafile",
  woff: "font/woff",
  woff2: "font/woff2",
  wps: "application/vnd.ms-works",
  wri: "application/x-mswrite",
  wrl: "x-world/x-vrml",
  wrz: "x-world/x-vrml",
  xaf: "x-world/x-vrml",
  xbm: "image/x-xbitmap",
  xhtml: "application/xhtml+xml",
  xla: "application/vnd.ms-excel",
  xlc: "application/vnd.ms-excel",
  xlm: "application/vnd.ms-excel",
  xls: "application/vnd.ms-excel",
  xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
  xlt: "application/vnd.ms-excel",
  xlw: "application/vnd.ms-excel",
  xml: "application/xml",
  xof: "x-world/x-vrml",
  xpm: "image/x-xpixmap",
  xul: "application/vnd.mozilla.xul+xml",
  xwd: "image/x-xwindowdump",
  z: "application/x-compress",
  zip: "application/zip"
};
var _default = ext2MineType;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.blobToArrayBuffer = blobToArrayBuffer;
exports.blobToFile = blobToFile;
exports.dataURItoBlob = dataURItoBlob;
exports.stringToBlob = stringToBlob;
var _ext2MineType = _interopRequireDefault(__webpack_require__(13578));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function blobToFile(theBlob, fileName) {
  return new File([theBlob], fileName);
}
function dataURItoBlob(dataURI) {
  var byteString = atob(dataURI.split(',')[1]);
  var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
  var ab = new ArrayBuffer(byteString.length);
  var ia = new Uint8Array(ab);
  for (var i = 0; i < byteString.length; i++) {
    ia[i] = byteString.charCodeAt(i);
  }
  var blob = new Blob([ab], {
    type: mimeString
  });
  return blob;
}
function blobToArrayBuffer(blob) {
  var fileReader = new FileReader();
  return new Promise(function (rs) {
    fileReader.onload = function (event) {
      var arrayBuffer = event.target.result;
      rs(arrayBuffer);
    };
    fileReader.readAsArrayBuffer(blob);
  });
}
function stringToBlob(text, type) {
  type = type || 'text/plain';
  var mineTye = type.split('/').length === 2 ? type : _ext2MineType["default"][type] || 'text/plain';
  return new Blob([text], {
    type: mineTye
  });
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.arrayCompare = arrayCompare;
exports.arrayIntersection = arrayIntersection;
exports.arrayIsSubset = arrayIsSubset;
exports.arrayLexicographicalCompare = arrayLexicographicalCompare;
exports.arrayRemoveNone = arrayRemoveNone;
exports.arrayShuffle = arrayShuffle;
exports.arrayUnique = arrayUnique;
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); }
/***
 *
 * @param {(string|number|boolean|null)[]} arr
 * @returns {(string|number|boolean|null)[]}
 */
function arrayUnique(arr) {
  var dict = {};
  return arr.reduce(function (ac, cr) {
    var key = _typeof(cr) + '//' + cr;
    if (key in dict) return ac;
    ac.push(cr);
    dict[key] = true;
    return ac;
  }, []);
}

/***
 *
 * @param {[]}arr
 * @return {[]}
 */
function arrayRemoveNone(arr) {
  return arr.filter(function (c) {
    return c !== null && c !== undefined;
  });
}
function arrayIntersection(a1, a2) {
  var dict1 = a1.reduce(function (ac, cr) {
    ac[_typeof(cr) + cr] = true;
    return ac;
  }, {});
  var dict2 = a2.reduce(function (ac, cr) {
    ac[_typeof(cr) + cr] = true;
    return ac;
  }, {});
  var dictAdded = {};
  var res = [];
  var i, k, x;
  for (i = 0; i < a1.length; ++i) {
    x = a1[i];
    k = _typeof(x) + x;
    if (dict1[k] && dict2[k] && !dictAdded[k]) {
      res.push(x);
      dictAdded[k] = true;
    }
  }
  for (i = 0; i < a2.length; ++i) {
    x = a2[i];
    k = _typeof(x) + x;
    if (dict1[k] && dict2[k] && !dictAdded[k]) {
      res.push(x);
      dictAdded[k] = true;
    }
  }
  return res;
}
function arrayIsSubset(childArr, parentArr) {
  if (!(childArr instanceof Array) || !(parentArr instanceof Array)) return false;
  var dict2 = parentArr.reduce(function (ac, cr) {
    ac[_typeof(cr) + cr] = true;
    return ac;
  }, {});
  var res = true;
  var n = childArr.length;
  var k;
  for (var i = 0; i < n; ++i) {
    k = _typeof(childArr[i]) + childArr[i];
    if (!dict2[k]) {
      res = false;
      break;
    }
  }
  return res;
}

/***
 *
 * @param {[]}a1
 * @param {[]}a2
 * @param {boolean=} order
 * @returns {boolean}
 */
function arrayCompare(a1, a2, order) {
  if (a1 === a2) return true;
  if (!a1 || !a2) return false;
  if (a1.length !== a2.length) return false;
  if (!a1.sort || !a2.sort) return false;
  if (!order) {
    a1.sort();
    a2.sort();
  }
  var n = a1.length;
  for (var i = 0; i < n; ++i) {
    if (a1[i] !== a2[i]) return false;
  }
  return true;
}

/**
 *
 * @param {number[]} a1
 * @param {number[]} a2
 * @returns {number}
 */
function arrayLexicographicalCompare(a1, a2) {
  var minLength = Math.min(a1.length, a2.length);
  for (var i = 0; i < minLength; i++) {
    if (a1[i] < a2[i]) {
      return -1; // array1 nhỏ hơn array2
    } else if (a1[i] > a2[i]) {
      return 1; // array1 lớn hơn array2
    }
  }

  if (a1.length < a2.length) {
    return -1;
  } else if (a1.length > a2.length) {
    return 1;
  } else {
    return 0;
  }
}

/***
 *
 * @param {Array} arr
 */
function arrayShuffle(arr) {
  var temp;
  var j;
  for (var i = 0; i < arr.length; ++i) {
    j = Math.floor(Math.random() * arr.length);
    if (i !== j) {
      temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
    }
  }
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
exports.defaultCmp = defaultCmp;
exports.heapDown = heapDown;
exports.heapPop = heapPop;
exports.heapPush = heapPush;
exports.heapUp = heapUp;
exports.heapify = heapify;
function defaultCmp(x, y) {
  if (x < y) {
    return -1;
  }
  if (x > y) {
    return 1;
  }
  return 0;
}
;

/**
 * 
 * @param {Array} arr 
 * @param {Number} pos 
 * @param {Function} cmp 
 */
function heapDown(arr, pos, cmp) {
  if (!cmp) cmp = defaultCmp;
  var item = arr[pos];
  var endPos = arr.length;
  var childPos = pos << 1 | 1;
  var childRightPos;
  while (childPos < endPos) {
    childRightPos = childPos + 1;
    if (childPos + 1 < endPos && cmp(arr[childPos], arr[childRightPos]) > 0) {
      childPos = childRightPos;
    }
    if (cmp(arr[childPos], item) < 0) {
      arr[pos] = arr[childPos];
      arr[childPos] = item;
      pos = childPos;
      childPos = pos << 1 | 1;
    } else break;
  }
}

/**
 * 
 * @param {Array} arr 
 * @param {Number} pos 
 * @param {Function} cmp 
 */
function heapUp(arr, pos, cmp) {
  if (!cmp) cmp = defaultCmp;
  var item = arr[pos];
  var parPos;
  while (pos > 0) {
    parPos = pos - 1 >> 1;
    if (cmp(arr[parPos], item) > 0) {
      arr[pos] = arr[parPos];
      arr[parPos] = item;
      pos = parPos;
    } else break;
  }
}

/**
 *
 * @param {Array} arr
 * @param {Function} cmp
 */
function heapify(arr, cmp) {
  if (!cmp) cmp = defaultCmp;
  var endPos = arr.length;
  for (var i = 0; i < endPos; ++i) {
    heapUp(arr, i, cmp);
  }
}

/**
 * 
 * @param {Array} arr 
 * @param {Function} cmp 
 */
function heapPop(arr, cmp) {
  if (!cmp) cmp = defaultCmp;
  var item = arr[0];
  var lastItem = arr.pop();
  if (arr.length > 0) {
    arr[0] = lastItem;
    heapDown(arr, 0, cmp);
  }
  return item;
}

/**
 * 
 * @param {Array} arr 
 * @param {*} item
 * @param {Function} cmp 
 */
function heapPush(arr, item, cmp) {
  if (!cmp) cmp = defaultCmp;
  arr.push(item);
  heapUp(arr, arr.length - 1, cmp);
}
function Heap(cmd) {
  this.cmp = cmd || defaultCmp;
  this.arr = [];
}

/**
 * @param {Array} arr
 * @param {Function} cmp
 * @returns {Heap}
 */
Heap.fromArray = function (arr, cmp) {
  var heap = new Heap(cmp);
  heapify(arr);
  heap.arr = arr;
  return heap;
};
Heap.prototype.push = function (x) {
  heapPush(this.arr, x, this.cmp);
  return this;
};
Heap.prototype.pop = function () {
  return heapPop(this.arr, this.cmp);
};
Heap.prototype.peek = function () {
  return this.arr[0];
};
Heap.prototype.contains = function (x) {
  return this.arr.indexOf(x) !== -1;
};
Heap.prototype.clear = function () {
  this.arr.splice(0, this.arr.length);
  return this;
};
Heap.prototype.empty = function () {
  return this.arr.length === 0;
};
Heap.prototype.size = function () {
  return this.arr.length;
};
Heap.prototype.clone = function () {
  var heap;
  heap = new Heap(this.cmp);
  heap.arr = this.arr.slice(0);
  return heap;
};
Heap.prototype.toArray = function () {
  return this.arr.slice(0);
};
Heap.prototype.toSortedArray = function () {
  var res = [];
  var heap = this.clone();
  while (!heap.empty()) {
    res.push(heap.pop());
  }
  return res;
};
Heap.prototype.insert = Heap.prototype.push;
Heap.prototype.top = Heap.prototype.peek;
Heap.prototype.front = Heap.prototype.peek;
Heap.prototype.has = Heap.prototype.contains;
Heap.prototype.copy = Heap.prototype.clone;
var _default = Heap;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.observePropertyChanges = observePropertyChanges;
exports.revokeResource = revokeResource;
exports.unobservePropertyChanges = unobservePropertyChanges;
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 revokeResource(o) {
  if (!o) return;
  var oc, ocs;
  var keys, key;
  if (Array.isArray(o)) {
    while (o.length) {
      oc = o.pop();
      try {
        revokeResource(oc);
      } catch (err) {}
    }
  } else if (o.revokeResource) {
    o.revokeResource();
  } else if (o.nodeType === 1 || o.nodeType === 3) {
    if (o.revokeResource) o.revokeResource();else {
      while (o.lastChild) {
        oc = o.lastChild;
        revokeResource(oc);
        // if (oc.selfRemove) {
        //     oc.selfRemove();
        // }
        // else {
        oc.remove();
        // }
      }
    }
  } else if (_typeof(o) === "object") {
    keys = [];
    ocs = [];
    for (key in o) {
      keys.push(key);
    }
    while (keys.length) {
      key = keys.pop();
      ocs.push(o[keys]);
      try {
        delete o[key];
      } catch (err) {}
    }
    while (ocs.length) {
      try {
        revokeResource(ocs.pop());
      } catch (err) {}
    }
  }
  ocs = undefined;
  oc = undefined;
  keys = undefined;
  key = undefined;
  o = undefined;
}

/**
 *
 * @param obj
 * @param {string|Array<string>} keys
 * @param {function} callback
 */
function observePropertyChanges(obj, keys, callback) {
  var value;
  if (Array.isArray(keys)) {
    keys.forEach(function (key) {
      observePropertyChanges(obj, key, callback);
    });
  } else {
    value = obj[keys];
    Object.defineProperty(obj, keys, {
      get: function get() {
        return value;
      },
      set: function set(newValue) {
        value = newValue;
        callback(keys, newValue);
      },
      configurable: true,
      enumerable: true
    });
  }
}

/**
 *
 * @param obj
 * @param {string|Array<string>} keys
 */
function unobservePropertyChanges(obj, keys) {
  var value;
  if (Array.isArray(keys)) {
    keys.forEach(function (key) {
      unobservePropertyChanges(obj, key);
    });
  } else {
    value = obj[keys];
    delete obj[keys];
    obj[keys] = value;
  }
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.calcBenchmark = calcBenchmark;
exports["default"] = void 0;
var _BrowserRules = _interopRequireDefault(__webpack_require__(30885));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
 *
 * @param  rulesheet
 * @param {string=} userAgent
 */
function BrowserDetector(rulesheet, userAgent) {
  this.au = userAgent || (__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 = this.au.toLowerCase().indexOf('firefox') > -1;
  this.isCococ = this.au.toLowerCase().indexOf('coc_coc_browser') >= 1;
  this.isSafari = this.browser.type === 'safari' || !this.isCococ && this.au.toLowerCase().indexOf('safari') > -1 && this.au.toLowerCase().indexOf('win') < 0 && this.au.toLowerCase().indexOf('android') < 0;
  // this.isSafari = /constructor/i.test(window.HTMLElement) || window.safari;
  var isMobile = this.au.indexOf('KFFOWI') > -1 || this.au.toLowerCase().indexOf('mobile') > -1 || this.device.type === 'iphone' || this.device.type === 'ipad' || this.device.type === 'android';
  Object.defineProperty(this, 'isMobile', {
    get: function get() {
      return isMobile || window.isMobile || !!window['mobileHost'];
    },
    set: function set(v) {
      //do nothing
    }
  });
  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 __webpack_require__.g || __webpack_require__.g.DocumentTouch && document instanceof __webpack_require__.g.DocumentTouch || __webpack_require__.g.navigator && (navigator.maxTouchPoints > 0 || __webpack_require__.g.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;
        }
      });
      __webpack_require__.g.addEventListener('test', null, opts);
      __webpack_require__.g.removeEventListener('test', null, opts);
    } catch (e) {}
    return supportsPassiveOption;
  }();
  this.supportGridLayout = __webpack_require__.g.document && typeof document.createElement('div').style.grid === 'string';
  Object.defineProperty(this, 'zoom', {
    get: function get() {
      return this.getZoom();
    },
    enumerable: true,
    configurable: false
  });
}
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].replace(/_/g, '.');
        }
        break;
      }
    } else if (typeof rgx == 'string') {
      if (this.au.toLowerCase().indexOf(rgx) >= 0) {
        result.type = type;
      }
    }
  }
  result.type = result.type || 'unknow';
  result.version = result.version || '0';
  return result;
};
BrowserDetector.prototype.getZoom = function () {
  //todo: wrong on chrome
  var type;
  if ('chrome' in __webpack_require__.g) {
    type = "chrome";
  } else if (this.isSafari) {
    type = 'safari';
  } else if ('orientation' in __webpack_require__.g && 'webkitRequestAnimationFrame' in __webpack_require__.g) {
    type = 'webkitMobile';
  } else if ('webkitRequestAnimationFrame' in __webpack_require__.g) {
    type = 'webkit';
  }
  switch (type) {
    case 'chrome':
      return Math.round(__webpack_require__.g.outerWidth / __webpack_require__.g.innerWidth * 100) / 100;
    case 'safari':
      return Math.round(document.documentElement.clientWidth / __webpack_require__.g.innerWidth * 100) / 100;
    case 'webkitMobile':
      return (Math.abs(__webpack_require__.g.orientation) == 90 ? screen.height : screen.width) / __webpack_require__.g.innerWidth;
    case 'webkit':
      return function () {
        var important = function important(str) {
          return str.replace(/;/g, " !important;");
        };
        var div = document.createElement('div');
        div.innerHTML = "1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0";
        div.setAttribute('style', important('font: 100px/1em sans-serif; -webkit-text-size-adjust: none; text-size-adjust: none; height: auto; width: 1em; padding: 0; overflow: visible;'));
        var container = document.createElement('div');
        container.setAttribute('style', important('width:0; height:0; overflow:hidden; visibility:hidden; position: absolute;'));
        container.appendChild(div);
        document.body.appendChild(container);
        var zoom = 1000 / div.clientHeight;
        zoom = Math.round(zoom * 100) / 100;
        document.body.removeChild(container);
        return zoom;
      }();
    default:
      return 1;
  }
  return 1;
};
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;

/***/ }),

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

"use strict";


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"], ["linux", /\blinux\s(?:[xi][0-9_]+;)\srv:([0-9.]+)/],
//Linux x86_64; rv:34.0
["windowsce", /\bwindows ce(?: ([0-9.]+))?/], ["cros", /\bcros armv7l ([0-9.]+)/],
//CrOS armv7l 7077.134.0
["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\/([0-9.]+)\b/], ["webview", /os x (?:[0-9._]+).+\bapplewebkit\/([0-9.]+)\b/], ["firefox", /\bfirefox\/([0-9.ab]+)/], ["nokia", /\bnokiabrowser\/([0-9.]+)/]];
module.exports = {
  device: DEVICES,
  os: OS,
  browser: BROWSER,
  engine: ENGINE,
  re_msie: re_msie
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
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 {this}
 */
/**
 * add style
 * @param {CSSStyleDeclaration|string|{}} arg0
 * @param {string|[]=} arg1
 * @returns {this}
 */
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 {this}
 */
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.lastChild) {
    this.removeChild(this.lastChild);
  }
  return this;
};

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

/**
 *
 * @param {string|Array} className
 * @returns {this}
 */
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 {this}
 */
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) {
  if (!parent || !parent.childNodes || !parent.childNodes.length) return false;
  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 && false) {}
  if (_BrowserDetector["default"].isFirefox && false) {}
}();
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;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
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;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.AttachHook = AttachHook;
exports["default"] = void 0;
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
window.pendingAttachHooks = {};
var pendingId = 0;

/***
 * @extends AElement
 * @constructor
 */
function AttachHook() {
  this._attached = false;
  this._canceled = false;
  this._pendingId = ++pendingId;
  this._eventAdded = false;
  this.counter = 0;
  this.delayTime = 0;
}
AttachHook.prototype._addAttachedEvent = function () {
  if (this._eventAdded) return;
  this.addEventListener('error', function (event) {
    if (!this._attached && this.isDescendantOf(document.body)) {
      this._attached = true;
      if (this.waitTimeout > 0) clearTimeout(this.waitTimeout);
      delete pendingAttachHooks[this._pendingId];
      if (this._canceled) return;
      this.emit('attached', event, this);
    }
  });
  this._eventAdded = true;
  if (!this._canceled) {
    pendingAttachHooks[this._pendingId] = this;
    this.waitAttaching();
  }
};
AttachHook.prototype.eventEmittorOnWithTime = function (isOnce, arg0, arg1, arg2) {
  if (arg0 === 'attached') {
    this._addAttachedEvent();
    return _AElement["default"].prototype.eventEmittorOnWithTime.apply(this, arguments);
  } else {
    return _AElement["default"].prototype.eventEmittorOnWithTime.apply(this, arguments);
  }
};
/*
AttachHook.prototype.on = function () {
    if (arguments[0] === 'attached') {
        this._addAttachedEvent();
        AElement.prototype.on.apply(this, arguments);
    }
    else {
        AElement.prototype.on.apply(this, arguments);
    }
    return this;
};


AttachHook.prototype.once = function () {
    if (arguments[0] === 'attached') {
        this._addAttachedEvent();
        AElement.prototype.once.apply(this, arguments);
    }
    else {
        AElement.prototype.once.apply(this, arguments);
    }
    return this;
};*/

AttachHook.render = function (data, option, domInstance) {
  var attributes = {};
  var tag;
  if (domInstance.defaultTag === 'div') {
    attributes.src = '';
    tag = 'img';
  } else {
    tag = 'image';
    attributes.href = '';
  }
  return domInstance._({
    tag: tag,
    "class": 'absol-attachhook',
    extendEvent: ['attached'],
    style: {
      display: 'none'
    },
    attr: attributes,
    props: {
      domInstance: domInstance
    }
  });
};
AttachHook.prototype.waitAttaching = function () {
  if (this._canceled) return;
  var self = this;
  // if (BrowserDetector.browser.type.startsWith('chrome') && parseInt((BrowserDetector.browser.version || '').split('.').shift()) >= 113) {
  if (this.waitTimeout > 0) clearTimeout(this.waitTimeout);
  this.waitTimeout = setTimeout(function wait() {
    self.waitTimeout = -1;
    self.counter++;
    if (self.counter === 1) self.delayTime = 10;else if (self.counter === 5) self.delayTime = 30;else if (self.counter === 50) self.delayTime = 60;else if (self.counter === 100) self.delayTime = 100;else if (self.counter === 500) self.delayTime = 1000;
    if (!self._attached && self.isDescendantOf(document.body)) {
      self._attached = true;
      delete pendingAttachHooks[self._pendingId];
      if (self._canceled) return;
      self.emit('attached', {
        target: this
      }, self);
    } else if (!self._attached && !self._canceled) {
      self.waitTimeout = setTimeout(wait, self.delayTime);
    }
  }, this.delayTime);
  // }
};

AttachHook.prototype.cancelWaiting = function () {
  if (this.waitTimeout > 0) clearTimeout(this.waitTimeout);
  this._canceled = true;
  delete pendingAttachHooks[this._pendingId];
};
AttachHook.prototype.resetState = function () {
  if (this.waitTimeout > 0) clearTimeout(this.waitTimeout);
  this._attached = false;
  this._canceled = false;
  this.counter = 0;
  this.delayTime = 1;
  if (this.tagName.toLowerCase() === 'img') {
    this.attr('src', '');
  } else {
    this.attr('href', '');
  }
  pendingAttachHooks[this._pendingId] = this;
  this.waitAttaching();
};
AttachHook.property = {
  attached: {
    get: function get() {
      return !!this._attached;
    }
  },
  canceled: {
    get: function get() {
      return !!this._canceled;
    }
  }
};
var _default = AttachHook;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.copyImage = copyImage;
exports.copyText = copyText;
exports.pasteText = pasteText;
function copyImage(src) {
  var ranges, sel;
  if (window.getSelection) {
    sel = window.getSelection();
    //backup
    ranges = [];
    for (var i = 0; i < sel.rangeCount; ++i) {
      ranges.push(sel.getRangeAt(i));
    }

    //copy
    var contentdiv = document.createElement('div');
    var image = document.createElement('img');
    contentdiv.appendChild(image);
    image.src = src;
    contentdiv.contentEditable = true;
    // contentdiv.style.display = 'none';
    document.body.appendChild(contentdiv);
    var range = document.createRange();
    range.selectNodeContents(image);
    sel.removeAllRanges();
    sel.addRange(range);
    document.execCommand('copy');
    // contentdiv.remove();

    //recover
    sel.removeAllRanges();
    for (var i = 0; i < sel.rangeCount; ++i) {
      sel.addRange(ranges[i]);
    }
  } else {
    console.error("Not support copy!");
    //not support IE
  }
}

function fallbackCopyTextToClipboard(text) {
  return new Promise(function (resolve, reject) {
    var textArea = document.createElement("textarea");
    textArea.value = text;

    // Avoid scrolling to bottom
    textArea.style.top = "0";
    textArea.style.left = "0";
    textArea.style.position = "fixed";
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();
    try {
      var successful = document.execCommand('copy');
      if (successful) {
        resolve();
      } else {
        reject();
      }
    } catch (err) {
      reject(err);
    }
    document.body.removeChild(textArea);
  });
}
function copyText(text) {
  if (!navigator.clipboard) {
    return fallbackCopyTextToClipboard(text);
  }
  return navigator.clipboard.writeText(text);
}
function fallbackReadTextFromClipboard() {
  return new Promise(function (resolve, reject) {
    var textArea = document.createElement("textarea");

    // Avoid scrolling to bottom
    textArea.style.top = "0";
    textArea.style.left = "0";
    textArea.style.position = "fixed";
    document.body.appendChild(textArea);
    textArea.focus();
    try {
      var successful = document.execCommand('paste');
      if (successful) {
        resolve(textArea.value);
      } else {
        reject();
      }
    } catch (err) {
      reject(err);
    }
    document.body.removeChild(textArea);
  });
}
function pasteText() {
  if (navigator.clipboard) {
    return navigator.clipboard.readText();
  } else {
    return fallbackReadTextFromClipboard();
  }
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _OOP = __webpack_require__(38608);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
 * @extends EventEmitter
 * @constructor
 */
function DelaySignal() {
  _EventEmitter["default"].call(this);
  this.signals = {};
  this.to = this.NO_WAIT;
  this.execSignal = this.execSignal.bind(this);
}
(0, _OOP.mixClass)(DelaySignal, _EventEmitter["default"]);
DelaySignal.NO_WAIT = -1;
DelaySignal.prototype.NO_WAIT = DelaySignal.NO_WAIT;
DelaySignal.prototype.delay = 4;
DelaySignal.prototype.execSignal = function () {
  this.to = this.NO_WAIT;
  var signals = this.signals;
  this.signals = {};
  for (var name in signals) {
    this.fire.apply(this, [name].concat(signals[name]));
  }
};
DelaySignal.prototype.emit = function (name) {
  this.signals[name] = Array.prototype.slice.call(arguments, 1);
  if (this.to === this.NO_WAIT) {
    this.to = setTimeout(this.execSignal, this.delay);
  }
  return this;
};
DelaySignal.prototype.revokeResource = function () {
  if (this.to !== this.NO_WAIT) {
    clearTimeout(this.to);
  }
  delete this.signals;
  delete this.execSignal;
};
var _default = DelaySignal;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.FeatureClass = void 0;
exports.activeFullScreen = activeFullScreen;
exports.copyStyleRule = copyStyleRule;
exports["default"] = exports.deactiveFullScreen = void 0;
exports.depthClone = depthClone;
exports.depthCloneWithStyle = depthCloneWithStyle;
exports.fontFaceIsLoaded = fontFaceIsLoaded;
exports.getConstructDescriptor = getConstructDescriptor;
exports.getScreenSize = getScreenSize;
exports.getScrollSize = getScrollSize;
exports.getSystemFontSize = getSystemFontSize;
exports.getTextNodeBound = getTextNodeBound;
exports.imageToCanvas = imageToCanvas;
exports.inactiveFullScreen = inactiveFullScreen;
exports.isDomNode = isDomNode;
exports.isFullScreen = isFullScreen;
exports.traceOutBoundingClientRect = traceOutBoundingClientRect;
exports.waitIFrameLoaded = waitIFrameLoaded;
exports.waitImageLoaded = waitImageLoaded;
var _JSPath = _interopRequireDefault(__webpack_require__(67807));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _getFunctionName = _interopRequireDefault(__webpack_require__(13721));
var _ElementNS = _interopRequireDefault(__webpack_require__(75914));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _attribute = __webpack_require__(18144);
var _AttachHook = _interopRequireDefault(__webpack_require__(7068));
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 {Object} data
 * @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
 *
 */

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) {
  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 _AttachHook["default"];
      }
    }
  });
  this['$ '.trim()] = this.$.bind(this);
  this['_ '.trim()] = this._.bind(this);
  this['$' + '$'] = this.$$.bind(this);
  this.buildDom = this._;
}
Dom.prototype.defaultTag = 'div';
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, option, this);
        } else {
          res = creator(option.data, option, this);
        }
      } 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);
  var children = option.child;
  if (children) {
    if (!children.forEach || !children.map) {
      children = [children];
    }
    for (var i = 0; i < children.length; ++i) {
      res.addChild(this._(children[i], false));
    }
  }
  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 inactiveFullScreen() {
  if (document.exitFullscreen) {
    document.exitFullscreen();
  } else if (document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
  } else if (document.webkitExitFullscreen) {
    document.webkitExitFullscreen();
  } else if (document.msExitFullscreen) {
    document.msExitFullscreen();
  }
}
Dom.inactiveFullScreen = inactiveFullScreen;

//adapt
var deactiveFullScreen = inactiveFullScreen;
exports.deactiveFullScreen = deactiveFullScreen;
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();
  if (!img.src) return Promise.resolve();
  return new Promise(function (rs) {
    if (img.addEventListener) {
      img.addEventListener('load', rs, false);
      img.addEventListener('error', 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
 * @param afterCloneCb
 * @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;

/**
 *
 */
function getSystemFontSize() {
  if (window.mobileHost && window.mobileHost.systemFont) {
    return window.mobileHost.systemFont.pointSize;
  }
  var _ = Dom.ShareInstance._;
  var initSpan = Dom.ShareInstance._({
    tag: 'span',
    style: {
      font: 'inherit'
    }
  });
  var appleSpan = Dom.ShareInstance._({
    tag: 'span',
    style: {
      font: '-apple-system-body'
    }
  }).addTo(document.body);
  var renderer = _({
    style: {
      font: 'initial',
      position: 'fixed',
      top: 0,
      left: 0,
      visibility: 'hidden',
      opacity: 0,
      zIndex: -100
    },
    child: [initSpan && appleSpan]
  }).addTo(document.body);
  var appleSize = appleSpan.getFontSize();
  var initSize = initSpan.getFontSize();
  var defaultSize = appleSize !== initSize ? appleSize : initSize;
  renderer.remove();
  return Math.round(defaultSize * 14 / 16);
}
function getTextNodeBound(textNode) {
  if (document.createRange) {
    var range = document.createRange();
    range.selectNodeContents(textNode);
    if (range.getBoundingClientRect) {
      return range.getBoundingClientRect();
    }
  }
  return null;
}
Dom.getTextNodeBound = getTextNodeBound;

/***
 * 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;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.clearDomImmediate = clearDomImmediate;
exports["default"] = void 0;
exports.setDomImmediate = setDomImmediate;
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _AttachHook = _interopRequireDefault(__webpack_require__(7068));
var _safeThrow = _interopRequireDefault(__webpack_require__(628));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @extends EventEmitter
 * @param {AElement=} attachHookElt
 * @constructor
 */
function DomSignal(attachHookElt) {
  _EventEmitter["default"].call(this);
  this.signals = {};
  this.ev_attached = this.ev_attached.bind(this);
  this.$attachhook = attachHookElt || this.createBuildInAttachHook();
  this.$attachhookParent = attachHookElt && attachHookElt.parentElement || null;
  this.$attachhook.on('attached', this.ev_attached);
  this.$attachhook.ofDS = this;
  this.isPending = false;
}
_OOP["default"].mixClass(DomSignal, _EventEmitter["default"]);
DomSignal.prototype.createBuildInAttachHook = function () {
  var elt = document.createElement('img');
  Object.defineProperties(elt, Object.getOwnPropertyDescriptors(_AElement["default"].prototype));
  Object.defineProperties(elt, Object.getOwnPropertyDescriptors(_AttachHook["default"].prototype));
  Object.defineProperties(elt, _AttachHook["default"].property);
  _AElement["default"].call(elt);
  elt.setAttribute('src', '');
  elt.defineEvent('attached');
  elt.addStyle('display', 'none');
  _AttachHook["default"].call(elt);
  elt.cancelWaiting();
  return elt;
};
DomSignal.prototype.execSignal = function () {
  var signals = this.signals;
  this.signals = {};
  this.isPending = false;
  for (var name in signals) {
    this.fire.apply(this, [name].concat(signals[name]));
  }
};
DomSignal.prototype.emit = function (name) {
  if (this.$attachhook && (this.$attachhook.canceled || this.$attachhook.attached) && !this.isPending) {
    this.$attachhook.remove();
    this.$attachhook.resetState();
  }
  this.signals[name] = Array.prototype.slice.call(arguments, 1);
  this.isPending = true;
  if (!this.$attachhookParent) {
    this.$attachhookParent = document.body;
  }
  if (!this.$attachhook.parentElement) {
    this.$attachhook.resetState();
    this.$attachhookParent.appendChild(this.$attachhook);
  }
};
DomSignal.prototype.ev_attached = function () {
  this.execSignal();
};
var _default = DomSignal;
exports["default"] = _default;
var currentAT = null;
var callbackList = {};
var id = 0;
function setDomImmediate(callback) {
  var cid = ++id;
  callbackList[cid] = {
    exec: callback,
    args: Array.prototype.slice.call(arguments, 1)
  };
  if (!currentAT) {
    currentAT = document.createElement('img');
    currentAT.setAttribute('src', '');
    currentAT.addEventListener('error', function () {
      currentAT.remove();
      currentAT = null;
      Object.keys(callbackList).map(function (key) {
        var cb = callbackList[key];
        delete callbackList[key];
        if (cb) {
          try {
            cb.exec.call(null, cb.args);
          } catch (error) {
            (0, _safeThrow["default"])(error);
          }
        }
      });
    });
  }
  return cid;
}
function clearDomImmediate(id) {
  delete callbackList[id];
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
function DynamicCSS() {
  this.elt = document.createElement('style');
  this.data = {};
  this.state = 'STANDBY';
  this.start();
}

/**
 *
 * @returns {this}
 */
DynamicCSS.prototype.commit = function () {
  var _this = this;
  this.elt.innerHTML = Object.keys(this.data).map(function (ruleQuery) {
    var rule = _this.data[ruleQuery];
    return [ruleQuery + ' {', '    ' + Object.keys(rule).map(function (name) {
      return name + ': ' + rule[name] + ';';
    }).join('\n'), '}'].join('\n');
  }).join('\n\n');
  return this;
};
DynamicCSS.prototype.start = function () {
  if (this.state !== 'STANDBY' && this.state !== 'STOP') return;
  this.state = 'RUNNING';
  document.head.appendChild(this.elt);
  return this;
};
DynamicCSS.prototype.stop = function () {
  if (this.state !== 'RUNNING') return;
  this.elt.remove();
  return this;
};
DynamicCSS.prototype.destroy = function () {
  this.stop();
  if (this.state !== 'STOP') return;
  this.elt = null;
  return this;
};

/***
 *
 * @param {string} ruleQuery
 * @param {string} name
 * @param {string} value
 * @returns {this}
 */
DynamicCSS.prototype.setProperty = function (ruleQuery, name, value) {
  this.data[ruleQuery] = this.data[ruleQuery] || {};
  this.data[ruleQuery][name] = value;
  return this;
};

/**
 *
 * @param ruleQuery
 * @param name
 * @returns {*|undefined}
 */
DynamicCSS.prototype.getProperty = function (ruleQuery, name) {
  var rule = this.data[ruleQuery];
  return rule ? rule[name] : undefined;
};

/***
 *
 * @param ruleQuery
 * @param property
 * @returns {DynamicCSS}
 */
DynamicCSS.prototype.removeProperty = function (ruleQuery, property) {
  var rule = this.data[ruleQuery];
  if (rule) delete rule[property];
  return this;
};

/***
 *
 * @param ruleQuery
 * @param {object} properties
 * @returns {this}
 */
DynamicCSS.prototype.setRule = function (ruleQuery, properties) {
  this.data[ruleQuery] = Object.assign({}, properties);
  return this;
};

/***
 *
 * @param ruleQuery
 * @param {object} properties
 * @returns {this}
 */
DynamicCSS.prototype.modifyRule = function (ruleQuery, properties) {
  this.data[ruleQuery] = Object.assign(this.data[ruleQuery] || {}, properties);
  return this;
};

/***
 *
 * @param {string} ruleQuery
 * @returns {object}
 */
DynamicCSS.prototype.getRule = function (ruleQuery) {
  return this.data[ruleQuery];
};

/**
 *
 * @param {string} ruleQuery
 * @returns {this}
 */
DynamicCSS.prototype.removeRule = function (ruleQuery) {
  delete this.data[ruleQuery];
  return this;
};

/***
 *
 * @param {object} rules
 * @returns {this}
 */
DynamicCSS.prototype.setRules = function (rules) {
  var _this2 = this;
  Object.keys(rules).forEach(function (key) {
    return _this2.setRule(key, rules[key]);
  });
  return this;
};
DynamicCSS.prototype.getRules = function () {
  return this.data;
};
DynamicCSS.prototype.modifyRules = function (rules) {
  var _this3 = this;
  Object.keys(rules).forEach(function (key) {
    return _this3.modifyRule(key, rules[key]);
  });
  return this;
};
var _default = DynamicCSS;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _AElement = _interopRequireDefault(__webpack_require__(63445));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _default = _AElement["default"];
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _AElementNS = _interopRequireDefault(__webpack_require__(75658));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _default = _AElementNS["default"];
exports["default"] = _default;

/***/ }),

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

"use strict";


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.isMouseMiddle = isMouseMiddle;
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);
  var listenerList;
  var i;
  var startTime, endTime;
  if (this.isSupportedEvent(eventName)) {
    if (this._azar_extendEvents.prioritize[eventName]) {
      listenerList = this._azar_extendEvents.prioritize[eventName].slice();
      for (i = 0; i < listenerList.length; ++i) {
        try {
          startTime = Date.now();
          listenerList[i].wrappedCallback.apply(this, others);
          endTime = Date.now();
          if (endTime - startTime > 200) {
            console.log('slow function call (' + (endTime - startTime) + ')', listenerList[i]);
          }
        } 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 {
          startTime = Date.now();
          listenerList[i].wrappedCallback.apply(this, others);
          endTime = Date.now();
          if (endTime - startTime > 200) {
            console.log('slow function call (' + (endTime - startTime) + ')', listenerList[i]);
          }
        } 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 () {
            this.off(event.eventName, event.wrappedCallback, event.cap);
            event.callback.apply(this, arguments);
          };
        } 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 === 0;
  return isLeftMB;
}
function isMouseMiddle(event) {
  var isMiddleMB = false;
  if ("which" in event)
    // Gecko (Firefox), WebKit (Safari/Chrome) & Opera
    isMiddleMB = event.which === 2;else if ("button" in event)
    // IE, Opera
    isMiddleMB = event.button === 1;
  return isMiddleMB;
}

/**
 *
 * @type AElement
 * @name sponsorElement
 * @memberof AElement#
 */
/**
 *
 * @param {AElement} element
 * @param {Event |{target: AElement}} event
 * @returns {boolean}
 */
function hitElement(element, event) {
  var current = event.target;
  while (current) {
    if (current === element) return true;
    if (current.sponsorElement && current.sponsorElement !== current.parentElement) {
      // sponsorElement like trigger of quick-menu
      if (hitElement(element, {
        target: current.sponsorElement
      })) 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;

/***/ }),

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

"use strict";


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;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = exports.LangSys = void 0;
exports.elementLanguageChangeHandler = elementLanguageChangeHandler;
exports.textNodeLanguageChangeHandler = textNodeLanguageChangeHandler;
var _ResizeSystem = _interopRequireDefault(__webpack_require__(62826));
var _safeThrow = _interopRequireDefault(__webpack_require__(628));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @typedef LanguageSystemExtension
 * @property {function(key: string, code?: string): (string | null)} getText
 */

/****
 *
 * @constructor
 */
function LanguageSystem() {
  this.data = {};
  this.code = navigator.language || navigator.userLanguage;
  /***
   *
   * @type {LanguageSystemExtension[]}
   * @private
   */
  this._extensions = [];
}
LanguageSystem.prototype.notifyLanguageChange = function () {
  var sizeChange = false;
  function visit(elt) {
    if (elt.onlanguagechange) {
      try {
        elt.onlanguagechange();
        sizeChange = true;
      } catch (err) {
        (0, _safeThrow["default"])(err);
      }
      if (elt.childNodes && elt.childNodes.length > 0) {
        Array.prototype.forEach.call(elt.childNodes, visit);
      }
    }
  }
  visit(document.body);
  if (sizeChange) _ResizeSystem["default"].update();
};

/***
 *
 * @param {ChildNode | Text | HTMLElement | Element} node
 */
LanguageSystem.prototype.bind = function (node, key) {
  if (node.nodeType === 1) {
    this.bindTextNode(node, key);
  } else if (node.nodeType === 3) {
    this.bindElement(node, key);
  }
};

/***
 *
 * @param {Text | {__as_language_key: string}} node
 * @param {string} key
 */
LanguageSystem.prototype.bindTextNode = function (node, key) {
  node.__as_language_key = key;
  node.onlanguagechange = textNodeLanguageChangeHandler;
};

/***
 *
 * @param {ChildNode | HTMLElement | Element | {__as_language_key: string}} node
 * @param {string} key
 */
LanguageSystem.prototype.bindElement = function (node, key) {
  node.__as_language_key = key;
  node.onlanguagechange = elementLanguageChangeHandler;
};

/***
 *
 * @param {string} key
 * @param {string} [code]
 */
LanguageSystem.prototype.getText = function (key, code) {
  var code = code || this.code;
  var res;
  var ex;
  for (var i = this._extensions.length - 1; i >= 0; --i) {
    ex = this._extensions[i];
    res = ex.getText && ex.getText.apply(ex, arguments);
    if (res) break;
  }
  if (!res) {
    res = this.data[code] && this.data[code][key];
  }
  return res || null;
};

/***
 *
 * @param {LanguageSystemExtension} ex
 */
LanguageSystem.prototype.addExtension = function (ex) {
  this._extensions.push(ex);
};
var LangSys = new LanguageSystem();
exports.LangSys = LangSys;
LangSys.getText = function () {
  if (window.LanguageModule && window.LanguageModule.text) {
    LangSys.addExtension({
      getText: function getText() {
        var text = window.LanguageModule.text.apply(window.LanguageModule, arguments);
        if (text && text.startsWith('[key:') && text.charAt(text.length - 1) === ']') return null;
        return text || null;
      }
    });
    LangSys.getText = LanguageSystem.prototype.getText;
    return this.getText.apply(this, arguments);
  }
  return LanguageSystem.prototype.getText.apply(this, arguments);
};
function textNodeLanguageChangeHandler() {
  if (this.__as_language_key) {
    var newText = LangSys.getText(this.__as_language_key);
    if (newText && newText.trim) {
      this.data = newText;
    }
  }
}
function elementLanguageChangeHandler() {
  if (this.__as_language_key) {
    var newText = LangSys.getText(this.__as_language_key);
    if (newText && newText.trim) {
      var textNode;
      for (var i = 0; i < this.childNodes.length; ++i) {
        if (this.childNodes[i].nodeType === 1) {
          textNode = this.childNodes[i];
          break;
        }
      }
      if (!textNode) {
        textNode = document.createTextNode('');
      }
      textNode.data = newText;
    }
  }
}
var _default = LangSys;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.bindFunctions = bindFunctions;
exports["default"] = void 0;
exports.drillProperty = drillProperty;
exports.inheritCreator = inheritCreator;
exports.mixClass = mixClass;
exports.overrideMethod = overrideMethod;
/**
 * @param {Object} object
 * @param {String} key
 * @param {Function} method
 */
function overrideMethod(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);
  }
}
function extendsObject(object, prototype) {
  // do not use setter, getter
  for (var key in prototype) {
    if (key !== 'constructor' && key !== '__proto__') {
      if (typeof prototype[key] == 'function') {
        overrideMethod(object, key, prototype[key]);
      } else if (prototype[key] !== undefined && prototype[key] !== null) {
        object[key] = prototype[key]; //just copy
      }
    }
  }
}

;
function quickInheritObject(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;
        };
      }
    }
  });
}
;
function drillProperty(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];
      },
      configurable: true
    });
  } else {
    if (keyTop instanceof Array) {
      for (var i = 0; i < keyTop.length; ++i) {
        drillProperty(topObject, botObject, keyTop[i], keyTop[i]);
      }
    } else {
      for (var key in keyTop) {
        drillProperty(topObject, botObject, key, keyTop[key]);
      }
    }
  }
}
;
function bindFunctions(_this, handlers) {
  var res = {};
  for (var key in handlers) {
    res[key] = handlers[key].bind(_this);
  }
  return res;
}
;
function inheritCreator(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
 */
function mixClass(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 OOP = {
  overrideMethod: overrideMethod,
  "extends": extendsObject,
  inherit: quickInheritObject,
  mixClass: mixClass,
  inheritCreator: inheritCreator,
  drillProperty: drillProperty,
  bindFunctions: bindFunctions
};
var _default = OOP;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _AElementNS = _interopRequireDefault(__webpack_require__(75658));
var _DelaySignal = _interopRequireDefault(__webpack_require__(81809));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
 * @name requestUpdateSize
 * @type {function}
 * @memberof AElement#
 */

/**
 * @name updateSize
 * @type {function}
 * @memberof AElement#
 */

/**
 * @name onresize
 * @type {function}
 * @memberof AElement#
 */

/**
 * @name requestRevokeResource
 * @type {function}
 * @memberof AElement#
 */

/**
 *
 * @constructor
 */
function ResizeSystem() {
  var _this = this;
  this.elts = [];
  this.cache = [];
  this.cacheOf = null;
  this.lastResizeTime = 0;
  this.pendingElts = {};
  window.addEventListener('resize', this.update.bind(this));
  this['goDown' + 'AndCache'] = this.goDownAndCache.bind(this);
  this['notify' + 'ToElt'] = this.notifyToElt.bind(this);
  var setup = function setup() {
    _this.domSignal = new _DelaySignal["default"]();
    _this.domSignal.on('request_update_signal', _this.update.bind(_this));
    _this.domSignal.on('request_update_pending_signal', _this.updatePending.bind(_this));
    window.removeEventListener("load", setup);
  };
  if (document.body) {
    setup();
  } else {
    window.addEventListener("load", setup);
  }
}

/***
 *
 * @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) {
  try {
    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;
    }
  } catch (err) {
    console.error(err);
  }
};
ResizeSystem.prototype.update = function () {
  var now = Date.now();
  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.requestUpdateSignal = function () {
  if (!this.domSignal) return;
  this.domSignal.emit('request_update_signal');
};
ResizeSystem.prototype.removeTrash = function () {
  var oldArr = this.elts;
  var newArr = [];
  var elt;
  var n = oldArr.length;
  for (var i = 0; i < n; ++i) {
    elt = oldArr[i];
    if (_AElement["default"].prototype.isDescendantOf.call(elt, document.body)) {
      newArr.push(elt);
    } else if (typeof elt.requestRevokeResource === "function") {
      elt.requestRevokeResource();
    }
  }
  this.elts = newArr;
};

/***
 *
 * @param  {AElement| AElementNS | Node} fromElt
 * @param  {boolean=} toRoot
 * @returns {boolean}
 */
ResizeSystem.prototype.updateUp = function (fromElt, toRoot) {
  var found = false;
  while (fromElt && (!found || toRoot)) {
    found = this.notifyToElt(fromElt);
    fromElt = fromElt.parentElement;
  }
  return found;
};
ResizeSystem.prototype.updatePending = function () {
  var o = this.pendingElts;
  this.pendingElts = {};
  for (var key in o) {
    this.notifyToElt(o[key]);
  }
};

/***
 *
 * @param  {AElement| AElementNS | Node} fromElt
 * @param  {boolean=} toRoot
 * @returns {boolean}
 */
ResizeSystem.prototype.requestUpdateUpSignal = function (fromElt, toRoot) {
  if (!this.domSignal) return;
  var elts = [];
  var found = false;
  while (fromElt && (!found || toRoot)) {
    if (typeof fromElt.requestUpdateSize == 'function' || typeof fromElt.updateSize == 'function' || typeof fromElt.onresize == 'function') {
      elts.push(fromElt);
      found = true;
    }
    fromElt = fromElt.parentElement;
  }
  var pendingElts = this.pendingElts;
  elts.forEach(function (elt) {
    if (!elt.__resize_ident__) elt.__resize_ident__ = Date.now() + '_' + Math.random();
    if (!pendingElts[elt.__resize_ident__]) pendingElts[elt.__resize_ident__] = elt;
  });
  this.domSignal.emit('request_update_pending_signal');
  return found;
};

/***
 *
 * @param  {AElement| AElementNS | Node} fromElt
 * @returns {boolean}
 */
ResizeSystem.prototype.updateDown = function (fromElt) {
  var now = Date.now();
  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.removeTrash();
  this.cache = undefined;
  this.elts.push(elt);
  return true;
};
var _default = new ResizeSystem();
exports["default"] = _default;

/***/ }),

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

"use strict";


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__(64821));
var _ElementNS = _interopRequireDefault(__webpack_require__(75914));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _Color = _interopRequireDefault(__webpack_require__(64974));
var _AttachHook = _interopRequireDefault(__webpack_require__(7068));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
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; }
/***
 * @extends Dom
 * @param option
 * @constructor
 */
function Svg(option) {
  _Dom["default"].call(this, option);
  this.svgNS = "http://www.w3.org/2000/svg";
  Object.defineProperties(this.creator, {
    sattachhook: {
      set: function set() {
        //do nothing
      },
      get: function get() {
        return _AttachHook["default"];
      }
    }
  });
  delete this.buidDom;
  this.buildSvg = this.create.bind(this);
}
_OOP["default"].mixClass(Svg, _Dom["default"]);
Svg.prototype.defaultTag = 'g';
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 depthClone = function depthClone(originElt) {
      var newElt = originElt.cloneNode(); //no deep
      if (!originElt.getAttributeNS) return newElt; //is text node
      var style = getComputedStyle(originElt);
      var key, value;
      for (var i = 0; i < style.length; ++i) {
        key = style[i];
        value = style.getPropertyValue(key);
        if (value && value.length > 0 && value !== 'auto') {
          newElt.style.setProperty(key, value);
        }
      }
      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;

/**
 *
 * @param {string|AElement}element
 * @param {"print"|null=} option
 * @returns {string}
 */
function svgToExportedString(element, option) {
  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;

/**
 *
 * @param element
 * @param {"print"|null=}option
 * @returns {string}
 */
function svgToSvgUrl(element, option) {
  var svg = svgToExportedString(element, option);
  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;
      var printViewBox;
      if (tagName === 'canvas' || tagName === 'svg' && option.convertSVG) {
        if (tagName === "canvas") {
          url = originElt.toDataURL();
        } else {
          url = svgToSvgUrl(originElt, 'print'); //todo: option
        }

        img = _({
          tag: 'img',
          props: {
            src: url
          }
        });
        $(newElt).selfReplace(img);
        newElt = img;
        needCopyStyle = true;
      } else if (tagName === 'svg' && originElt.getAttribute('data-print-view-box')) {
        printViewBox = originElt.getAttribute('data-print-view-box').split(' ').map(function (v) {
          return parseFloat(v);
        });
        newElt.setAttribute('viewBox', printViewBox.join(' '));
        newElt.setAttribute('width', printViewBox[2]);
        newElt.setAttribute('height', printViewBox[3]);
        newElt.style.setProperty('width', printViewBox[2] + 'px');
        newElt.style.setProperty('height', printViewBox[3] + 'px');
      } else if (tagName === 'script') {
        newElt.remove();
      } else if (tagName === 'img') {
        newElt.setAttribute('src', originElt.src);
      } else if (tagName === 'input') {
        if (originElt.getAttribute('type') === 'radio' || originElt.getAttribute('type') === 'checkbox') {
          if (originElt.checked) {
            newElt.setAttribute('checked', true);
          }
        } else if (originElt.getAttribute('type') === 'text' || !originElt.getAttribute('type') || originElt.getAttribute('type') === 'number') {
          newElt.setAttribute('value', originElt.value);
        }
      }
      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;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.getCaretPosition = getCaretPosition;
exports.getTextIn = getTextIn;
exports.getTextNodesIn = getTextNodesIn;
exports.measureText = measureText;
exports.setCaretPosition = setCaretPosition;
exports.setSelectionRange = setSelectionRange;
exports.setSelectionRangeEnd = setSelectionRangeEnd;
exports.setSelectionRangeStart = setSelectionRangeStart;
exports.textToNodes = textToNodes;
var _Dom = _interopRequireDefault(__webpack_require__(64821));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function getTextNodesIn(node) {
  var textNodes = [];
  if (node.nodeType == 3) {
    textNodes.push(node);
  } else {
    var children = node.childNodes;
    for (var i = 0, len = children.length; i < len; ++i) {
      textNodes.push.apply(textNodes, getTextNodesIn(children[i]));
    }
  }
  return textNodes;
}

/**
 * 
 * @param {Element} el 
 * @param {Range} range 
 * @param {Number} start 
 * @returns {Number} -1: ok,  ret >= 0(is length of text) : need move to next element
 * 
 */
function setSelectionRangeStart(el, range, start) {
  if (start > 0) {
    if (el.nodeType == Node.TEXT_NODE) {
      var text = el.data;
      if (start <= text.length) {
        range.setStart(el, start);
        return -1;
      } else return text.length;
    }
    if (el.tagName.toLowerCase() == 'br') {
      return 0;
    } else {
      var delta = 0;
      var i = 0;
      var textLength = 0;
      var newLine = false;
      while (delta >= 0 && i < el.childNodes.length) {
        var childElt = el.childNodes[i];
        if (newLine) {
          newLine = false;
          ++textLength;
        }
        delta = setSelectionRangeStart(childElt, range, start - textLength);
        if (delta >= 0) textLength += delta;
        if (childElt.nodeType != Node.TEXT_NODE && (window.getComputedStyle(childElt).display == 'block' || childElt.tagName.toLowerCase() == 'br')) {
          newLine = true;
        }
        ++i;
      }
      if (delta >= 0) return textLength;
      return -1;
    }
  } else {
    range.setStart(el, 0);
    return -1;
  }
}

/**
 * 
 * @param {Element} el 
 * @param {Range} range 
 * @param {Number} end 
 * @returns {Number} -1: ok,  ret >= 0(is length of text) : need move to next element
 * 
 */
function setSelectionRangeEnd(el, range, end) {
  if (end > 0) {
    if (el.nodeType == Node.TEXT_NODE) {
      var text = el.data;
      if (end <= text.length) {
        range.setEnd(el, end);
        return -1;
      } else return text.length;
    }
    if (el.tagName.toLowerCase() == 'br') {
      return 0;
    } else {
      var delta = 0;
      var i = 0;
      var textLength = 0;
      var newLine = false;
      while (delta >= 0 && i < el.childNodes.length) {
        var childElt = el.childNodes[i];
        if (newLine) {
          newLine = false;
          ++textLength;
        }
        delta = setSelectionRangeEnd(childElt, range, end - textLength);
        if (delta >= 0) textLength += delta;
        if (childElt.nodeType != Node.TEXT_NODE && (window.getComputedStyle(childElt).display == 'block' || childElt.tagName.toLowerCase() == 'br')) {
          newLine = true;
        }
        ++i;
      }
      if (delta >= 0) return textLength;
      return -1;
    }
  } else {
    range.setEnd(el, 0);
    return -1;
  }
}
function setSelectionRange(el, start, end) {
  if (document.createRange && window.getSelection) {
    var range = document.createRange();
    range.selectNodeContents(el);
    var delta;
    if (start >= 0) {
      delta = setSelectionRangeStart(el, range, start);
      if (delta >= 0) range.setStart(el, el.childNodes.length);
    } else {
      start = 0;
      range.setStart(el, 0);
    }
    if (end >= start) {
      delta = setSelectionRangeEnd(el, range, end);
      if (delta >= 0) range.setEnd(el, el.childNodes.length);
    }
    var sel = window.getSelection();
    sel.removeAllRanges();
    sel.addRange(range);
  } else if (document.selection && document.body.createTextRange) {
    var textRange = document.body.createTextRange();
    textRange.moveToElementText(el);
    textRange.collapse(true);
    textRange.moveEnd("character", end);
    textRange.moveStart("character", start);
    textRange.select();
  }
}
function getTextIn(e) {
  if (e.nodeType == Node.TEXT_NODE) {
    return e.data;
  }
  if (e.tagName && e.tagName.toLowerCase() == 'br') return '';
  var texts = [];
  var newLine = false;
  for (var i = 0; i < e.childNodes.length; ++i) {
    if (newLine) {
      newLine = false;
      texts.push('\n');
    }
    var childElt = e.childNodes[i];
    texts.push(getTextIn(childElt));
    if (childElt.nodeType != Node.TEXT_NODE && (window.getComputedStyle(childElt).display == 'block' || childElt.tagName.toLowerCase() == 'br')) {
      newLine = true;
    }
  }
  return texts.join('');
}
function textToNodes(text) {
  var lines = text.split(/\r?\n/);
  return lines.map(function (text) {
    if (text.length == 0) {
      return _Dom["default"].ShareInstance._({
        child: {
          tag: 'br'
        }
      });
    } else {
      return _Dom["default"].ShareInstance._({
        child: {
          text: text
        }
      });
    }
  });
}

/*
** Returns the caret (cursor) position of the specified text field (oField).
** Return value range is 0-oField.value.length.
*/
function getCaretPosition(oField) {
  // Initialize
  var iCaretPos = 0;

  // IE Support
  if (document.selection) {
    // Set focus on the element
    oField.focus();

    // To get cursor position, get empty selection range
    var oSel = document.selection.createRange();

    // Move selection start to 0 position
    oSel.moveStart('character', -oField.value.length);

    // The caret position is selection length
    iCaretPos = oSel.text.length;
  }

  // Firefox support
  else if (oField.selectionStart || oField.selectionStart == '0') iCaretPos = oField.selectionDirection == 'backward' ? oField.selectionStart : oField.selectionEnd;

  // Return results
  return iCaretPos;
}
function setCaretPosition(oField, caretPos) {
  if (oField.createTextRange) {
    var range = oField.createTextRange();
    range.move('character', caretPos);
    range.select();
  } else {
    if (oField.selectionStart) {
      oField.focus();
      oField.setSelectionRange(caretPos, caretPos);
    } else oField.focus();
  }
}
function measureText(text, font) {
  // re-use canvas object for better performance
  var canvas = measureText.canvas || (measureText.canvas = document.createElement("canvas"));
  var context = canvas.getContext("2d");
  if (font) context.font = font;
  var metrics = context.measureText(text);
  return metrics;
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.isAltKey = isAltKey;
exports.isCtrlKey = isCtrlKey;
exports.isFnKey = isFnKey;
exports.isMetaKey = isMetaKey;
exports.isShiftKey = isShiftKey;
exports.isSpaceKey = isSpaceKey;
exports.keyboardEventToKeyBindingIdent = keyboardEventToKeyBindingIdent;
exports.normalizeKeyBindingIdent = normalizeKeyBindingIdent;
function isFnKey(name) {
  return name.match(/^[fF]([2-9]|(1([0-2]?)))$/);
}
function isSpaceKey(name) {
  return name === ' ' || name.match(/^[sS]pace$/);
}
function isCtrlKey(name) {
  return name.match(/(^([cC]ontrol)|ctrl)$/);
}
function isAltKey(name) {
  return name.match(/^[aA]lt$/);
}
function isShiftKey(name) {
  return name.match(/^[sS]hift$/);
}
function isMetaKey(name) {
  return name.toLowerCase().match(/^(command|windows|meta)$/);
}

/***
 *
 * @param {string} text
 * @return {string}
 */
function normalizeKeyBindingIdent(text) {
  var keys = text.trim().toLowerCase().split(/[-+\s_.]+/).filter(function (w) {
    return w.length > 0;
  });
  var values = {
    meta: 1,
    ctrl: 2,
    alt: 3,
    shift: 4
  };
  keys.sort(function (a, b) {
    var va, vb;
    va = values[a] || 100;
    vb = values[b] || 100;
    return va - vb;
  });
  return keys.join('-');
}

/***
 *
 * @param {KeyboardEvent} event
 * @return {string}
 */
function keyboardEventToKeyBindingIdent(event) {
  var keys = [];
  var keyName = event.key || String.fromCharCode(event.which || event.keyCode);
  if (event.metaKey) {
    keys.push('meta');
  }
  if (event.ctrlKey) keys.push('ctrl');
  if (event.altKey) keys.push('alt');
  if (event.shiftKey) keys.push('shift');
  if (isSpaceKey(keyName)) {
    keys.push('space');
  } else if (isFnKey(keyName)) {
    keys.push(keyName.toLowerCase());
  } else if (!isMetaKey(keyName) && !isAltKey(keyName) && !isCtrlKey(keyName) && !isShiftKey(keyName)) keys.push(keyName.toLowerCase());
  return keys.join('-');
}

/***/ }),

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

"use strict";


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;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.copyJSVariable = copyJSVariable;
exports.generateJSVariable = generateJSVariable;
exports.isJSVariableEqual = isJSVariableEqual;
exports.replaceDateStringJSVariable = replaceDateStringJSVariable;
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); }
/**
 *
 * @param obj
 * @param {string=}indent
 * @param {object=}opt
 * @returns {string}
 */
function generateJSVariable(obj, indent, opt) {
  indent = indent || '';
  var childIndent = indent + '    ';
  if (obj === null) {
    return 'null';
  } else if (obj instanceof Date) {
    return 'new Date(' + obj.getTime() + ')';
  } else if (obj instanceof Array) {
    if (obj.length === 0) return '[]';
    return '[\n' + obj.map(function (it) {
      return childIndent + generateJSVariable(it, childIndent, opt);
    }).join(',\n') + '\n' + indent + ']';
  } else if (obj instanceof Error) {
    return generateJSVariable({
      message: obj.message,
      stack: obj.stack
    });
  } 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, opt);
    }).join(',\n') + '\n' + indent + '}';
  } else if (obj === undefined) {
    return 'undefined';
  } else {
    return JSON.stringify(obj);
  }
}

/***
 *
 * @param o
 * @param {Array<{test, replace}>| null=} replacers
 * @returns {*}
 */
function copyJSVariable(o, replacers) {
  var _arguments = arguments;
  var replacer;
  if (replacers && replacers.length > 0) {
    replacer = replacers.find(function (rp) {
      return rp.test.apply(rp, [o].concat(Array.prototype.slice.call(_arguments, 2)));
    });
    if (replacer) {
      return replacer.replace.apply(replacer, [o].concat(Array.prototype.slice.call(arguments, 2)));
    }
  }
  if (o === null) return null;
  if (o === undefined) return undefined;
  var type = _typeof(o);
  if (type === "boolean") return o;
  if (o instanceof Date || typeof o.getTime === "function") return new Date(o.getTime());
  if (type === "number") return o;
  if (type === "string") return o + '';
  if (typeof o.map === "function") {
    return o.map(function (it, i) {
      return copyJSVariable(it, replacers, i, o);
    });
  }
  if (type === "object" && o.constructor === Object) {
    return Object.keys(o).reduce(function (ac, cr) {
      ac[cr] = copyJSVariable(o[cr], replacers, cr, o);
      return ac;
    }, {});
  }
  return o;
}
function replaceDateStringJSVariable(o) {
  return copyJSVariable(o, [{
    test: function test(x) {
      return typeof x === "string" && x.match(/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s+([a-zA-Z]{3})\s+[\d\s:]+GMT[\d+]+\s*\([^)]+\)$/) && !isNaN(new Date(x).getTime());
    },
    replace: function replace(x) {
      return new Date(x);
    }
  }]);
}

/***
 *
 * @param a
 * @param b
 * @return {boolean}
 */
function isJSVariableEqual(a, b) {
  if (a === b) return true; //1
  var tA = _typeof(a);
  var tB = _typeof(b);
  if (tA !== tB) return false; //2
  if (!a !== !b) return false;
  if (tA === 'string') return false; //because 1 & 2
  if (tA === "number") {
    if (isNaN(a) && isNaN(b)) return true; //because 2
    return false; //because 1
  }

  var aIsDate = a instanceof Date;
  var bIsDate = b instanceof Date;
  if (aIsDate !== bIsDate) return false;
  if (aIsDate) return isJSVariableEqual(a.getTime(), b.getTime());
  var aIsArray = a instanceof Array;
  var bIsArray = a instanceof Array;
  if (aIsArray !== bIsArray) return false;
  var i;
  if (aIsArray) {
    if (a.length !== b.length) return false;
    for (i = 0; i < a.length; ++i) {
      if (!isJSVariableEqual(a[i], b[i])) return false;
    }
    return true;
  }

  //object
  if (a.equals) return a.equals(b);
  var aKeys = Object.keys(a);
  var bKeys = Object.keys(b);
  aKeys.sort();
  bKeys.sort();
  if (!isJSVariableEqual(aKeys, bKeys)) return false;
  for (i = 0; i < aKeys.length; ++i) {
    if (!isJSVariableEqual(a[aKeys[i]], b[aKeys[i]])) return false;
  }
  return true;
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.compareQuerySelectorSpecificity = compareQuerySelectorSpecificity;
exports.computeMeasureExpression = computeMeasureExpression;
exports.getQuerySelectorSpecificity = getQuerySelectorSpecificity;
var _DPParser = _interopRequireDefault(__webpack_require__(7679));
var _DPParseInstance = __webpack_require__(36093);
var _Array = __webpack_require__(40411);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***** css expression rules****/

// var exp = `calc(var(--abcd) + 15px + 15%)`;

var elementRegexes = [['varname', /--[a-z-]+/], ['word', /[_a-zA-Z][_a-zA-Z0-9]*/], ['msnumber', /(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)(vh|vw|px|%|pt)/], ['number', /(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)/], ['symbol', /[^\s_a-zA-Z0-9]/], ['string', /("(?:[^"\\]|\\.)*?")|('(?:[^'\\]|\\.)*?')/]];
var rules = [];
rules.push({
  target: 'measure_num',
  elements: ['.msnumber'],
  toAST: function toAST(pN) {
    pN = pN.children[0];
    return {
      type: "MeasureLiteral",
      value: parseFloat(pN.content.replace(/vh|vw|px|%|pt/, '')),
      unit: pN.content.match(/px|%|pt|vw|vh/)[0]
    };
  }
});
rules.push({
  target: 'number',
  elements: ['.number'],
  toAST: function toAST(pN) {
    pN = pN.children[0];
    return {
      type: "NumericLiteral",
      value: parseFloat(pN.content)
    };
  }
});
rules.push({
  target: 'exp',
  elements: ['measure_num'],
  toAST: function toAST(pN) {
    return (0, _DPParseInstance.parsedNodeToAST)(pN.children[0]);
  }
});
rules.push({
  target: 'bracket_group',
  elements: ['_(', 'exp', '_)'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]);
  }
});
rules.push({
  target: 'exp',
  elements: ['bracket_group'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'variable_name',
  elements: ['.varname'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'VariableName',
      name: parsedNode.children[0].content
    };
  }
});
rules.push({
  target: 'exp',
  elements: ['variable_name'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
['+', '-', '*', '/'].forEach(function (op) {
  rules.push({
    target: 'bin_op',
    elements: ['_' + op],
    toAST: function toAST(parsedNode) {
      return {
        type: "BinaryOperator",
        content: op
      };
    }
  });
});
var operatorOrder = {
  '*': 5,
  '/': 5,
  '%': 5,
  '+': 6,
  '-': 6
};
var operatorTokenToAst = function operatorTokenToAst(token) {
  return {
    type: token.type,
    content: token.content
  };
};
rules.push({
  target: 'exp',
  elements: ['exp', 'bin_op', 'exp'],
  // longestOnly: true,//* error when parse return (...)...
  ident: 'bin_op_rec',
  toASTChain: function toASTChain(parseNode) {
    var res = [];
    if (parseNode.children[0].rule === this) {
      res = res.concat(this.toASTChain(parseNode.children[0]));
    } else {
      res.push((0, _DPParseInstance.parsedNodeToAST)(parseNode.children[0]));
    }
    res.push(parseNode.children[1].children[0]);
    if (parseNode.children[2].rule === this) {
      res = res.concat(this.toASTChain(parseNode.children[2]));
    } else {
      res.push((0, _DPParseInstance.parsedNodeToAST)(parseNode.children[2]));
    }
    return res;
  },
  toAST: function toAST(parsedNode) {
    var chain = this.toASTChain(parsedNode);
    var stack = [];
    var item;
    var newNode;
    while (chain.length > 0) {
      item = chain.shift();
      if (item.content in operatorOrder) {
        while (stack.length >= 3 && operatorOrder[stack[stack.length - 2].content] <= operatorOrder[item.content]) {
          newNode = {
            type: 'BinaryExpression'
          };
          newNode.right = stack.pop();
          newNode.operator = operatorTokenToAst(stack.pop());
          newNode.left = stack.pop();
          stack.push(newNode);
        }
      }
      stack.push(item);
    }
    while (stack.length >= 3) {
      newNode = {
        type: 'BinaryExpression'
      };
      newNode.right = stack.pop();
      newNode.operator = operatorTokenToAst(stack.pop());
      newNode.left = stack.pop();
      stack.push(newNode);
    }
    return stack.pop();
  }
});
rules.push({
  target: 'args_list',
  elements: ['exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  },
  toASTChain: function toASTChain(parsedNode) {
    return [(0, _DPParseInstance.parsedNodeToAST)(parsedNode)];
  }
});
rules.push({
  target: 'ident',
  elements: ['.word'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'Identifier',
      name: parsedNode.children[0].content
    };
  }
});
rules.push({
  target: 'number',
  elements: ['.number'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'NumericLiteral',
      value: parseFloat(parsedNode.children[0].content)
    };
  }
});
rules.push({
  target: 'args_list',
  elements: ['args_list', '_,', 'exp'],
  longestOnly: true,
  ident: 'args_list_rec',
  toASTChain: function toASTChain(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[0]).concat((0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2]));
  }
});
rules.push({
  target: 'function_callee',
  elements: ['ident'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'function_callee',
  elements: ['mem_exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'function_call',
  elements: ['function_callee', '_(', 'args_list', '_)'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'CallExpression',
      arguments: parsedNode.children[2].rule.toASTChain(parsedNode.children[2]),
      callee: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])
    };
  }
});
rules.push({
  target: 'function_call',
  elements: ['function_callee', '_(', '_)'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'CallExpression',
      arguments: [],
      callee: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])
    };
  }
});
rules.push({
  target: 'exp',
  elements: ['function_call'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'exp',
  elements: ['number'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
var cssExpressionParser = new _DPParser["default"]({
  elementRegexes: elementRegexes,
  rules: rules
});
var getScreenViewSize = function getScreenViewSize() {
  var div = document.createElement('div');
  div.style.width = '100vw';
  div.style.height = '100vh';
  div.style.zIndex = '-10000';
  div.style.visibility = 'hidden';
  div.style.position = 'fixed';
  document.body.appendChild(div);
  var res = div.getBoundingClientRect();
  div.remove();
  return {
    width: res.width,
    height: res.height
  };
};
var fx = {
  calc: function calc(x) {
    return x;
  },
  'var': function _var(x, ctx) {
    if (!ctx.style) {
      if (ctx.elt) {
        ctx.style = getComputedStyle(ctx.elt);
      }
    }
    if (ctx.style) {
      if (ctx.style.getPropertyValue) {
        return ctx.style.getPropertyValue(x);
      } else {
        return ctx.style[x];
      }
    }
    throw new Error("Miss style:CSSStyleDeclaration in ctx");
  },
  '*': function _(x, y, ctx) {
    if (x && x.unit) {
      if (y && y.unit) {
        throw Error("Can not call ".concat(x.value + x.unit, " * ").concat(y.value + y.unit));
      } else {
        return {
          value: x.value * y,
          unit: x.unit
        };
      }
    } else {
      if (y && y.unit) {
        return {
          value: x * y.value,
          unit: y.unit
        };
      } else return x * y;
    }
  },
  '/': function _(x, y, ctx) {
    if (x && x.unit) {
      if (y && y.unit) {
        throw Error("Can not call ".concat(x.value + x.unit, " / ").concat(y.value + y.unit));
      } else {
        return {
          value: x.value / y,
          unit: x.unit
        };
      }
    } else {
      if (y && y.unit) {
        throw Error("Can not call ".concat(x, " / ").concat(y.value + y.unit));
      } else return x * y;
    }
  },
  '+': function add(x, y, ctx) {
    if (x && x.unit) {
      if (y && y.unit) {
        if (x.unit === y.unit) {
          return {
            value: x.value + y.value,
            unit: x.unit
          };
        } else {
          return fx['+'](fx.toPx(x, ctx), fx.toPx(y, ctx));
        }
      } else {
        throw Error("Can not call ".concat(x.value + x.unit, " + ").concat(y));
      }
    } else {
      if (y && y.unit) {
        throw Error("Can not call ".concat(x, " +  ").concat(y.value + y.unit));
      } else return x + y;
    }
  },
  '-': function add(x, y, ctx) {
    if (x && x.unit) {
      if (y && y.unit) {
        if (x.unit === y.unit) {
          return {
            value: x.value - y.value,
            unit: x.unit
          };
        } else {
          return fx['+'](fx.toPx(x, ctx), fx.toPx(y, ctx));
        }
      } else {
        throw Error("Can not call ".concat(x.value - x.unit, " + ").concat(y));
      }
    } else {
      if (y && y.unit) {
        throw Error("Can not call ".concat(x, " -  ").concat(y.value + y.unit));
      } else return x + y;
    }
  },
  toPx: function toPx(val, ctx) {
    switch (val.unit) {
      case '%':
        if (typeof ctx.parentSize !== "number") throw new Error("Miss parentSize:number(px) in ctx");
        return {
          value: ctx.parentSize * val.value / 100,
          unit: 'px'
        };
      case 'vh':
        if (!ctx.screenSize) {
          ctx.screenSize = getScreenViewSize();
        }
        return {
          value: ctx.screenSize.height * val.value / 100,
          unit: 'px'
        };
      case 'vw':
        if (!ctx.screenSize) {
          ctx.screenSize = getScreenViewSize();
        }
        return {
          value: ctx.screenSize.width * val.value / 100,
          unit: 'px'
        };
      default:
        break;
    }
    return val;
  }
};
var visitors = {
  CallExpression: function CallExpression(astNode, ctx) {
    var args = astNode.arguments.map(function (it) {
      return accept(it, ctx);
    });
    args.push(ctx);
    return fx[astNode.callee.name].apply(null, args);
  },
  BinaryExpression: function BinaryExpression(astNode, ctx) {
    var left = accept(astNode.left, ctx);
    var right = accept(astNode.right, ctx);
    var func = fx[astNode.operator.content];
    return func(left, right, ctx);
  },
  MeasureLiteral: function MeasureLiteral(astNode, ctx) {
    return {
      value: astNode.value,
      unit: astNode.unit
    };
  },
  NumericLiteral: function NumericLiteral(astNode, ctx) {
    return astNode.value;
  },
  VariableName: function VariableName(astNode, ctx) {
    return astNode.name;
  }
};
var accept = function accept(astNode, ctx) {
  return visitors[astNode.type](astNode, ctx);
};

/**
 *
 * @param {string} exp
 * @param {{parentSize?: number, screenViewSize?:{width: number, height: number}, style?:CSSStyleDeclaration|Object, elt:AElement|any}} ctx
 * @param {boolean=} debug
 * @returns {*|null}
 */
function computeMeasureExpression(exp, ctx, debug) {
  try {
    var p = cssExpressionParser.parse(exp, 'exp');
    if (p.ast) {
      return accept(p.ast, ctx);
    }
    return null;
  } catch (error) {
    return null;
  }
}
function getQuerySelectorSpecificity(selector) {
  var inline = 0;
  var idCount = 0;
  var classCount = 0;
  var tagCount = 0;

  // Remove pseudo-elements
  selector = selector.replace(/::\w+/g, '');

  // Check for inline styles (not directly calculable from selector string)
  if (selector.includes('style="')) {
    inline = 1;
  }

  // Count ID selectors
  idCount = (selector.match(/#[\w-]+/g) || []).length;

  // Count class selectors, attributes selectors, and pseudo-classes
  classCount = (selector.match(/\.[\w-]+/g) || []).length + (selector.match(/\[[^\]]+\]/g) || []).length + (selector.match(/:(?!:)[\w-]+/g) || []).length;

  // Count element selectors and pseudo-elements
  tagCount = (selector.match(/^[\w-]+|\s[\w-]+/g) || []).length;
  return [inline, idCount, classCount, tagCount];
}
function compareQuerySelectorSpecificity(selector1, selector2) {
  var specificity1 = getQuerySelectorSpecificity(selector1);
  var specificity2 = getQuerySelectorSpecificity(selector2);
  return (0, _Array.arrayLexicographicalCompare)(selector1, specificity2);
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
Object.defineProperty(exports, "computeMeasureExpression", ({
  enumerable: true,
  get: function get() {
    return _CSSParser.computeMeasureExpression;
  }
}));
exports.parseClassAttr = parseClassAttr;
exports.parseMeasureValue = parseMeasureValue;
exports.parseStyleAttr = parseStyleAttr;
var _CSSParser = __webpack_require__(88975);
/**
 * 
 * @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+/);
}

/**
 *
 * @param mValue
 * @returns {{unit: null, value: string}|{unit: string, value: number}|null}
 */
function parseMeasureValue(mValue) {
  if (mValue === 'auto') return {
    unit: null,
    value: 'auto'
  };
  if (mValue === 'match_parent') return {
    unit: null,
    value: 'match_parent'
  };
  var value = NaN;
  var unit = null;
  var matched;
  if (typeof mValue === "number") {
    value = mValue;
    unit = 'px';
  } else if (typeof mValue === "string") {
    matched = mValue.match(/([+-]?([0-9]*[.])?[0-9]+([eE][+-]?[0-9]+)?)(px|%|vw|vh|em|rem|pt)?/i);
    if (matched) {
      value = parseFloat(matched[1]);
      unit = matched[4];
    }
  }
  if (isNaN(value)) return null;
  unit = unit || 'px';
  return {
    value: value,
    unit: unit
  };
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Vec = _interopRequireDefault(__webpack_require__(73316));
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.copy = function () {
  return new Rectangle(this.x, this.y, this.width, this.height);
};

/**
 * @returns {Rectangle}
 */
Rectangle.prototype.clone = function () {
  return this.copy();
};

/***
 *
 * @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;

/***/ }),

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

"use strict";


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 {Vec2} b
 */
Vec2.prototype.equals = function (b) {
  return b && this.x === b.x && this.y === b.y;
};

/***
 *
 * @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);
};
Vec2.ZERO = new Vec2(0, 0);
Vec2.OX = new Vec2(1, 0);
Vec2.OY = new Vec2(0, 1);
var _default = Vec2;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.distance = distance;
exports.harmonicMean = harmonicMean;
exports.integerZeroPadding = integerZeroPadding;
exports.isNumber = isNumber;
exports.map = map;
exports.numberAutoFixed = numberAutoFixed;
exports.numberToString = numberToString;
exports.radianInRange = radianInRange;
exports.sumArr = sumArr;
/**
 *
 * @param {number} x
 * @param {number} l
 * @param {number} h
 * @param {number} L
 * @param {number} H
 * @returns {number}
 */
function map(x, l, h, L, H) {
  return (x - l) / (h - l) * (H - L) + L;
}
function sumArr(arr) {
  var res = 0;
  for (var i = 0; i < arr.length; ++i) {
    res += arr[i];
  }
  return res;
}
function radianInRange(x, start, end) {
  if (start > end) return radianInRange(x, end, start);
  if (x < start) x += Math.PI * 2 * Math.ceil((start - x) / 2 / Math.PI);
  if (x > end) x -= Math.PI * 2 * Math.ceil((x - end) / 2 / Math.PI);
  return x >= start && x <= end;
}
function distance(x0, y0, x1, y1) {
  var dx = x0 - x1;
  var dy = y0 - y1;
  return Math.sqrt(dx * dx + dy * dy);
}

/**
 *
 * @param {Number} numb
 * @param {Number} floatFixed
 * @param {"."|","} decimalSeparator
 * @param {","|"."} thousandsSeparator
 * @param {Number} decimalPadding
 */
function numberToString(numb, floatFixed, decimalSeparator, thousandsSeparator, decimalPadding) {
  if (floatFixed === undefined || floatFixed === null || typeof floatFixed != "number" || isNaN(floatFixed) || floatFixed < -1) floatFixed = -1;
  if (decimalSeparator === undefined || decimalSeparator === null || decimalSeparator != '.' && decimalSeparator != ',') decimalSeparator = '.';
  if (thousandsSeparator === undefined || thousandsSeparator === null || floatFixed >= 0 && thousandsSeparator == decimalSeparator) thousandsSeparator = undefined;
  if (thousandsSeparator != ',' && thousandsSeparator != '.') thousandsSeparator = undefined;
  if (decimalPadding === undefined || decimalPadding === null || typeof decimalPadding != "number" || isNaN(decimalPadding) || decimalPadding < 0) decimalPadding = 0;
  var text = numb.toString();
  var matched = text.match(/[+-]?([0-9]*)(\.([0-9]*))?(e([+-]?[0-9]+))?/);
  var dec = matched[1] || '';
  var real = matched[3] || '';
  var floatPoint = parseInt(matched[5] || '0');
  var decDigits = dec.split('').map(function (d) {
    return parseInt(d);
  });
  var realDigits = real.split('').map(function (d) {
    return parseInt(d);
  });
  while (floatPoint < 0) {
    if (decDigits.length > 0) {
      realDigits.unshift(decDigits.pop());
    } else {
      realDigits.unshift(0);
    }
    floatPoint++;
  }
  while (floatPoint > 0) {
    if (realDigits.length > 0) {
      decDigits.push(realDigits.unshift());
    } else {
      decDigits.push(0);
    }
    floatPoint++;
  }
  var mem = 0,
    i,
    cValue;
  if (floatFixed > realDigits.length) {
    while (realDigits.length < floatFixed) {
      realDigits.push(0);
    }
  } else if (floatFixed < realDigits.length && floatFixed >= 0) {
    i = floatFixed;
    mem = realDigits[i] >= 5 ? 1 : 0;
    realDigits.splice(floatFixed);
    --i;
    while (mem > 0) {
      if (i >= 0) {
        cValue = realDigits[i] + mem;
        realDigits[i] = cValue % 10;
        mem = Math.floor(cValue / 10);
      } else {
        if (decDigits.length + i < 0) decDigits.unshift(0);
        cValue = decDigits[decDigits.length + i] + mem;
        decDigits[decDigits.length + i] = cValue % 10;
        mem = Math.floor(cValue / 10);
      }
      --i;
    }
  }
  while (decDigits.length < decimalPadding) {
    decDigits.unshift(0);
  }
  var decText = numb < 0 ? '-' : '';
  var breadMod = (decDigits.length + 2) % 3;
  if (thousandsSeparator) {
    for (i = 0; i < decDigits.length; ++i) {
      decText += decDigits[i];
      if (i % 3 == breadMod && i + 1 < decDigits.length) {
        decText += thousandsSeparator;
      }
    }
  } else {
    decText += decDigits.join('');
  }
  var realText = realDigits.length == 0 ? '' : decimalSeparator + realDigits.join('');
  return decText + realText;
}

/***
 *
 * @param value
 * @param {string=}decimalSeparator
 */
function isNumber(value, decimalSeparator) {
  decimalSeparator = decimalSeparator || '.';
  if (typeof value === "number") return true;
  if (typeof value !== "string") return false;
  var thousandsSeparator = decimalSeparator === '.' ? ',' : '.';
  value = value.split(thousandsSeparator).join('');
  value = value.replace(decimalSeparator, '.');
  return !!value.match(/^[+-]?\d+(\.\d+)?$/);
}
function numberAutoFixed(x, eDelta) {
  eDelta = eDelta || 10;
  eDelta = Math.round(eDelta);
  var e = parseFloat('1e+' + eDelta);
  return Math.round(x * e) / e;
}

/***
 *
 * @param {number} number
 * @param {number} length
 * @returns {string}
 */
function integerZeroPadding(number, length) {
  var res = number + '';
  while (res.length < length) {
    res = '0' + res;
  }
  return res;
}
function harmonicMean(a, b) {
  return 2 / (1 / a + 1 / b);
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.randomArbitrary = randomArbitrary;
exports.randomInt = randomInt;
exports.randomPick = randomPick;
/**
 * Returns a random number between min (inclusive) and max (exclusive)
 */
function randomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

/**
 * Returns a random integer between min (inclusive) and max (inclusive)
 * Using Math.round() will give you a non-uniform distribution!
 */
function randomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}
function randomPick(arr) {
  var id = randomInt(0, arr.length - 1);
  return arr[id];
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.fileExist = fileExist;
exports.saveAs = saveAs;
exports.saveTextAs = saveTextAs;
var _BrowserDetector = _interopRequireDefault(__webpack_require__(69638));
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 {{revokeTimeout?: number, autoBom?:boolean }} FileSaverOpts
 *
 */
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();
  return new Promise(function (resolve) {
    xhr.onload = function () {
      resolve(xhr.status >= 200 && xhr.status < 299);
    };
    xhr.onerror = function () {
      resolve(xhr.status >= 200 && xhr.status < 299);
    };
    xhr.open('HEAD', url, true);
    xhr.send();
  });
}
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) {
      corsEnabled(a.href).then(function (result) {
        if (result) {
          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') {
    corsEnabled(blob).then(function (result) {
      if (result) {
        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 ('wkSaveAs' in navigator) {
    navigator.wkSaveAs(blob, name, opts);
  } 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);
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _EventEmitter = _interopRequireDefault(__webpack_require__(46833));
var _stringGenerate = __webpack_require__(10713);
var _safeThrow = _interopRequireDefault(__webpack_require__(628));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var TYPE_WORKER = 'WORKER';
var TYPE_IFRAME = 'IFRAME';
var TYPE_IFRAME_MASTER = 'IFRAME_MASTER';
var TYPE_WORKER_MASTER = 'WORKER_MASTER';

/**
 *
 * @param {Worker|HTMLIFrameElement|WorkerGlobalScope|Window=} host
 */
function IFrameBridge(host) {
  var _this = this;
  _EventEmitter["default"].call(this);
  /***
   *
   * @type {Worker|HTMLIFrameElement|WorkerGlobalScope|Window|WorkerGlobalScope|Window}
   */
  this.host = host || self;
  this.sender = null;
  this.receiver = null;
  this.origin = null;
  this.type = 'NOT_DETECT';
  this.id = "UNSET";
  this.sync = this._detectHost().then(function () {
    return _this._attach();
  });
  this.__azarResolveCallbacks = {};
  this.__azarRejectCallbacks = {};
}
IFrameBridge.TYPE_WORKER = TYPE_WORKER;
IFrameBridge.TYPE_IFRAME = TYPE_IFRAME;
IFrameBridge.TYPE_IFRAME_MASTER = TYPE_IFRAME_MASTER;
IFrameBridge.TYPE_WORKER_MASTER = TYPE_WORKER_MASTER;
IFrameBridge.prototype._detectHost = function () {
  var _this2 = this;
  return new Promise(function (rs) {
    var iframeLoaded = function iframeLoaded() {
      if (_this2.host.removeEventListener) {
        _this2.host.removeEventListener("load", iframeLoaded);
      } else {
        _this2.host.detachEvent("onload", iframeLoaded);
      }
      _this2.sender = _this2.host.contentWindow;
      rs();
    };
    if (_this2.host instanceof Worker) {
      _this2.type = TYPE_WORKER_MASTER;
      _this2.sender = _this2.host;
      _this2.receiver = _this2.host;
    } else if (_this2.host.tagName === 'IFRAME') {
      _this2.type = TYPE_IFRAME_MASTER;
      _this2.receiver = self;
      _this2.id = _this2.host.src;
      _this2.origin = '*';
      if (_this2.host.addEventListener) {
        _this2.host.addEventListener("load", iframeLoaded);
      } else {
        _this2.host.attachEvent("onload", iframeLoaded);
      }
    } else if (IFrameBridge.isInIFrame()) {
      _this2.type = TYPE_IFRAME;
      _this2.sender = window.parent;
      _this2.receiver = _this2.host;
      _this2.id = location.href;
      _this2.origin = '*';
    } else if (IFrameBridge.isInWorker()) {
      _this2.type = TYPE_WORKER;
      _this2.sender = _this2.host;
      _this2.receiver = _this2.host;
    }
    if (_this2.sender) rs();
  });
};
IFrameBridge.prototype._attach = function () {
  if (this.receiver.addEventListener) {
    this.receiver.addEventListener("message", this.__azarMessageListener.bind(this), false);
  } else if (this.receiver.attachEvent) {
    this.receiver.attachEvent("onmessage", this.__azarMessageListener.bind(this));
  } else {
    this.receiver.onmessage = this.__azarMessageListener.bind(this);
  }
};
IFrameBridge.fromIFrame = function (iframe) {
  return new IFrameBridge(iframe);
  var host = iframe.contentWindow || iframe.contentDocument;
  var src = iframe.src;
  var rootOrigin = location.origin;
  var iframeOrigin = src.match(/^(http|https):\/\/[^/]+/);
  if (iframeOrigin) {
    iframeOrigin = iframeOrigin[0];
  } else {
    iframeOrigin = rootOrigin;
  }
  if (host) return new IFrameBridge(host, iframeOrigin);else {
    var result = new IFrameBridge(undefined, iframeOrigin);
    var attachedHost = function attachedHost() {
      var host = iframe.contentWindow || iframe.contentDocument;
      result.attach(host);
    };
    if (iframe.addEventListener) {
      iframe.addEventListener("load", attachedHost);
    } else {
      iframe.attachEvent("onload", attachedHost);
    }
    return result;
  }
};
IFrameBridge.getInstance = function () {
  if (!IFrameBridge.shareInstance) {
    var origin = location.origin;
    var rootOrigin = IFrameBridge.fromIFrame() ? IFrameBridge.getParentUrl().match(/^(http|https):\/\/[^/]+/) : null;
    if (rootOrigin) {
      rootOrigin = rootOrigin[0];
    } else {
      rootOrigin = origin;
    }

    // IFrameBridge.shareInstance = new IFrameBridge(self, rootOrigin == origin? undefined: "*" || rootOrigin );
    var host = self;
    IFrameBridge.shareInstance = new IFrameBridge(host, rootOrigin);
  }
  return IFrameBridge.shareInstance;
};
Object.defineProperties(IFrameBridge.prototype, Object.getOwnPropertyDescriptors(_EventEmitter["default"].prototype));
IFrameBridge.prototype.constructor = IFrameBridge;
IFrameBridge.isInIFrame = function () {
  return !IFrameBridge.isInWorker() && top !== self;
};
IFrameBridge.isInWorker = function () {
  return typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;
};
IFrameBridge.getParentUrl = function () {
  var parentUrl = window.location != window.parent.location ? document.referrer : document.location.href;
  return parentUrl;
};
IFrameBridge.prototype.__azarMessageListener = function (event) {
  this.__azarHandleData(event.data);
};
IFrameBridge.prototype.__azarHandleData = function (data) {
  if (data.bridgeId !== this.id) return;
  if (data.type) {
    if (data.type == "INVOKE") {
      try {
        var result = this.__azarSelfInvoke(data.name, data.params);
        if (result && typeof result.then == 'function') {
          result.then(function (result) {
            this.__azarResolve(data.taskId, result);
          }.bind(this))["catch"](function (err) {
            (0, _safeThrow["default"])(err);
            this.__azarResolve(data.taskId, null, err);
          }.bind(this));
        } else {
          this.__azarResolve(data.taskId, result);
        }
      } catch (err) {
        (0, _safeThrow["default"])(err);
        this.__azarResolve(data.taskId, null, err);
      }
    } else if (data.type == "INVOKE_RESULT") {
      if (this.__azarResolveCallbacks[data.taskId]) {
        if (data.error) {
          this.__azarRejectCallbacks[data.taskId](data.error);
        } else {
          this.__azarResolveCallbacks[data.taskId](data.result);
        }
        delete this.__azarResolveCallbacks[data.taskId];
        delete this.__azarRejectCallbacks[data.taskId];
      }
    } else if (data.type == "EMIT") {
      this.fire.apply(this, data.params);
    } else this.fire('message', data, this);
  }
};
IFrameBridge.prototype.__azarResolve = function (taskId, result, error) {
  var data = {
    type: "INVOKE_RESULT",
    taskId: taskId,
    result: result,
    error: error,
    bridgeId: this.id
  };
  if (this.origin) {
    this.sender.postMessage(data, this.origin);
  } else {
    this.sender.postMessage(data);
  }
};
IFrameBridge.prototype.__azarSelfInvoke = function (name, params) {
  if (typeof this[name] == 'function') {
    return this[name].apply(this, params);
  } else {
    return this[name];
  }
};
IFrameBridge.prototype.emit = function () {
  var params = [];
  params.push.apply(params, arguments);
  this.sync.then(function () {
    var data = {
      type: "EMIT",
      params: params,
      bridgeId: this.id
    };
    if (this.origin) {
      this.sender.postMessage(data, this.origin);
    } else {
      this.sender.postMessage(data);
    }
  }.bind(this));
  return this;
};
IFrameBridge.prototype.invoke = function (name) {
  var params = [];
  params.push.apply(params, arguments);
  params.shift();
  return this.sync.then(function () {
    var indent = (0, _stringGenerate.randomIdent)(32);
    var data = {
      type: 'INVOKE',
      params: params,
      taskId: indent,
      name: name,
      bridgeId: this.id
    };
    if (this.origin) {
      this.host.postMessage(data, this.origin);
    } else {
      this.host.postMessage(data);
    }
    return new Promise(function (resolve, reject) {
      this.__azarResolveCallbacks[indent] = resolve;
      this.__azarRejectCallbacks[indent] = reject;
    }.bind(this));
  }.bind(this));
};
IFrameBridge.prototype.importScriptURLs = function () {
  return this.invoke.apply(this, ['_receiveScriptURLs'].concat(Array.prototype.slice.call(arguments)));
};
IFrameBridge.prototype.importScript = function (code) {
  var blob = new Blob([code], {
    type: 'application/javascript'
  });
  var url = URL.createObjectURL(blob);
  return this.importScriptURLs(url);
};
IFrameBridge.prototype.createMethod = function (name, fx) {
  this[name] = function () {
    return this.invoke.apply(this, [name].concat(Array.prototype.slice.call(arguments)));
  };
  return this.invoke.apply(this, ['_receiveMethod', name, fx.toString()]);
};
IFrameBridge.prototype._receiveScriptURLs = function () {
  if (self.importScripts) {
    self.importScripts.apply(self, arguments);
  }
};
IFrameBridge.prototype._receiveMethod = function (name, code) {
  this[name] = new Function('return ' + code)();
};
var _default = IFrameBridge;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _IFrameBridge = _interopRequireDefault(__webpack_require__(52281));
var _OOP = _interopRequireDefault(__webpack_require__(38608));
var _RemoteThread = _interopRequireDefault(__webpack_require__(87333));
var _noop = _interopRequireDefault(__webpack_require__(5025));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 *
 * @param {{methods?:Object, extendCode: string}} opt
 * @constructor
 */
function Thread(opt) {
  this.worker = new Worker(this._makeCodeUrl(opt));
  _IFrameBridge["default"].call(this, this.worker);
  this._attachClientMethods(opt.methods);
}
Thread.prototype._makeCodeUrl = function (opt) {
  var code = [this._makeLibCode(opt.libs), _RemoteThread["default"], this._makeMethodCode(opt.methods), this._makePropCode(opt.props), opt.extendCode || ''].join('\n\n');
  var blob = new Blob([code], {
    type: 'application/javascript'
  });
  var url = URL.createObjectURL(blob);
  return url;
};
Thread.prototype._makePropCode = function (props) {
  if (!props) return '';
  return 'Object.assign(self, ' + JSON.stringify(props) + ');';
};
Thread.prototype._makeLibCode = function (libs) {
  if (!libs) return '';
  return libs.map(function (lib) {
    return 'self.importScripts(' + JSON.stringify(lib) + ');';
  }).join('\n');
};
Thread.prototype._makeMethodCode = function (methods) {
  if (!methods) return '';
  return Object.keys(methods).map(function (key) {
    var fx = methods[key];
    if (typeof fx === "function") {
      fx = fx.toString();
      return 'self[' + JSON.stringify(key) + '] = ' + fx;
    }
  }).join('\n\n');
};
Thread.prototype._attachClientMethods = function (methods) {
  if (!methods) return '';
  Object.keys(methods).reduce(function (ac, name) {
    ac[name] = function () {
      return this.invoke.apply(this, [name].concat(Array.prototype.slice.call(arguments)));
    };
    return ac;
  }, this);
};
Thread.prototype.destroy = function () {
  if (this.worker) {
    this.worker.terminate();
    delete this.worker;
  }
};
Thread.prototype.revokeResource = function () {
  this.destroy();
  this.revokeResource = _noop["default"];
};
_OOP["default"].mixClass(Thread, _IFrameBridge["default"]);
var _default = Thread;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var XHR = {};
XHR.makeHttpObject = function () {
  try {
    return new XMLHttpRequest();
  } catch (error) {}
  try {
    return new ActiveXObject("Msxml2.XMLHTTP");
  } catch (error) {}
  try {
    return new ActiveXObject("Microsoft.XMLHTTP");
  } catch (error) {}
  throw new Error("Could not create HTTP request object.");
};

/***
 * 
 * @param {String} url
 * @param {String} body
 * @param {String} responseType
 * @param {Function} success
 * @param {Function} failure
 * @returns {Promise}
 */
XHR.getRequest = function (url, props, success, failure) {
  return new Promise(function (rs, rj) {
    var request = XHR.makeHttpObject();
    request.open("GET", url, true);
    if (typeof props == 'string') request.responseType = props || '';else if (props && _typeof(props) == 'object') {
      Object.assign(request, props);
    }
    request.send(null);
    request.onreadystatechange = function () {
      if (request.readyState == 4) {
        if (request.status == 200) {
          var response = request.response;
          success && success(response);
          rs(response);
        } else {
          failure && failure(request.status, request.statusText);
          rj({
            status: request.status
          });
        }
      }
    };
    request.onerror = function () {
      failure && failure(request.status, request.statusText);
      rj(new Error(request.status + request.statusText));
    };
  });
};
XHR.postRepquest = function (url, payload, props, headers, success, failure) {
  return new Promise(function (rs, rj) {
    var method = "POST";
    var shouldBeAsync = true;
    var request = XHR.makeHttpObject();
    request.onreadystatechange = function () {
      if (request.readyState == 4) {
        if (request.status == 200) {
          success && success(request.response);
          rs(request.response);
        } else if (failure) {
          failure && failure(request.status, request.statusText);
          rj({
            status: request.status,
            statusText: request.statusText
          });
        }
      }
    };
    request.onerror = function () {
      failure && failure(request.status, request.statusText);
      rj(new Error(request.status + request.statusText));
    };
    request.open(method, url, shouldBeAsync);
    if (typeof props == 'string') request.responseType = props || '';else if (props && _typeof(props) == 'object') {
      Object.assign(request, props);
    }
    headers = headers || {};
    headers["Content-Type"] = headers["Content-Type"] || "application/json;charset=UTF-8";
    Object.keys(headers).forEach(function (key) {
      request.setRequestHeader(key, headers[key]);
    });
    request.send(payload);
  });
};
XHR.request = function (method, url, props, headers, body, successCallback, failureCallback) {
  return new Promise(function (rs, rj) {
    var shouldBeAsync = true;
    var request = new XMLHttpRequest();
    request.onreadystatechange = function () {
      if (request.readyState == 4) {
        if (request.status == 200) {
          successCallback && successCallback(request.response);
          rs(request.response);
        } else {
          failureCallback && failureCallback(request.status, request.statusText);
          rj({
            status: request.status,
            statusText: request.statusText
          });
        }
      }
    };
    request.onerror = function () {
      var error = new Error("Network Error!");
      if (failureCallback) failureCallback(error);
      rj(error);
    };
    request.open(method, url, shouldBeAsync);
    if (typeof props == 'string') request.responseType = props || '';else if (props && _typeof(props) == 'object') {
      Object.assign(request, props);
    }
    headers = headers || {};
    headers["Content-Type"] = headers["Content-Type"] || "application/json;charset=UTF-8";
    Object.keys(headers).forEach(function (key) {
      request.setRequestHeader(key, headers[key]);
    });
    request.send(body);
  });
};
var _default = XHR;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
exports.isImageURLAllowCrossOrigin = isImageURLAllowCrossOrigin;
exports.loadScript = loadScript;
exports.loadToBlobURL = loadToBlobURL;
var XLoader = {};
function loadScript(url, onComplete, onError) {
  return new Promise(function (resolve, reject) {
    var script = document.createElement("script");
    script.type = "text/javascript";
    if (script.readyState) {
      //IE
      script.onreadystatechange = function () {
        if (script.readyState === "loaded" || script.readyState === "complete") {
          script.onreadystatechange = null;
          onComplete && onComplete();
          resolve();
        }
      };
    } else {
      //Others
      script.onload = function () {
        script.onload = null;
        script.onerror = null;
        onComplete && onComplete();
        resolve();
      };
      script.onerror = function () {
        script.onerror = null;
        script.onload = null;
        script.remove();
        onError && onError();
        reject();
      };
    }
    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
  });
}
XLoader.loadScript = loadScript;
function isImageURLAllowCrossOrigin(url) {
  return new Promise(function (rs, rj) {
    url = url || '';
    if (url.startsWith('data:') || url.startsWith('blob:')) {
      rs(true);
      return;
    }
    var img = new Image();
    // img.crossOrigin = "anonymous";
    img.onload = function () {
      var canvas = document.createElement('canvas');
      canvas.width = 10;
      canvas.height = 10;
      var ctx = canvas.getContext("2d");
      ctx.drawImage(this, 0, 0);
      try {
        ctx.getImageData(0, 0, 10, 10);
        rs(true);
      } catch (err) {
        rs(false);
      }
    };
    img.onerror = function (event) {
      rj(event.error || event);
    };
    img.src = url;
  });
}
var blobCache = {};

/***
 *
 * @param {string} url
 * @param {boolean=}noCache
 * @return {*}
 */
function loadToBlobURL(url, noCache) {
  if (blobCache[url]) return blobCache[url];
  blobCache[url] = fetch(url).then(function (res) {
    return res.blob();
  }).then(function (blob) {
    return URL.createObjectURL(blob);
  });
  return blobCache[url];
}
var _default = XLoader;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
exports.parsedNodeToAST = parsedNodeToAST;
exports.parsedNodeToASTChain = parsedNodeToASTChain;
var _Heap = _interopRequireDefault(__webpack_require__(92568));
var _stringUtils = __webpack_require__(26243);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var TARGET = 0;
var RULE = 1;
var PASSED = 2;
var LENGTH = 3;
var TRACK = 4;

/***
 * @param {string} target
 * @param {Rule|null} rule
 * @param {number} passed
 * @param {number} length
 * @param {[]} track
 *
 * @returns {*[]}
 */
function mkItem(target, rule, passed, length, track) {
  return [target, rule, passed, length, track];
}
function indexingItem(item) {
  return item[TARGET] + '*' + item[PASSED] + '*' + item[LENGTH];
}
function arrayKey(item) {
  return item[TARGET] + '*' + item[PASSED];
}

/****
 *
 * @param {DPParser} parser
 * @param {string || []} source
 * @param {string} target
 * @constructor
 */
function DPParseInstance(parser, source, target) {
  this.target = target;
  this.parser = parser;
  this.targets = parser.targets;
  this.rules = parser.rules;
  this.tokenTypes = parser.tokenizer.types;
  this.error = null;
  this.source = source;
  var start = Date.now();
  if (typeof source === "string") {
    this.tokens = parser.tokenizer.tokenize(source).filter(function (tk) {
      return tk.type !== 'skip';
    });
  } else if (source instanceof Array) {
    this.tokens = source;
  } else {
    throw new Error("Invalid source, source must be string or array of token");
  }
  this.tokenIdx = 0;
  this.priQueue = new _Heap["default"](this._cmpFunction);
  this.maxSize = 0;
  this.expectedArr = [];
  this.parsedNode = null;
  this.ast = null;
  start = Date.now();
  this._dp();
  this._trackBack();
  if (this.parsedNode) {
    this._calcAST();
  } else {
    this._findError();
  }
}
DPParseInstance.prototype._dp = function () {
  while (this.tokenIdx < this.tokens.length) {
    this._nextToken();
  }
};
DPParseInstance.prototype._cmpFunction = function (a, b) {
  return b[LENGTH] - a[LENGTH];
};
DPParseInstance.prototype._nextToken = function () {
  var idx = this.tokenIdx++;
  var token = this.tokens[idx];
  this.priQueue.push(mkItem('.' + token.type, null, 1, 1, [null, token]));
  this.priQueue.push(mkItem('_' + token.content, null, 1, 1, [null, token]));
  var expected = {};
  var pushed = {};
  var itemIndex;
  var longestChecked = {};
  this.expectedArr.push(expected);
  var cur, next;
  var i, j, rule;
  var prevExpectedList, prevRule;
  var prevExpectedItem;
  //nếu cùng 1 rule, cùng điểm bắt dầu, cùng passed thì dài hơn lấy
  while (this.priQueue.size() > 0) {
    this.maxSize = Math.max(this.maxSize, this.priQueue.size());
    cur = this.priQueue.pop();
    for (i = 0; i < this.rules.length; ++i) {
      rule = this.rules[i];
      if (rule.elements[0] === cur[TARGET]) {
        if (rule.elements.length === 1) {
          next = mkItem(rule.target, rule, cur[PASSED], cur[LENGTH], [null, cur]);
          itemIndex = indexingItem(next);
          if (!pushed[itemIndex]) {
            pushed[itemIndex] = true;
            this.priQueue.push(next);
          }
          expected['^'] = expected['^'] || [];
          expected['^'].push(next);
        } else {
          next = mkItem(rule.target, rule, 1, cur[LENGTH], [null, cur]);
          expected[rule.elements[1]] = expected[rule.elements[1]] || [];
          expected[rule.elements[1]].push(next);
        }
      }
    }
    prevExpectedList = this.expectedArr[idx - cur[LENGTH]] && this.expectedArr[idx - cur[LENGTH]][cur[TARGET]];
    if (prevExpectedList) {
      for (j = 0; j < prevExpectedList.length; ++j) {
        prevExpectedItem = prevExpectedList[j];
        prevRule = prevExpectedItem[RULE];
        next = mkItem(prevRule.target, prevRule, prevExpectedItem[PASSED] + 1, prevExpectedItem[LENGTH] + cur[LENGTH], [prevExpectedItem, cur]);
        if (prevExpectedItem[PASSED] + 1 === prevRule.elements.length) {
          itemIndex = indexingItem(next);
          if (next[RULE] && next[RULE].longestOnly) {
            if (longestChecked[next[RULE].ident] && longestChecked[next[RULE].ident] >= next[LENGTH]) {
              continue;
            }
            longestChecked[next[RULE].ident] = next[LENGTH];
          }
          if (!pushed[itemIndex]) {
            pushed[itemIndex] = true;
            this.priQueue.push(next);
          }
          expected['^'] = expected['^'] || [];
          expected['^'].push(next); //[rule index, passed, length]
        } else {
          expected[prevRule.elements[prevExpectedItem[PASSED] + 1]] = expected[prevRule.elements[prevExpectedItem[PASSED] + 1]] || [];
          expected[prevRule.elements[prevExpectedItem[PASSED] + 1]].push(next);
        }
      }
    }
  }
};
DPParseInstance.prototype._trackBack = function () {
  var expectedAr = this.expectedArr;
  function visit(target, start, length) {
    var node = {
      type: target,
      start: start,
      end: start + length
    };
    var matchedItem = null;
    var expected = expectedAr[start + length - 1];
    if (!expected) return null;
    var itemList = expected['^'];
    if (!itemList) return null;
    var item;
    if (itemList) {
      for (var j = 0; j < itemList.length; ++j) {
        item = itemList[j];
        if (item[TARGET] === target) {
          if (item[LENGTH] === length) {
            matchedItem = item;
          }
        }
      }
    }
    if (!matchedItem) {
      return null;
    }
    node.rule = matchedItem[RULE];
    var childItem = [];
    var cTrack = matchedItem[TRACK];
    var right, left;
    while (cTrack) {
      left = cTrack[0];
      right = cTrack[1];
      childItem.unshift(right);
      cTrack = left && left[TRACK];
    }
    var ac = childItem.reduce(function (ac, item) {
      if (typeof item[TRACK][1].type === "string") {
        ac.child.push(item[TRACK][1]);
        ac.start += 1;
      } else {
        ac.child.push(visit(item[TARGET], ac.start, item[LENGTH]));
        ac.start += item[LENGTH];
      }
      return ac;
    }, {
      start: start,
      child: []
    });
    node.children = ac.child;
    node.end = ac.start;
    return node;
  }
  this.parsedNode = visit(this.target, 0, this.expectedArr.length);
};
DPParseInstance.prototype._findError = function () {
  function cmp(a, b) {
    return b.i - a.i;
  }
  var queue = new _Heap["default"](cmp);
  var doneArr = Array(this.expectedArr.length).fill(null).map(function () {
    return {};
  });
  this.expectedArr.forEach(function (ex, i) {
    for (var k in ex) {
      ex[k].forEach(function (it) {
        var target = it[TARGET];
        var done = doneArr[i - it[LENGTH] + 1];
        done[target] = done[target] || [];
        done[target].push(it);
      });
    }
  });
  var d = {};
  queue.push({
    t: this.target,
    i: 0
  });
  d[this.target + '/' + 0] = true;
  var cr, next;
  var nextIdent;
  var item;
  var hasNewExpected;
  while (queue.size() > 0) {
    cr = queue.pop();
    if (cr.i >= doneArr.length) {
      if (!this.error || this.error.tokenIdx < cr.i || this.error.type !== "expected") {
        this.error = {
          tokenIdx: cr.i,
          type: 'expected',
          expectedToken: []
        };
      }
      if (cr.t[0] === '_' || cr.t[0] === '.') {
        this.error.expectedToken.push(cr.t);
      }
      continue;
    }
    hasNewExpected = false;
    if (doneArr[cr.i][cr.t]) {
      doneArr[cr.i][cr.t].forEach(function (item) {
        if (item[PASSED] < item[RULE].elements.length) {
          next = {
            i: cr.i + item[LENGTH],
            t: item[RULE].elements[item[PASSED]]
          };
          nextIdent = next.t + '/' + next.i;
          hasNewExpected = true;
          if (!d[nextIdent]) {
            d[nextIdent] = true;
            queue.push(next);
          }
        }
      });
    }
    this.rules.forEach(function (rule) {
      if (rule.target === cr.t) {
        next = {
          i: cr.i,
          t: rule.elements[0]
        };
        nextIdent = next.t + '/' + next.i;
        if (!d[nextIdent]) {
          d[nextIdent] = true;
          queue.push(next);
        }
      }
    });
    if (!hasNewExpected) {
      if (!this.error || this.error.tokenIdx < cr.i) {
        this.error = {
          tokenIdx: cr.i,
          type: 'unexpected'
        };
      }
    }
  }
  if (this.error.type === 'expected') {
    this.error.message = 'Expected: ' + this.error.expectedToken.map(function (t) {
      if (t[0] === '.') return t.substring(1);
      if (t[0] === '_') return JSON.stringify(t.substring(1));
    }).join(', ');
  } else if (this.error.type === 'unexpected') {
    this.error.message = 'Unexpected token ' + (this.tokens[this.error.tokenIdx].content || JSON.stringify(this.tokens[this.error.tokenIdx]));
  }
};
DPParseInstance.prototype._calcAST = function () {
  this.ast = this.parsedNode.rule.toAST(this.parsedNode);
};
function parsedNodeToAST(parsedNode) {
  return parsedNode.rule.toAST(parsedNode);
}
function parsedNodeToASTChain(parsedNode) {
  return parsedNode.rule.toASTChain(parsedNode);
}
var _default = DPParseInstance;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _DPTokenizer = _interopRequireDefault(__webpack_require__(36782));
var _DPParseInstance = _interopRequireDefault(__webpack_require__(36093));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/***
 * @typedef Rule
 * @property {string} target
 * @property {string[]} elements
 */

/***
 *
 * @param {{rules?:Array, elementRegexes?:Array}}opt
 * @constructor
 */
function DPParser(opt) {
  opt = opt || {};
  if (opt.rules) {
    this.rules = opt.rules;
  }
  this.targets = {};
  this.tokenizer = new _DPTokenizer["default"](opt);
  this.computeTarget();
}

/****
 * @type {Rule[]}
 */
DPParser.prototype.rules = [];
DPParser.prototype.computeTarget = function () {
  this.rules.reduce(function (ac, rule) {
    var target = ac[rule.target];
    if (!target) {
      target = {
        rules: []
      };
      ac[rule.target] = target;
    }
    target.rules.push(rule);
    return ac;
  }, this.targets);
};

/***
 *
 * @param {string|[]}source
 * @param target
 * @returns {DPParseInstance}
 */
DPParser.prototype.parse = function (source, target) {
  return new _DPParseInstance["default"](this, source, target);
};
var _default = DPParser;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
function DPTokenizer(opt) {
  opt = opt || {};
  if (opt.elementRegexes) this.elementRegexes = opt.elementRegexes;
  this._combineTokenRegex();
}
DPTokenizer.prototype.elementRegexes = [['string', /("(?:[^"\\]|\\.)*?")|('(?:[^'\\]|\\.)*?')/], ['number', /(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)/], ['word', /[_a-zA-Z][_a-zA-Z0-9]*/], ['skip', /([\s\r\n]+)|(\/\/[^\n]*)|(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)/], ['dsymbol', /\+\+|--|==|!=|<=|>=|\|\||&&/], ['tsymbol', /\.\.\./], ['symbol', /[^\s_a-zA-Z0-9]/]];
DPTokenizer.prototype._combineTokenRegex = function () {
  var tokenRegexSource = this.elementRegexes.map(function (cr) {
    return '(' + cr[1].source + ')';
  }).join('|');
  this.tokenRegex = new RegExp(tokenRegexSource, 'g');
  this.groupIndexOfTypes = this.elementRegexes.slice(0, this.elementRegexes.length - 1).reduce(function (ac, cr) {
    var subGroupLength = new RegExp(cr[1].source + '|.').exec('a').length;
    ac.push(ac[ac.length - 1] + subGroupLength);
    return ac;
  }, [1]);
  this.types = this.elementRegexes.reduce(function (ac, cr) {
    ac[cr[0]] = cr;
    return ac;
  }, {});
};
DPTokenizer.prototype.tokenize = function (source) {
  var regex = new RegExp(this.tokenRegex.source, 'g');
  var elementRegexes = this.elementRegexes;
  var groupIndexOfTypes = this.groupIndexOfTypes;
  var res = [];
  var matched = regex.exec(source);
  var type, i;
  while (matched) {
    type = null;
    for (i = 0; i < groupIndexOfTypes.length; ++i) {
      if (matched[groupIndexOfTypes[i]]) {
        type = elementRegexes[i][0];
      }
    }
    res.push({
      type: type,
      content: matched[0],
      start: matched.index,
      end: matched.index + matched[0].length
    });
    matched = regex.exec(source);
  }
  return res;
};
var _default = DPTokenizer;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _XLoader = __webpack_require__(47913);
var _Color = _interopRequireDefault(__webpack_require__(64974));
var _AElement = _interopRequireDefault(__webpack_require__(63445));
var _Vec = _interopRequireDefault(__webpack_require__(73316));
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _generator = __webpack_require__(18528);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var fontIdOf = function fontIdOf(fontName) {
  if (fontName.toLowerCase().indexOf('arial') >= 0) return 'arial';
  if (fontName.toLowerCase().indexOf('times') >= 0) return 'times';
  if (fontName === "Material Design Icons") return 'MDI_6_7_96';
  return fontName;
};
var P2D = 72 / 96;
var color2RGB255 = function color2RGB255(color) {
  try {
    color = _Color["default"].parse(color + '');
    return color.rgba.slice(0, 3).map(function (x) {
      return x * 255 >> 0;
    });
  } catch (e) {
    return null;
  }
};
function PaperPrinter(opt) {
  var _this = this;
  this.opt = Object.assign((0, _generator.copyJSVariable)(this.defaultOptions), opt);
  this.objects = [];
  this.processInfo = {
    state: "STAND_BY"
  };
  this.subDocs = null;
  this.pdfDoc = null;
  this.pageFormat = null;
  this.computedPages = 0;
  this.sync = this.ready().then(function () {
    _this.processInfo.state = 'READY';
  });
}
PaperPrinter.prototype.defaultOptions = {
  size: 'a4',
  margin: {
    top: 57,
    left: 57,
    bottom: 57,
    right: 57
  },
  footer: null,
  header: null,
  paddingEven: true,
  lastPagePaddingEven: false
};
PaperPrinter.prototype.share = {
  jsPDFUrl: 'https://absol.cf/vendor/jspdf.umd.js',
  jsPDF: null,
  readySync: null,
  fonts: [{
    url: 'https://absol.cf/vendor/fonts/arial.ttf',
    fileName: 'arial.ttf',
    name: 'arial',
    style: 'normal'
  }, {
    url: 'https://absol.cf/vendor/fonts/arialbd.ttf',
    fileName: 'arialbd.ttf',
    name: 'arial',
    style: 'bold'
  }, {
    url: 'https://absol.cf/vendor/fonts/ariali.ttf',
    fileName: 'ariali.ttf',
    name: 'arial',
    style: 'italic'
  }, {
    url: 'https://absol.cf/vendor/fonts/arialbi.ttf',
    fileName: 'arialbi.ttf',
    name: 'arial',
    style: 'bold_italic'
  }, {
    url: 'https://absol.cf/vendor/fonts/times.ttf',
    fileName: 'times.ttf',
    name: 'times',
    style: 'normal'
  }, {
    url: 'https://absol.cf/vendor/fonts/timesbd.ttf',
    fileName: 'timesbd.ttf',
    name: 'times',
    style: 'bold'
  }, {
    url: 'https://absol.cf/vendor/fonts/timesi.ttf',
    fileName: 'timesi.ttf',
    name: 'times',
    style: 'italic'
  }, {
    url: 'https://absol.cf/vendor/fonts/timesbi.ttf',
    fileName: 'timesbi.ttf',
    name: 'times',
    style: 'bold_italic'
  }]
};
PaperPrinter.prototype.ready = function () {
  var _this2 = this;
  var sync;
  if (!this.share.readySync) {
    sync = this.share.fonts.map(function (font) {
      return fetch(font.url).then(function (res) {
        return res.blob();
      }).then(function (blob) {
        var reader = new window.FileReader();
        return new Promise(function (rs) {
          reader.onload = function () {
            rs(this.result);
          };
          reader.readAsDataURL(blob);
        });
      }).then(function (b64Url) {
        var idx = b64Url.indexOf('base64,');
        return b64Url.substring(idx + 'base64,'.length);
      }).then(function (b64) {
        font.content = b64;
      });
    });
    if (window.jspdf) {
      this.share.jsPDF = window.jspdf.jsPDF;
    } else {
      sync.push((0, _XLoader.loadScript)(this.share.jsPDFUrl).then(function () {
        _this2.share.jsPDF = window.jspdf.jsPDF;
      }));
    }
    this.share.readySync = Promise.all(sync);
  }
  return this.share.readySync;
};

/***
 *
 * @param at
 * @param opt
 */
PaperPrinter.prototype.addSubDocument = function (at, opt) {
  this.objects.push({
    type: 'sub_document',
    at: at,
    opt: opt
  });
};

/***
 *
 * @param {string} text
 * @param {Vec2 | Rectangle} pos
 * @param {Object=}style
 */
PaperPrinter.prototype.text = function (text, pos, style) {
  this.objects.push({
    type: 'text',
    pos: pos,
    text: text,
    style: style || {}
  });
  return this;
};

/***
 *
 * @param {string} text
 * @param {Vec2} start
 * @param {Vec2} end
 * @param {Object=}style
 */
PaperPrinter.prototype.line = function (start, end, style) {
  this.objects.push({
    type: 'line',
    start: start,
    end: end,
    style: style || {}
  });
  return this;
};

/***
 *
 * @param {Vec2} at
 * @param {boolean=} paddingEven
 */
PaperPrinter.prototype.pageBreak = function (at, paddingEven) {
  this.objects.push({
    type: 'page_break',
    at: at,
    paddingEven: !!paddingEven
  });
  return this;
};

/***
 *
 * @param {Rectangle}rect
 * @param {Object=}style
 */
PaperPrinter.prototype.rect = function (rect, style) {
  this.objects.push({
    type: 'rect',
    rect: rect,
    style: style || {}
  });
};

/***
 *
 * @param {HTMLCanvasElement|AElement |Image} image
 * @param {Rectangle}rect
 * @param {Object=}style
 */
PaperPrinter.prototype.image = function (image, rect, style) {
  this.objects.push({
    type: 'image',
    rect: rect,
    style: style || {},
    image: image
  });
  return this;
};
PaperPrinter.prototype.boundOf = function (objectData) {
  return this.measures[objectData.type](objectData);
};
PaperPrinter.prototype.computeObjects = function () {
  var _this3 = this;
  var objects = this.objects.slice();
  if (!objects[0] || objects[0].type !== 'sub_document') {
    objects.unshift({
      type: 'sub_document',
      at: _Vec["default"].ZERO
    });
  }
  this.subDocs = objects.reduce(function (ac, obj) {
    switch (obj.type) {
      case 'sub_document':
        ac.push({
          objects: [obj]
        });
        break;
      default:
        ac[ac.length - 1].objects.push(obj);
        break;
    }
    return ac;
  }, []);
  this.subDocs.forEach(function (doc, i) {
    doc.objects.forEach(function (o, i) {
      o.idx = i;
      o.bound = _this3.boundOf(o);
    });
    var newDocCmd = doc.objects.shift();
    doc.objects.sort(function (a, b) {
      return a.bound.y - b.bound.y;
    });
    doc.opt = Object.assign((0, _generator.copyJSVariable)(_this3.opt), newDocCmd.opt || {});
    doc.objects.unshift(newDocCmd);
    doc.startPage = i > 0 ? _this3.subDocs[i - 1].startPage + _this3.subDocs[i - 1].pages.length : _this3.computedPages;
    if (_this3.opt.paddingEven && doc.startPage % 2 > 0) doc.startPage++;
    var pageContentHeight = 1123 - doc.opt.margin.top - doc.opt.margin.bottom;
    doc.pages = doc.objects.reduce(function (ac, cr) {
      var page = ac[ac.length - 1];
      if (cr.bound.height > pageContentHeight) {
        page.object.push(cr);
      } else {
        if (cr.bound.y + cr.bound.height - page.y > pageContentHeight || cr.type === 'page_break') {
          page = {
            y: cr.bound.y,
            objects: [cr]
          };
          ac.push(page);
        } else {
          page.objects.push(cr);
        }
      }
      return ac;
    }, [{
      objects: [],
      y: 0
    }]);
    doc.pages.forEach(function (page) {
      return page.objects.sort(function (a, b) {
        return a.idx - b.idx;
      });
    });
    _this3.computedPages = doc.startPage + doc.pages.length;
  });
};
PaperPrinter.prototype.getDoc = function () {
  var _this4 = this;
  if (this.docSync) return this.docSync;
  this.docSync = this.sync.then(function () {
    if (_this4.pdfDoc) return _this4.pdfDoc;
    var jsPDF = jspdf.jsPDF;
    _this4.pdfDoc = new jsPDF({
      orientation: 'p',
      unit: 'px',
      format: 'a4',
      putOnlyUsedFonts: true,
      floatPrecision: 16,
      dpi: 300,
      hotfixes: ["px_scaling"]
    });
    _this4.share.fonts.forEach(function (font) {
      _this4.pdfDoc.addFileToVFS(font.fileName, font.content);
      _this4.pdfDoc.addFont(font.fileName, font.name, font.style);
    });
    return _this4.pdfDoc;
  });
  this.sync = this.docSync;
  return this.docSync;
};
PaperPrinter.prototype.flush = function () {
  var _this5 = this;
  this.sync = this.getDoc().then(function (pdfDoc) {
    _this5.computeObjects();
    var subDocs = _this5.subDocs;
    _this5.subDocs = null; //reset
    var onProcess = _this5.opt.onProcess;
    var processInfo = _this5.processInfo;
    processInfo.pdf = {
      all: subDocs.reduce(function (ac, sD) {
        return ac + sD.objects.length;
      }, 0),
      done: 0
    };
    processInfo.onProcess = function () {
      onProcess && onProcess(processInfo);
    };
    processInfo.state = 'RENDER_PDF';
    return subDocs.reduce(function (sync, doc, i) {
      return sync.then(function () {
        var startPage = doc.startPage;
        while (pdfDoc.getNumberOfPages() <= startPage) {
          pdfDoc.addPage();
        }
        return doc.pages.reduce(function (docSync, page, i) {
          return docSync.then(function () {
            if (pdfDoc.getNumberOfPages() <= startPage + i) {
              pdfDoc.addPage();
            }
            pdfDoc.setPage(startPage + i + 1);
            page.O = new _Vec["default"](_this5.opt.margin.left, _this5.opt.margin.top - page.y);
            return page.objects.reduce(function (pageSync, obj) {
              return pageSync.then(function () {
                var type = obj.type;
                var res = _this5.pdfHandlers[type](page, pdfDoc, obj);
                processInfo.pdf.done++;
                if (res && res.then) {
                  res.then(function () {
                    return processInfo.onProcess();
                  });
                }
                return res;
              });
            }, Promise.resolve()).then(function () {
              pdfDoc.setTextColor(0, 0, 0);
              pdfDoc.setFontSize(14 * P2D);
              pdfDoc.setFont('arial', 'normal');
              pdfDoc.text(i + 1 + '/' + doc.pages.length, 794 - 25, 1123 - 25, {
                align: 'right'
              });
              if (typeof doc.opt.footer === 'string') {
                pdfDoc.text(doc.opt.footer, 25, 1123 - 25, {
                  align: 'left'
                });
              }
            });
          });
        }, Promise.resolve()).then(function () {
          if (_this5.opt.lastPagePaddingEven) {
            while (pdfDoc.getNumberOfPages() % 2 > 0) {
              pdfDoc.addPage();
            }
          }
        });
      });
    }, Promise.resolve());
  });
  return this.sync;
};
PaperPrinter.prototype.exportAsPDF = function () {
  var _this6 = this;
  return this.flush().then(function () {
    return _this6.pdfDoc;
  });
};
PaperPrinter.prototype.pdfHandlers = {
  text: function text(context, doc, data) {
    var fontFamily = data.style.fontFamily;
    var lineHeight = data.style.lineHeight || 1.2;
    var color = color2RGB255(data.style.color) || [0, 0, 0];
    doc.setTextColor(color[0], color[1], color[2]);
    var fontSize = data.style.fontSize || 14;
    var textPos = data.pos.A().add(context.O);
    doc.setLineHeightFactor(lineHeight);
    doc.setFontSize(fontSize * P2D);
    doc.setFont(fontIdOf(fontFamily), data.style.fontStyle);
    var style = {
      baseline: 'top',
      maxWidth: data.pos.width
    };
    if (data.style.align) {
      //todo: check align
      style.align = {
        start: 'left',
        end: 'right',
        center: 'center'
      }[data.style.align] || 'left';
    }
    doc.text(data.text, textPos.x, textPos.y + fontSize * (lineHeight - 1) / 2, style);
  },
  rect: function rect(context, doc, data) {
    var fillColor = null;
    var strokeColor = null;
    var strokeWidth = data.style.strokeWidth || 1;
    var rounded = data.style.rounded;
    if (typeof rounded === "number") rounded = [rounded, rounded];
    if (data.style.fill) {
      fillColor = color2RGB255(data.style.fill);
    }
    if (data.style.stroke) {
      strokeColor = color2RGB255(data.style.stroke);
    }
    if (fillColor) doc.setFillColor(fillColor[0], fillColor[1], fillColor[2]);
    if (strokeColor) {
      doc.setLineWidth(strokeWidth);
      doc.setDrawColor(strokeColor[0], strokeColor[1], strokeColor[2]);
    }
    var flat = 'F';
    if (strokeColor && fillColor) flat = 'FD';else if (strokeColor) flat = 'S';else if (fillColor) flat = 'F';else return;
    var O = context.O;
    var A = data.rect.A().add(O);
    if (rounded) {
      doc.roundedRect(A.x, A.y, data.rect.width, data.rect.height, rounded[0], rounded[1], flat);
    } else {
      doc.rect(A.x, A.y, data.rect.width, data.rect.height, flat);
    }
  },
  line: function line(context, doc, data) {
    var fillColor = null;
    var strokeColor = null;
    var strokeWidth = data.style.strokeWidth || 1;
    if (data.style.stroke) {
      strokeColor = color2RGB255(data.style.stroke);
    }
    if (strokeColor) {
      doc.setLineWidth(strokeWidth);
      doc.setDrawColor(strokeColor[0], strokeColor[1], strokeColor[2]);
    }
    var flat = 'S';
    var O = context.O;
    var A = data.start.add(O);
    var B = data.end.add(O);
    doc.line(A.x, A.y, B.x, B.y, flat);
  },
  image: function image(context, doc, data) {
    var handleImage = function handleImage(image) {
      if (!image) return;
      var rect = data.rect.clone();
      rect.x += context.O.x;
      rect.y += context.O.y;
      doc.addImage(image, 'PNG', rect.x, rect.y, rect.width, rect.height);
    };
    if (data.image.then) {
      return data.image.then(handleImage)["catch"](function (err) {});
    } else return handleImage(data.image);
  },
  page_break: function page_break(context, doc, data) {},
  sub_document: function sub_document(context, doc, data) {}
};
PaperPrinter.prototype.measures = {
  sub_document: function sub_document(data) {
    return new _Rectangle["default"](0, 0, 0, 0);
  },
  rect: function rect(data) {
    return data.rect;
  },
  text: function text(data) {
    return data.pos;
  },
  image: function image(data) {
    return data.rect;
  },
  line: function line(data) {
    return _Rectangle["default"].boundingPoints([data.start, data.end]);
  },
  page_break: function page_break(data) {
    return new _Rectangle["default"](0, data.at.y, 0, 0);
  }
};
var _default = PaperPrinter;
exports["default"] = _default;

/***/ }),

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

"use strict";


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.computePrintAttr = computePrintAttr;
exports["default"] = void 0;
exports.getComputedStyleCache = getComputedStyleCache;
exports.getComputedStyleValueCache = getComputedStyleValueCache;
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _Svg = _interopRequireWildcard(__webpack_require__(98315));
var _Dom = _interopRequireWildcard(__webpack_require__(64821));
var _attribute = __webpack_require__(18144);
var _XLoader = __webpack_require__(47913);
var _noop = _interopRequireDefault(__webpack_require__(5025));
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 }; }
var _ = _Dom["default"].ShareInstance._;
var $ = _Dom["default"].ShareInstance.$;
var $$ = _Dom["default"].ShareInstance.$$;

/***
 *
 * @param {AElement|HTMLElement} elt
 * @param {string=} ps
 * @return {*}
 */
function getComputedStyleCache(elt, ps) {
  ps = ps || '';
  var key = '__computedStyleCache__' + ps;
  if (elt[key]) return elt[key];
  elt[key] = ps ? getComputedStyle(elt, ps) : getComputedStyle(elt);
  return elt[key];
}

/***
 *
 * @param {AElement|HTMLElement} elt
 * @param {string} pName
 * @return {string}
 */
function getComputedStyleValueCache(elt, pName) {
  return getComputedStyleCache(elt).getPropertyValue(pName);
}
function computePrintAttr(elt) {
  var style = getComputedStyleCache(elt);
  var fontSize = elt.getFontSize();
  var lineHeight = style.getPropertyValue('line-height');
  if (lineHeight === 'normal') lineHeight = 1.2;else lineHeight = parseFloat(lineHeight.replace('px', '')) / fontSize;
  if (!isNaN(lineHeight)) lineHeight = 1.2;
  var fontWeight = style.getPropertyValue('font-weight');
  var fontStyle = fontWeight === '400' ? 'normal' : 'bold';
  var dirs = ['top', 'right', 'bottom', 'left'];
  var paddingStyle = dirs.map(function (dir) {
    return (0, _attribute.parseMeasureValue)(style.getPropertyValue('padding-' + dir));
  });
  var borderWidthStyle = dirs.map(function (dir) {
    return (0, _attribute.parseMeasureValue)(style.getPropertyValue('border-' + dir + '-width'));
  });
  var contentBound = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
  contentBound.x += paddingStyle[3].value + borderWidthStyle[3].value;
  contentBound.y += paddingStyle[0].value + borderWidthStyle[0].value;
  contentBound.width += paddingStyle[1].value + borderWidthStyle[1].value + paddingStyle[3].value + borderWidthStyle[3].value;
  contentBound.height += paddingStyle[2].value + borderWidthStyle[2].value + paddingStyle[0].value + borderWidthStyle[0].value;
  return {
    contentBound: contentBound,
    whiteSpace: style.getPropertyValue('white-space'),
    style: {
      color: style.getPropertyValue('color'),
      fontFamily: style.getPropertyValue('font-family'),
      fontStyle: fontStyle,
      lineHeight: lineHeight,
      fontSize: fontSize,
      align: style.getPropertyValue('text-align')
    }
  };
}

/***
 *
 * @type {PSHandler[]}
 */
var PrintSerialHandlers = [];
PrintSerialHandlers.push({
  id: 'TextNode',
  match: function match(elt) {
    return elt.nodeType === Node.TEXT_NODE;
  },
  exec: function exec(printer, text, scope, stack, accept) {
    var O = printer.O;
    var elt = text.parentElement;
    var bound = _Rectangle["default"].fromClientRect((0, _Dom.getTextNodeBound)(text));
    if (bound.width === 0) return;
    var printAttr = computePrintAttr(elt);
    var txt = text.data;
    var y = -Infinity;
    var c;
    var range;
    var parts = [];
    var cPart;
    var j;
    var delta = printAttr.style.lineHeight * printAttr.style.fontSize / 3;
    var rect;
    var i = 0;
    while (i < txt.length) {
      c = txt[i];
      if (!c.match(/[\s\n]/)) {
        j = i + 1;
        while (j < txt.length) {
          c = txt[j];
          if (c.match(/[\s\n]/)) {
            break;
          } else {
            ++j;
          }
        }
        range = document.createRange();
        range.setStart(text, i);
        range.setEnd(text, j);
        rect = _Rectangle["default"].fromClientRect(range.getBoundingClientRect());
        if (Math.abs(rect.y - y) < delta) {
          cPart.end = j;
          cPart.rect = cPart.rect.merge(rect);
        } else {
          cPart = {
            start: i,
            end: j,
            rect: rect
          };
          y = rect.y;
          parts.push(cPart);
        }
        i = j;
      } else {
        ++i;
      }
    }
    parts.forEach(function (part) {
      rect = part.rect;
      rect.x -= O.x;
      rect.y -= O.y;
      rect.width += printAttr.style.fontSize * 1000;
      var lineTxt = txt.substring(part.start, part.end);
      if (printAttr.whiteSpace === 'normal') {
        lineTxt = lineTxt.replace(/[\s\n]+/g, ' ');
      }
      delete printAttr.style.align; //text-node bound
      printer.text(lineTxt, rect, printAttr.style);
    });
  }
});
PrintSerialHandlers.push({
  id: 'Border',
  match: function match(elt, scope, stack) {
    if (scope.isDeclared('borderStyle')) return false;
    var style = getComputedStyleCache(elt);
    var borderColor = style.getPropertyValue('border-color');
    var borderStyle = style.getPropertyValue('border-style');
    var borderWidth = style.getPropertyValue('border-width');
    var borderRadius = style.getPropertyValue('border-radius');
    if (borderStyle === 'none' || borderWidth === '0px') return false;
    scope.declare('borderStyle', {
      width: parseFloat(borderWidth.replace('px', '')),
      radius: (0, _attribute.parseMeasureValue)(borderRadius),
      color: borderColor
    });
    return true;
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    var borderStyle = scope.get('borderStyle');
    var bound = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    var rect = bound.clone();
    var strokeWidth = borderStyle.width;
    if (elt.tagName === 'TD' || elt.tagName === 'TH') {
      rect.x -= printer.O.x;
      rect.y -= printer.O.y;
    } else {
      rect.x -= printer.O.x - strokeWidth / 2;
      rect.y -= printer.O.y - strokeWidth / 2;
      rect.width -= strokeWidth;
      rect.height -= strokeWidth;
    }
    var radius = borderStyle.radius;
    var rounded;
    if (radius) {
      switch (radius.unit) {
        case '%':
          rounded = [radius.value * rect.width / 100, radius.value * rect.height / 100];
          break;
        case 'px':
          rounded = radius.value;
          break;
      }
    }
    printer.rect(rect, {
      stroke: borderStyle.color,
      rounded: rounded,
      strokeWidth: strokeWidth
    });
    return true;
  }
});
PrintSerialHandlers.push({
  id: 'BackgroundImage',
  match: function match(elt, scope, stack) {
    return elt.getComputedStyleValue('background-image') !== 'none';
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    var style = getComputedStyleCache(elt);
    var backgroundSize = style.getPropertyValue('background-size');
    var url = style.getPropertyValue('background-image').trim().replace('url("', '').replace('")', '');
    var rect = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    rect.x -= printer.O.x;
    rect.y -= printer.O.y;
    var borderRadius = ['top-left', 'top-right', 'bottom-right', 'bottom-left'].map(function (key) {
      return (0, _attribute.parseMeasureValue)(style.getPropertyValue('border-' + key + '-radius'));
    });
    var image = (0, _XLoader.isImageURLAllowCrossOrigin)(url).then(function (result) {
      /***
       *
       * @type {HTMLCanvasElement}
       */
      var canvas = document.createElement('canvas');
      var width = rect.width;
      var height = rect.height;
      canvas.width = width;
      canvas.height = height;
      var image = new Image();
      image.crossOrigin = 'anonymous';
      image.src = result ? url : 'https://absol.cf/crossdownload.php?file=' + encodeURIComponent(url);
      var ctx = canvas.getContext('2d');
      var isRect = borderRadius.every(function (x) {
        return x.value === 0;
      });
      var x, y, r;
      var eclipses = [];
      var points = [];
      if (!isRect) {
        r = borderRadius[0];
        x = r.unit === '%' ? r.value / 100 * width : r.value;
        y = 0;
        points.push([x, y]);
        r = borderRadius[1];
        x = r.unit === '%' ? (1 - r.value / 100) * width : width - r.value;
        points.push([x, y]);
        if (r.value > 0) {
          y = r.unit === '%' ? r.value / 100 * height : r.value;
          eclipses.push([x, y, width - x, y, 0, -Math.PI / 2, 0]);
          x = width;
          points.push([x, y]);
        } else {
          x = width;
        }
        r = borderRadius[2];
        y = r.unit === '%' ? (1 - r.value / 100) * height : height - r.value;
        points.push([x, y]);
        if (r.value > 0) {
          x = r.unit === '%' ? (1 - r.value / 100) * width : width - r.value;
          eclipses.push([x, y, width - x, height - y, 0, 0, Math.PI / 2]);
          y = height;
          points.push([x, y]);
        } else {
          y = height;
        }
        r = borderRadius[3];
        x = r.unit === '%' ? r.value / 100 * width : r.value;
        points.push([x, y]);
        if (r.value > 0) {
          y = r.unit === '%' ? (1 - r.value / 100) * height : height - r.value;
          eclipses.push([x, y, x, height - y, 0, Math.PI / 2, Math.PI]);
          x = 0;
          points.push([x, y]);
        } else {
          x = 0;
        }
        r = borderRadius[0];
        y = r.unit === '%' ? r.value / 100 * height : r.value;
        points.push([x, y]);
        if (r.value > 0) {
          x = r.unit === '%' ? r.value / 100 * width : r.value;
          eclipses.push([x, y, x, y, 0, Math.PI, Math.PI * 3 / 2]);
        }
        ctx.beginPath();
        points.forEach(function (p, i) {
          if (i === 0) ctx.moveTo(p[0], p[1]);else ctx.lineTo(p[0], p[1]);
        });
        ctx.closePath();
        ctx.fillStyle = 'red';
        ctx.fill();
        eclipses.forEach(function (e) {
          ctx.beginPath();
          ctx.ellipse(e[0], e[1], e[2], e[3], e[4], e[5], e[6]);
          ctx.fill();
        });
        ctx.globalCompositeOperation = 'source-in';
      }
      return new Promise(function (rs) {
        image.onload = function () {
          var scale;
          var nW;
          var nH; //todo: handle more
          switch (backgroundSize) {
            case 'cover':
              scale = Math.max(width / image.naturalWidth, height / image.height);
              nW = image.naturalWidth * scale;
              nH = image.naturalHeight * scale;
              ctx.drawImage(image, 0, 0, nW, nH);
              break;
            case 'auto':
            default:
              ctx.drawImage(image, 0, 0);
          }
          rs(canvas);
        };
        image.onerror = function () {
          console.error('can not load ', image.src);
          rs(null);
        };
      });
    })["catch"](function (err) {
      console.error(err);
    });
    printer.image(image, rect);
    return true;
  }
});
PrintSerialHandlers.push({
  id: 'BreakInside',
  match: function match(elt, scope, stack) {
    return getComputedStyleValueCache(elt, 'break-inside') === 'avoid';
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    var rect = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    rect.x -= printer.O.x;
    rect.y -= printer.O.y;
    printer.rect(rect, {});
    return true;
  }
});
PrintSerialHandlers.push({
  id: 'MDI_FA',
  match: function match(elt, scope, stack) {
    return elt.classList && (elt.classList.contains('mdi') || elt.classList.contains('fab') || elt.classList.contains('far') || elt.classList.contains('fas') || elt.classList.contains('material-icons'));
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    var style = elt.classList.contains('material-icons') ? getComputedStyleCache(elt) : getComputedStyleCache(elt, '::before');
    var content = elt.classList.contains('material-icons') ? elt.innerHTML : style.getPropertyValue('content');
    content = content.replace('"', '');
    var font = style.getPropertyValue('font');
    var rect = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    if (rect.width * rect.height === 0) return;
    var canvas = document.createElement('canvas');
    canvas.width = rect.width;
    canvas.height = rect.height;
    var ctx = canvas.getContext('2d');
    ctx.font = font;
    ctx.textBaseline = "top";
    rect.x -= printer.O.x;
    rect.y -= printer.O.y;
    ctx.fillStyle = style.getPropertyValue('color');
    ctx.fillText(content, 0, 0);
    printer.image(canvas, rect);
  }
});
PrintSerialHandlers.push({
  id: 'Img',
  match: function match(elt) {
    return elt.tagName && elt.tagName.toLowerCase() === 'img' && elt.src && elt.naturalWidth;
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    var bound = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    if (bound.width === 0) return;
    var rect = bound.clone();
    rect.x -= printer.O.x;
    rect.y -= printer.O.y;
    printer.image(elt, rect);
  }
});
PrintSerialHandlers.push({
  id: 'Canvas',
  match: function match(elt) {
    return elt.tagName && elt.tagName.toLowerCase() === 'canvas';
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    var bound = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    if (bound.width === 0) return;
    var rect = bound.clone();
    rect.x -= printer.O.x;
    rect.y -= printer.O.y;
    printer.image(elt, rect);
  }
});
PrintSerialHandlers.push({
  id: 'SVG',
  match: function match(elt) {
    return elt.tagName && elt.tagName.toLowerCase() === 'svg';
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    var bound = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    if (bound.width === 0) return;
    var rect = bound.clone();
    rect.x -= printer.O.x;
    rect.y -= printer.O.y;
    var res = _Svg["default"].svgToCanvas(elt.__origin__)["catch"](function (err) {
      console.error(err);
    });
    res.elt = elt;
    printer.image(res, rect);
  }
});
PrintSerialHandlers.push({
  id: 'TextInput',
  match: function match(elt, scope, stack) {
    return elt.tagName === 'INPUT' && (elt.attr('type') === 'text' || elt.attr('type') === 'number' || !elt.attr('type'));
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    var O = printer.O;
    var style = getComputedStyleCache(elt);
    var paddingLeft = (0, _attribute.parseMeasureValue)(style.getPropertyValue('padding-left'));
    var paddingTop = (0, _attribute.parseMeasureValue)(style.getPropertyValue('padding-top'));
    var paddingBottom = (0, _attribute.parseMeasureValue)(style.getPropertyValue('padding-bottom'));
    var borderLeftWidth = (0, _attribute.parseMeasureValue)(style.getPropertyValue('border-left-width'));
    var borderTopWidth = (0, _attribute.parseMeasureValue)(style.getPropertyValue('border-top-width'));
    var borderBottomWidth = (0, _attribute.parseMeasureValue)(style.getPropertyValue('border-top-width'));
    var rect = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    var fontSize = elt.getFontSize();
    var lineHeight = style.getPropertyValue('line-height');
    if (lineHeight === 'normal') lineHeight = 1.2;else lineHeight = parseFloat(lineHeight.replace('px', '')) / fontSize;
    if (!isNaN(lineHeight)) lineHeight = 1.2;
    var fontWeight = style.getPropertyValue('font-weight');
    var fontStyle = fontWeight === '400' ? 'normal' : 'bold';
    rect.width = 700;
    rect.x += borderLeftWidth.value + paddingLeft.value - O.x;
    rect.height -= borderTopWidth.value + borderBottomWidth.value + paddingTop.value + paddingBottom.value;
    rect.y += borderTopWidth.value + paddingTop.value - O.y;
    var centerY = rect.centerPoint().y;
    rect.y = centerY - fontSize * lineHeight / 2;
    rect.height = fontSize * lineHeight;
    printer.text(elt.value, rect, {
      fontFamily: style.getPropertyValue('font-family'),
      fontStyle: fontStyle,
      fontSize: fontSize,
      lineHeight: lineHeight
    });
  }
});
PrintSerialHandlers.push({
  id: 'BreakPage',
  match: function match(elt) {
    return elt.hasClass && elt.hasClass('as-page-break');
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    var rect = _Rectangle["default"].fromClientRect(elt.getBoundingClientRect());
    rect.x -= printer.O.x;
    rect.y -= printer.O.y;
    printer.pageBreak(rect.A());
  }
});
PrintSerialHandlers.push({
  id: '*',
  match: function match() {
    return true;
  },
  exec: function exec(printer, elt, scope, stack, accept) {
    if (elt.getComputedStyleValue('display') === 'none') return;
    if (elt.childNodes) {
      Array.prototype.forEach.call(elt.childNodes, function (child) {
        return accept(child);
      });
    }
  }
});
var _default = PrintSerialHandlers;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _VarScope = _interopRequireDefault(__webpack_require__(61607));
var _Dom = _interopRequireWildcard(__webpack_require__(64821));
var _Rectangle = _interopRequireDefault(__webpack_require__(62986));
var _PrintSerialHandlers = _interopRequireDefault(__webpack_require__(1162));
var _XLoader = __webpack_require__(47913);
var _noop = _interopRequireDefault(__webpack_require__(5025));
var _stringGenerate = __webpack_require__(10713);
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 }; }
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 {Object} PSHandler
 * @property {string} id
 * @property {function(elt:AElement, scope: VarScope, stack:Array<AElement>):boolean} match
 * @property {function(printer: PaperPrinter,elt:AElement|Text, scope: VarScope, stack:Array<{elt: AElement|Text, scope:VarScope}>, accept: function():void):(boolean|void)} exec - return true if run other handle
 *
 */

/***
 *
 * @constructor
 */
function PrintSerializer() {
  /***
   * @type {Array<PSHandler>}
   */
  this.handlers = this.handlers.slice();
}
PrintSerializer.prototype.handlers = _PrintSerialHandlers["default"];

/***
 *
 * @param {PaperPrinter} printer
 * @param {AElement|AElementNS|Text} elt
 * @param {VarScope} scope
 * @param {Array<{elt: AElement|Text, scope:VarScope}>} stack
 */
PrintSerializer.prototype.accept = function (printer, elt, scope, stack) {
  var _this = this;
  if (elt.nodeType === Node.ELEMENT_NODE) _Dom["default"].ShareInstance.$(elt);
  var handler;
  var matched, cont;
  for (var i = 0; (!matched || cont) && i < this.handlers.length; ++i) {
    handler = this.handlers[i];
    matched = handler.match(elt, scope, stack);
    if (matched) {
      cont = handler.exec(printer, elt, scope, stack, function (elt1) {
        _this.accept(printer, elt1, new _VarScope["default"](scope), stack.concat([{
          elt: elt,
          scope: scope
        }]));
      });
    }
  }
};

/***
 *
 * @param {Array<AElement> | AElement | Array<{elt: AElement, opt:Object}>} docList
 * @param printer
 * @param onProcess
 * @return {Promise<Awaited<unknown>[]>}
 */
PrintSerializer.prototype.serialize = function (docList, printer, _onProcess) {
  var _this2 = this;
  var $ = _Dom["default"].ShareInstance.$;
  if (!(docList instanceof Array)) docList = [docList];
  docList = docList.map(function (doc) {
    if (typeof doc === "string") {
      return {
        elt: $(doc)
      };
    } else if ((0, _Dom.isDomNode)(doc)) {
      return {
        elt: $(doc)
      };
    } else if (_typeof(doc) === "object" && doc) {
      if (typeof doc.elt === "string") doc.elt = $(doc.elt);
      if (doc.elt && (0, _Dom.isDomNode)(doc.elt)) return doc;
    } else return null;
  }).filter(function (it) {
    return !!it;
  });
  var sync = [];
  var processInfo = {
    state: 'RENDER_DOM',
    total: {
      all: 0,
      text: 0,
      image: 0
    },
    dom: {
      text: 0,
      image: 0
    },
    onProcess: function onProcess() {
      _onProcess && _onProcess(processInfo);
    }
  };
  printer.processInfo = processInfo;
  var contentChildList = docList.map(function (doc) {
    var elt = doc.elt;
    return (0, _Dom.depthClone)(elt, function (originElt, copyElt) {
      copyElt.__idx__ = processInfo.total.all;
      copyElt.__origin__ = originElt;
      processInfo.total.all++;
      var parent, fontWeight, style;
      var done = false;
      if (originElt.nodeType === Node.TEXT_NODE) {
        processInfo.total.text++;
        sync.push(new Promise(function (rs) {
          setTimeout(function () {
            parent = originElt.parentElement;
            if (!copyElt.__fontWeight__) {
              style = getComputedStyle(parent);
              fontWeight = parseInt(style.getPropertyValue('font-weight')); //not support other style
              copyElt.__fontWeight__ = fontWeight;
              if (fontWeight <= 400) {
                copyElt.parentElement.style.setProperty('font-weight', 'normal');
              } else if (fontWeight > 400) {
                copyElt.parentElement.style.setProperty('font-weight', 'bold');
              }
              processInfo.dom.text++;
            }
            processInfo.dom.text++;
            rs();
          }, 0);
        }));
      } else if (originElt.tagName && originElt.tagName.toLowerCase() === 'canvas') {
        copyElt.getContext('2d').drawImage(originElt, 0, 0);
      } else if (originElt.tagName === 'IMG' && !originElt.classList.contains('absol-attachhook') && originElt.src) {
        processInfo.total.image++;
        sync.push((0, _XLoader.isImageURLAllowCrossOrigin)(originElt.src).then(function (result) {
          var newElt;
          if (!result) {
            newElt = copyElt.cloneNode();
            newElt.__idx__ = copyElt.__idx__;
            newElt.__origin__ = copyElt.__origin__;
            ;
            copyElt.parentElement.replaceChild(newElt, copyElt);
            return (0, _XLoader.loadToBlobURL)('https://absol.cf/crossdownload.php?file=' + encodeURIComponent(originElt.src)).then(function (url) {
              return newElt.src = url;
            }).then(function () {
              return (0, _Dom.waitImageLoaded)(newElt, 10000);
            }).then(function () {
              if (!done) {
                processInfo.dom.image++;
                processInfo.onProcess();
                done = true;
              }
            });
          } else {
            return (0, _Dom.waitImageLoaded)(copyElt, 10000).then(function () {
              if (!done) {
                processInfo.dom.image++;
                processInfo.onProcess();
                done = true;
              }
            });
          }
        }, function (err) {
          console.error(err);
          if (!done) {
            processInfo.dom.image++;
            processInfo.onProcess();
            done = true;
          }
        }));
      } else if (originElt.tagName === 'INPUT') {
        if (originElt.getAttribute('type') === 'text' || !originElt.getAttribute('type') || originElt.getAttribute('type') === 'number') {
          copyElt.value = originElt.value;
        } else if (originElt.getAttribute('type') === 'radio') {
          copyElt.setAttribute('name', (copyElt.getAttribute('name') || (0, _stringGenerate.randomIdent)()) + '_for_print');
          copyElt.checked = originElt.checked;
        }
      }
    });
  });
  var content = _Dom["default"].ShareInstance._({
    style: {
      width: 794 - 57 * 2 + 'px',
      //WIDTH: 1123 - 57*2
      display: 'inline-block',
      overflow: 'visible'
    },
    "class": 'as-printer-content',
    child: contentChildList
  });
  var scroller = _Dom["default"].ShareInstance._({
    "class": 'as-printer',
    style: {
      'text-size-adjust': 'none',
      '-webkit-text-size-adjust': 'none',
      '-moz-text-size-adjust': 'none',
      '-ms-text-size-adjust': 'none',
      position: 'fixed',
      top: '10px',
      bottom: '10px',
      left: '10px',
      overflow: 'scroll',
      width: '794px',
      // maxWidth: '90vw',
      background: 'white',
      // zIndex: 1000,

      opacity: '0',
      zIndex: '-100',
      visibility: 'hidden',
      pointerEvents: 'none'
    },
    child: content
  }).addTo(document.body);
  sync.push(new Promise(function (rs) {
    setTimeout(rs, 50);
  }));
  return Promise.all(sync).then(function () {
    processInfo.state = "SERIALIZE";
    processInfo.onProcess();
    docList.forEach(function (doc, i) {
      printer.O = _Rectangle["default"].fromClientRect(contentChildList[i].getBoundingClientRect()).A();
      printer.addSubDocument(printer.O, doc.opt);
      _this2.accept(printer, contentChildList[i], new _VarScope["default"](), []);
    });
  }).then(function () {
    scroller.remove();
    processInfo.onProcess = _noop["default"];
    return printer;
  });
};

/***
 *
 * @param {PSHandler} handler
 * @returns {this}
 */
PrintSerializer.prototype.addHandler = function (handler) {
  this.handlers.unshift(handler);
  return this;
};

/***
 *
 * @param {PSHandler} handler
 * @param {string} bf
 * @returns {this}
 */
PrintSerializer.prototype.addHandlerBefore = function (handler, bf) {
  var idx = this.handlers.findIndex(function (value) {
    return value.id === bf;
  });
  if (idx >= 0) {
    this.handlers.splice(idx, 0, handler);
  }
  return this;
};

/***
 *
 * @param {PSHandler} handler
 * @param {string} at
 * @returns {this}
 */
PrintSerializer.prototype.addHandlerAfter = function (handler, at) {
  var idx = this.handlers.findIndex(function (value) {
    return value.id === at;
  });
  if (idx >= 0) {
    this.handlers.splice(idx + 1, 0, handler);
  }
  return this;
};

/***
 *
 * @param {Array<PSHandler>} handlers
 * @returns {this}
 */
PrintSerializer.prototype.addHandlers = function (handlers) {
  this.handlers.unshift.apply(this.handlers, handlers);
  return this;
};

/***
 *
 * @param {string} id
 * @returns {this}
 */
PrintSerializer.prototype.removeHandler = function (id) {
  var idx = this.handlers.findIndex(function (value) {
    return value.id === id;
  });
  if (idx >= 0) {
    this.handlers.splice(idx, 1);
  }
  return this;
};

/***
 *
 * @param {string} id
 * @returns {PSHandler|null}
 */
PrintSerializer.prototype.getHandler = function (id) {
  var idx = this.handlers.findIndex(function (value) {
    return value.id === id;
  });
  if (idx >= 0) {
    return this.handlers[idx];
  }
  return null;
};
var _default = PrintSerializer;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.mergePdfs = mergePdfs;
var _XLoader = __webpack_require__(47913);
// var pdLibUrl = 'https://unpkg.com/pdf-lib/dist/pdf-lib.js';
var pdLibUrl = 'https://absol.cf/vendor/pdf-lib.js';
var libSync = null;
function loadVendorLib() {
  if (libSync) return libSync;
  if ('PDFLib' in window) {
    libSync = Promise.resolve(window.PDFLib);
  } else {
    libSync = (0, _XLoader.loadScript)(pdLibUrl).then(function () {
      return window.PDFLib;
    });
  }
  return libSync;
}
function loadPdf(data) {
  if (typeof data === "string") {
    return fetch(data).then(function (res) {
      return res.arrayBuffer();
    }).then(function (buff) {
      return loadPdf(buff);
    });
  } else if (data instanceof ArrayBuffer) {
    return PDFLib.PDFDocument.load(data);
  } else return null;
}
function mergePdfs(pdfsToMerges, onProcess) {
  var processInfo = {
    all: pdfsToMerges.length,
    loaded: 0,
    merged: 0
  };
  return loadVendorLib().then(function () {
    var pdfSync = pdfsToMerges.map(function (it) {
      return loadPdf(it).then(function (r) {
        processInfo.loaded++;
        onProcess && onProcess(processInfo);
        return r;
      });
    });
    pdfSync.push(PDFLib.PDFDocument.create());
    return Promise.all(pdfSync);
  }).then(function (pdfs) {
    var mergedPdf = pdfs.pop();
    return pdfs.reduce(function (sync, pdf) {
      return mergedPdf.copyPages(pdf, pdf.getPageIndices()).then(function (copiedPages) {
        return sync.then(function () {
          return copiedPages;
        });
      }).then(function (copiedPages) {
        copiedPages.forEach(function (page) {
          mergedPdf.addPage(page);
        });
        processInfo.merged++;
        onProcess && onProcess(processInfo);
      });
    }, Promise.resolve()).then(function () {
      return mergedPdf;
    });
  }).then(function (mergedPdf) {
    return mergedPdf;
  });
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
Object.defineProperty(exports, "PaperPrinter", ({
  enumerable: true,
  get: function get() {
    return _PaperPrinter["default"];
  }
}));
Object.defineProperty(exports, "PrintSerializer", ({
  enumerable: true,
  get: function get() {
    return _PrintSerializer["default"];
  }
}));
exports.ShareSerializer = void 0;
exports.downloadAsPDF = downloadAsPDF;
Object.defineProperty(exports, "mergePdfs", ({
  enumerable: true,
  get: function get() {
    return _pdf.mergePdfs;
  }
}));
var _Dom = _interopRequireWildcard(__webpack_require__(64821));
var _PrintSerializer = _interopRequireDefault(__webpack_require__(40424));
var _PaperPrinter = _interopRequireDefault(__webpack_require__(40156));
var _FileSaver = __webpack_require__(53069);
var _pdf = __webpack_require__(38522);
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 _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var ShareSerializer = new _PrintSerializer["default"]();
exports.ShareSerializer = ShareSerializer;
/***
 *
 * @param elt
 * @param fileName
 * @param {function(processInfo):void=} onProcess
 * @returns {Promise<*>}
 */

/**
 * @type {((elt:AElement, fileName: string, onProcess: function(processInfo):void) => Promise ) & ((elt:AElement, opt: object, onProcess: function(processInfo):void) => Promise) }
 */
function downloadAsPDF(docList, arg2, onProcess) {
  var opt = {
    fileName: 'exports.pdf.js'
  };
  if (typeof arg2 === 'string') opt.fileName = arg2;else Object.assign(opt, arg2);
  var $ = _Dom["default"].ShareInstance.$;
  if (!(docList instanceof Array)) docList = [docList];
  docList = docList.map(function (doc) {
    if (typeof doc === "string") {
      return {
        elt: $(doc)
      };
    } else if ((0, _Dom.isDomNode)(doc)) {
      return {
        elt: $(doc)
      };
    } else if (_typeof(doc) === "object" && doc) {
      if (typeof doc.elt === "string") doc.elt = $(doc.elt);
      if (doc.elt && (0, _Dom.isDomNode)(doc.elt)) return doc;
    } else return null;
  }).filter(function (it) {
    return !!it;
  }).map(function (doc) {
    var elt = docList[0];
    if (elt.fmComponent) {
      if (!doc.opt) doc.opt = {};
      if (!doc.opt.margin) {
        doc.opt.margin = {
          top: elt.fmComponent.style.paddingTop || 57,
          left: elt.fmComponent.style.paddingLeft || 57,
          bottom: elt.fmComponent.style.paddingBottom || 57,
          right: elt.fmComponent.style.paddingRight || 57
        };
      }
    }
    return doc;
  });
  var serializer = ShareSerializer;
  opt.onProcess = typeof onProcess === "function" ? onProcess : function () {};
  var printer = new _PaperPrinter["default"](opt);
  return serializer.serialize(docList, printer, opt.onProcess).then(function (printer) {
    return printer.exportAsPDF();
  }).then(function (doc) {
    (0, _FileSaver.saveAs)(doc.output('blob'), opt.fileName);
  });
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _DPParseInstance = __webpack_require__(36093);
/*********************************
 * EXPRESSION
 */
var operatorOrder = {
  'NOT': 4,
  '!': 4,
  '*': 5,
  '/': 5,
  'MOD': 5,
  '%': 5,
  '+': 6,
  '-': 6,
  '<': 9,
  '>': 9,
  '<=': 9,
  '>=': 9,
  '==': 9,
  '!=': 9,
  'AND': 14,
  '&&': 14,
  'OR': 15,
  '||': 15,
  'XOR': 15
};
var elementRegexes = [['string', /("(?:[^"\\]|\\.)*?")|('(?:[^'\\]|\\.)*?')/], ['number', /(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)/], ['word', /[_a-zA-Z][_a-zA-Z0-9]*/], ['skip', /([\s\r\n]+)|(\/\/[^\n]*)|(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)/], ['dsymbol', /\+\+|--|==|!=|<=|>=|\|\||&&/], ['tsymbol', /\.\.\./], ['symbol', /[^\s_a-zA-Z0-9]/]];
var rules = [];
rules.push({
  target: 'null',
  elements: ['_null'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'NullLiteral'
    };
  }
});
rules.push({
  target: 'ident',
  elements: ['.word'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'Identifier',
      name: parsedNode.children[0].content
    };
  }
});
rules.push({
  target: 'args_list',
  elements: ['exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  },
  toASTChain: function toASTChain(parsedNode) {
    return [(0, _DPParseInstance.parsedNodeToAST)(parsedNode)];
  }
});
rules.push({
  target: 'args_list',
  elements: ['args_list', '_,', 'exp'],
  longestOnly: true,
  ident: 'args_list_rec',
  toASTChain: function toASTChain(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[0]).concat((0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2]));
  }
});
rules.push({
  target: 'function_callee',
  elements: ['ident'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'function_callee',
  elements: ['mem_exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'function_call',
  elements: ['function_callee', '_(', 'args_list', '_)'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'CallExpression',
      arguments: parsedNode.children[2].rule.toASTChain(parsedNode.children[2]),
      callee: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])
    };
  }
});
rules.push({
  target: 'function_call',
  elements: ['function_callee', '_(', '_)'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'CallExpression',
      arguments: [],
      callee: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])
    };
  }
});
rules.push({
  target: 'new_expression',
  elements: ['_new', 'function_call'],
  toAST: function toAST(parsedNode) {
    var callAst = (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]);
    return {
      type: 'NewExpression',
      arguments: callAst.arguments,
      callee: callAst.callee
    };
  }
});
rules.push({
  target: 'exp',
  elements: ['new_expression'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'exp',
  elements: ['null'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'exp',
  elements: ['ident'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'number',
  elements: ['.number'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'NumericLiteral',
      value: parseFloat(parsedNode.children[0].content)
    };
  }
});
rules.push({
  target: 'string',
  elements: ['.string'],
  toAST: function toAST(parsedNode) {
    var content = parsedNode.children[0].content;
    if (content[0] === "'") content = '"' + content.substring(1, content.length - 1).replace(/["]/g, '\\"') + '"';
    return {
      type: 'StringLiteral',
      value: JSON.parse(content)
    };
  }
});
rules.push({
  target: 'boolean',
  elements: ['_true'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'BooleanLiteral',
      value: true
    };
  }
});
rules.push({
  target: 'boolean',
  elements: ['_false'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'BooleanLiteral',
      value: false
    };
  }
});
rules.push({
  target: 'exp',
  elements: ['number'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'exp',
  elements: ['string'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'exp',
  elements: ['boolean'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
['+', '-', '*', '/', '%', '&&', '||', 'XOR', '==', '!=', '<', '>', '>=', '<='].forEach(function (op) {
  rules.push({
    target: 'bin_op',
    elements: ['_' + op],
    toAST: function toAST(parsedNode) {
      return {
        type: "BinaryOperator",
        content: op
      };
    }
  });
});
rules.push({
  target: 'exp',
  elements: ['exp', 'bin_op', 'exp'],
  // longestOnly: true,//* error when parse return (...)...
  ident: 'bin_op_rec',
  toASTChain: function toASTChain(parseNode) {
    var res = [];
    if (parseNode.children[0].rule === this) {
      res = res.concat(this.toASTChain(parseNode.children[0]));
    } else {
      res.push((0, _DPParseInstance.parsedNodeToAST)(parseNode.children[0]));
    }
    res.push(parseNode.children[1].children[0]);
    if (parseNode.children[2].rule === this) {
      res = res.concat(this.toASTChain(parseNode.children[2]));
    } else {
      res.push((0, _DPParseInstance.parsedNodeToAST)(parseNode.children[2]));
    }
    return res;
  },
  toAST: function toAST(parsedNode) {
    var chain = this.toASTChain(parsedNode);
    var stack = [];
    var item;
    var newNode;
    while (chain.length > 0) {
      item = chain.shift();
      if (item.content in operatorOrder) {
        while (stack.length >= 3 && operatorOrder[stack[stack.length - 2].content] <= operatorOrder[item.content]) {
          newNode = {
            type: 'BinaryExpression'
          };
          newNode.right = stack.pop();
          newNode.operator = stack.pop();
          newNode.left = stack.pop();
          stack.push(newNode);
        }
      }
      stack.push(item);
    }
    while (stack.length >= 3) {
      newNode = {
        type: 'BinaryExpression'
      };
      newNode.right = stack.pop();
      newNode.operator = stack.pop();
      newNode.left = stack.pop();
      stack.push(newNode);
    }
    return stack.pop();
  }
});
rules.push({
  target: 'condition_exp',
  elements: ['exp', '_?', 'exp', '_:', 'exp'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ConditionalExpression',
      test: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      consequent: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2]),
      alternate: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[4])
    };
  }
});
rules.push({
  target: 'sequence_exp',
  elements: ['exp', '_,', 'exp'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'SequenceExpression',
      expressions: [(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]), (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])]
    };
  }
});
rules.push({
  target: 'sequence_exp',
  elements: ['sequence_exp', '_,', 'exp'],
  toAST: function toAST(parsedNode) {
    var ast = (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
    ast.expressions.push((0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2]));
    return ast;
  }
});
rules.push({
  target: 'exp',
  elements: ['condition_exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'exp',
  elements: ['function_call'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'bracket_group',
  elements: ['_(', 'exp', '_)'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]);
  }
});
rules.push({
  target: 'exp',
  elements: ['bracket_group'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});

// rules.push({
//     target: 'exp',
//     elements: ['_(', 'exp', '_)'],
//     toAST: function (parsedNode) {
//         return parsedNodeToAST(parsedNode.children[1]);
//     }
// });

['+', '-', '!'].forEach(function (op) {
  ['number', 'bracket_group', 'ident', 'function_call', 'mem_exp', 'unary_exp'].forEach(function (arg) {
    rules.push({
      target: 'unary_exp',
      elements: ['_' + op, arg],
      toAST: function toAST(parsedNode) {
        return {
          type: 'UnaryExpression',
          argument: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]),
          operator: {
            type: 'UnaryOperator',
            content: op
          }
        };
      }
    });
  });
});
rules.push({
  target: 'exp',
  elements: ['unary_exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['ident', '_.', 'ident'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: false,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['ident', '_[', 'exp', '_]'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: true,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['new_expression', '_.', 'ident'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: false,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['new_expression', '_[', 'exp', '_]'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: true,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['mem_exp', '_.', 'ident'],
  longestOnly: true,
  ident: 'mem_exp_ident_rev',
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: false,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['mem_exp', '_[', 'exp', '_]'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: true,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['bracket_group', '_.', 'ident'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: false,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'mem_exp',
  elements: ['bracket_group', '_[', 'exp', '_]'],
  toAST: function toAST(parsedNode) {
    return {
      type: "MemberExpression",
      computed: true,
      object: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      property: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'exp',
  elements: ['mem_exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});

/**********************************************************************************************************************/

rules.push({
  target: 'object_exp',
  elements: ['_{', '_}'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ObjectExpression',
      properties: []
    };
  }
});
rules.push({
  target: 'object_exp',
  elements: ['_{', 'object_property_list', '_}'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ObjectExpression',
      properties: (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[1])
    };
  }
});
rules.push({
  target: 'exp',
  elements: ['object_exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'object_property',
  elements: ['ident', '_:', 'exp'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ObjectProperty',
      key: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      value: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'object_property',
  elements: ['string', '_:', 'exp'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ObjectProperty',
      key: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      value: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'object_property_list',
  elements: ['object_property'],
  toASTChain: function toASTChain(parsedNode) {
    return [(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])];
  }
});
rules.push({
  target: 'object_property_list',
  elements: ['object_property_list', '_,', 'object_property'],
  longestOnly: true,
  ident: 'object_property_list_rec',
  toASTChain: function toASTChain(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[0]).concat([(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])]);
  }
});

/**********************************************************************************************************************/

rules.push({
  target: 'exp',
  elements: ['array_exp'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'array_exp',
  elements: ['_[', '_]'],
  toAST: function toAST(parsedNode) {
    return {
      type: "ArrayExpression",
      elements: []
    };
  }
});
rules.push({
  target: 'array_exp',
  elements: ['_[', 'array_item_list', '_]'],
  toAST: function toAST(parsedNode) {
    return {
      type: "ArrayExpression",
      elements: (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[1])
    };
  }
});
rules.push({
  target: 'array_item_list',
  elements: ['exp'],
  toASTChain: function toASTChain(parsedNode) {
    return [(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])];
  }
});
rules.push({
  target: 'array_item_list',
  elements: ['array_item_list', '_,', 'exp'],
  longestOnly: true,
  ident: 'array_item_list_rec',
  toASTChain: function toASTChain(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[0]).concat([(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])]);
  }
});

/**********************************************************************************************************************/
/**************FOR QUICK PARSING***********************/

rules.push({
  target: 'exp',
  elements: ['.constance'],
  toAST: function toAST(parsedNode) {
    return parsedNode.children[0];
  },
  toASTChain: function toASTChain(parsedNode) {
    return [parsedNode.children[0]];
  }
});

/***********************************************************************************************************************/

rules.push({
  target: 'generic_type',
  elements: ['ident'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'GenericType',
      id: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])
    };
  }
});
rules.push({
  target: 'linked_type',
  elements: ['_linktype', 'exp'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'LinkedType',
      address: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1])
    };
  }
});
rules.push({
  target: 'var_type',
  elements: ['generic_type'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'var_type',
  elements: ['linked_type'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});

/*
rules.push({
    target: 'var_type',
    elements: ['ident', '<', 'var_type', '>']
});

rules.push({
    target: 'var_type',
    elements: ['ident', '<', '.string', '>']
});
*/

rules.push({
  target: 'type_annotation',
  elements: ['_:', 'var_type'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'TypeAnnotation',
      typeAnnotation: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1])
    };
  }
});

/**********************************************************************************************************************/
/*
@decrepted ast
rules.push({
    target: 'variable_declaration',
    elements: ['_var', 'ident', 'type_annotation', '_;'],
    toAST: function (parsedNode) {
        return {
            type: 'VariableDeclaration',
            id: parsedNodeToAST(parsedNode.children[1]),
            typeAnnotation: parsedNodeToAST(parsedNode.children[2])
        }
    }
});

rules.push({
    target: 'variable_declaration',
    elements: ['_var', 'ident', '_;'],
    toAST: function (parsedNode) {
        return {
            type: 'VariableDeclaration',
            id: parsedNodeToAST(parsedNode.children[1]),
        }
    }
});

rules.push({
    target: 'variable_declaration',
    elements: ['_var', 'ident', '_=', 'exp', '_;'],
    toAST: function (parsedNode) {
        return {
            type: 'VariableDeclaration',
            id: parsedNodeToAST(parsedNode.children[1]),
            init: parsedNodeToAST(parsedNode.children[3])
        }
    }
});

rules.push({
    target: 'variable_declaration',
    elements: ['_var', 'ident', 'type_annotation', '_=', 'exp', '_;'],
    toAST: function (parsedNode) {
        return {
            type: 'VariableDeclaration',
            id: parsedNodeToAST(parsedNode.children[1]),
            typeAnnotation: parsedNodeToAST(parsedNode.children[2]),
            init: parsedNodeToAST(parsedNode.children[4]),
            kind: 'var'
        }

    }
});
*/

rules.push({
  target: 'variable_declarator',
  elements: ['ident', '_=', 'exp'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'VariableDeclarator',
      id: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      init: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'variable_declarator',
  elements: ['ident', 'type_annotation', '_=', 'exp'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'VariableDeclarator',
      id: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      typeAnnotation: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]),
      init: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[3])
    };
  }
});
rules.push({
  target: 'variable_declarator',
  elements: ['ident'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'VariableDeclarator',
      id: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      init: null
    };
  }
});
rules.push({
  target: 'variable_declarator',
  elements: ['ident', 'type_annotation'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'VariableDeclarator',
      id: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      typeAnnotation: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]),
      init: null
    };
  }
});
rules.push({
  target: 'variable_declarator_sequence',
  elements: ['variable_declarator'],
  toASTChain: function toASTChain(parsedNode) {
    return [(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])];
  }
});
rules.push({
  target: 'variable_declarator_sequence',
  elements: ['variable_declarator_sequence', '_,', 'variable_declarator'],
  toASTChain: function toASTChain(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[0]).concat([(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])]);
  }
});
rules.push({
  target: 'variable_declaration',
  elements: ['_var', 'variable_declarator_sequence', '_;'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'VariableDeclaration',
      declarations: (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[1]),
      kind: 'var'
    };
  }
});

//todo
rules.push({
  target: 'expression_statement',
  elements: ['function_call', '_;'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ExpressionStatement',
      expression: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])
    };
  }
});

/**********************************************************************************************************************/

rules.push({
  target: 'assign_expression',
  elements: ['ident', '_=', 'exp'],
  toAST: function toAST(parseNode) {
    return {
      type: 'AssignmentExpression',
      left: (0, _DPParseInstance.parsedNodeToAST)(parseNode.children[0]),
      right: (0, _DPParseInstance.parsedNodeToAST)(parseNode.children[2])
    };
  }
});
rules.push({
  target: 'assign_expression',
  elements: ['mem_exp', '_=', 'exp'],
  toAST: function toAST(parseNode) {
    return {
      type: 'AssignmentExpression',
      left: (0, _DPParseInstance.parsedNodeToAST)(parseNode.children[0]),
      right: (0, _DPParseInstance.parsedNodeToAST)(parseNode.children[2])
    };
  }
});
rules.push({
  target: 'expression_statement',
  elements: ['assign_expression', '_;'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ExpressionStatement',
      expression: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])
    };
  }
});

/**********************************************************************************************************************/
rules.push({
  target: 'if_statement_1',
  elements: ['_if', '_(', 'exp', '_)', 'statement'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'IfStatement',
      test: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2]),
      consequent: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[4])
    };
  }
});
rules.push({
  target: 'if_statement_2',
  elements: ['if_statement_1', '_else', 'statement'],
  toAST: function toAST(parsedNode) {
    var ast = (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
    ast.alternate = (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2]);
    return ast;
  }
});
rules.push({
  target: 'statement',
  elements: ['if_statement_1'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'statement',
  elements: ['if_statement_2'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});

/**********************************************************************************************************************/

rules.push({
  target: 'for_count_statement',
  elements: ['_for', 'ident', '_from', 'exp', '_to', 'exp', 'block_statement'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ForCountStatement',
      "for": (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]),
      from: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[3]),
      to: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[5]),
      body: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[6])
    };
  }
});
rules.push({
  target: 'for_of_statement',
  elements: ['_for', 'ident', '_of', 'exp', 'block_statement'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ForOfStatement',
      "for": (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]),
      of: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[3]),
      body: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[4])
    };
  }
});
rules.push({
  target: 'for_in_statement',
  elements: ['_for', 'ident', '_in', 'exp', 'block_statement'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'ForInStatement',
      "for": (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]),
      "in": (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[3]),
      body: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[4])
    };
  }
});
rules.push({
  target: 'iterable_range',
  elements: ['iterable_range_limit', '_...', 'iterable_range_limit']
});
rules.push({
  target: 'iterable_range_limit',
  elements: ['.number']
});
rules.push({
  target: 'iterable_range_limit',
  elements: ['ident']
});
/**************************************************************************************/
rules.push({
  target: 'for_statement',
  elements: ['_for', 'bracket_group', 'statement']
});

/**********************************************************************************************************************/

rules.push({
  target: 'while_statement',
  elements: ['_while', 'bracket_group', 'statement'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'WhileStatement',
      test: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]),
      body: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])
    };
  }
});
rules.push({
  target: 'statement',
  elements: ['while_statement'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});

/**********************************************************************************************************************/

rules.push({
  target: 'do_while_statement',
  elements: ['_do', 'statement', '_while', 'bracket_group', '_;'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'DoWhileStatement',
      test: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[3]),
      body: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1])
    };
  }
});
rules.push({
  target: 'statement',
  elements: ['do_while_statement'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});

/**********************************************************************************************************************/

rules.push({
  target: 'break_statement',
  elements: ['_break', '_;'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'BreakStatement'
    };
  }
});
rules.push({
  target: 'statement',
  elements: ['break_statement'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});

/**********************************************************************************************************************/

rules.push({
  target: 'block_statement',
  elements: ['_{', '_}'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'BlockStatement',
      body: []
    };
  }
});
rules.push({
  target: 'block_statement',
  elements: ['_{', 'statement_arr', '_}'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'BlockStatement',
      body: (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[1])
    };
  }
});
rules.push({
  target: 'statement',
  elements: ['variable_declaration'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'statement',
  elements: ['block_statement'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'statement',
  elements: ['expression_statement'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'statement',
  elements: ['for_count_statement'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'statement',
  elements: ['for_in_statement'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'statement',
  elements: ['for_of_statement'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'statement',
  elements: ['assign_statement'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'statement_arr',
  elements: ['statement'],
  toASTChain: function toASTChain(parsedNode) {
    return [(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])];
  }
});
rules.push({
  target: 'statement_arr',
  elements: ['statement_arr', 'statement'],
  longestOnly: true,
  toASTChain: function toASTChain(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[0]).concat([(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1])]);
  }
});

/**********************************************************************************************************************/

rules.push({
  target: 'function_arguments_declaration',
  elements: ['_(', '_)'],
  toASTChain: function toASTChain(parsedNode) {
    return [];
  }
});
rules.push({
  target: 'function_arguments_declaration',
  elements: ['_(', 'argument_declaration_list', '_)'],
  toASTChain: function toASTChain(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[1]);
  }
});
rules.push({
  target: 'argument_declaration',
  elements: ['ident', 'type_annotation'],
  toAST: function toAST(parsedNode) {
    return {
      type: "ArgumentDeclaration",
      id: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]),
      typeAnnotation: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1])
    };
  }
});
rules.push({
  target: 'argument_declaration',
  elements: ['ident'],
  toAST: function toAST(parsedNode) {
    return {
      type: "ArgumentDeclaration",
      id: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])
    };
  }
});
rules.push({
  target: 'argument_declaration_list',
  elements: ['argument_declaration'],
  toASTChain: function toASTChain(parsedNode) {
    return [(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0])];
  }
});
rules.push({
  target: 'argument_declaration_list',
  elements: ['argument_declaration_list', '_,', 'argument_declaration'],
  toASTChain: function toASTChain(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[0]).concat([(0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[2])]);
  }
});

/**********************************************************************************************************************/

rules.push({
  target: 'return_statement',
  elements: ['_return', 'exp', '_;'],
  toAST: function toAST(parsedNode) {
    return {
      type: "ReturnStatement",
      argument: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1])
    };
  }
});
rules.push({
  target: 'return_statement',
  elements: ['_return', '_;'],
  toAST: function toAST(parsedNode) {
    return {
      type: "ReturnStatement"
    };
  }
});
rules.push({
  target: 'statement',
  elements: ['return_statement'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});

/**********************************************************************************************************************/

rules.push({
  target: 'function_declare',
  elements: ['_function', 'ident', 'function_arguments_declaration', 'type_annotation', 'block_statement'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'FunctionDeclaration',
      id: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]),
      params: (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[2]),
      returnType: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[3]),
      body: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[4])
    };
  }
});
rules.push({
  target: 'function_declare',
  elements: ['_function', 'ident', 'function_arguments_declaration', 'block_statement'],
  toAST: function toAST(parsedNode) {
    return {
      type: 'FunctionDeclaration',
      id: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[1]),
      params: (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[2]),
      body: (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[3])
    };
  }
});
rules.push({
  target: 'statement',
  elements: ['function_declare'],
  toAST: function toAST(parsedNode) {
    return (0, _DPParseInstance.parsedNodeToAST)(parsedNode.children[0]);
  }
});
rules.push({
  target: 'program',
  elements: ['statement_arr'],
  toAST: function toAST(parsedNode) {
    return {
      type: "Program",
      body: (0, _DPParseInstance.parsedNodeToASTChain)(parsedNode.children[0])
    };
  }
});
var _default = {
  elementRegexes: elementRegexes,
  rules: rules,
  operatorOrder: operatorOrder
};
exports["default"] = _default;

/***/ }),

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

"use strict";


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

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.breakTextToLineByLength = breakTextToLineByLength;
exports.camelCaseToKebabCase = camelCaseToKebabCase;
exports.camelCaseToPascalCase = camelCaseToPascalCase;
exports.camelCaseToUnderScore = camelCaseToUnderScore;
exports.camelCaseToUpperUnderScore = camelCaseToUpperUnderScore;
exports.kebabCaseToCamelCase = kebabCaseToCamelCase;
exports.kebabCaseToPascalCase = kebabCaseToPascalCase;
exports.kebabCaseToUnderScore = kebabCaseToUnderScore;
exports.kebabCaseToUpperUnderScore = kebabCaseToUpperUnderScore;
exports.nonAccentVietnamese = nonAccentVietnamese;
exports.normalizeIdent = normalizeIdent;
exports.pascalCaseToCamelCase = pascalCaseToCamelCase;
exports.pascalCaseToKebabCase = pascalCaseToKebabCase;
exports.pascalCaseToUnderScore = pascalCaseToUnderScore;
exports.pascalCaseToUpperUnderScore = pascalCaseToUpperUnderScore;
exports.underScoreToCamelCase = underScoreToCamelCase;
exports.underScoreToKebabCase = underScoreToKebabCase;
exports.underScoreToPascalCase = underScoreToPascalCase;
exports.wrapToLines = wrapToLines;
/**
 *
 * @param {String} s
 * @param {Number} maxLength
 */
function wrapToLines(s, maxLength) {
  var res = [];
  var currentWord = '';
  var currentLine = '';
  for (var i = 0; i < s.length; ++i) {
    if (s[i].match(/\s/)) {
      if (currentWord.length + currentLine.length >= maxLength) {
        if (currentLine.length > 0) {
          res.push(currentLine.trim());
          currentLine = '';
          currentWord = currentWord.trimLeft() + s[i];
        } else {
          currentLine = currentLine + currentWord;
          res.push(currentLine.trim());
          currentLine = '';
          currentWord = '';
        }
      } else {
        currentLine = currentLine + currentWord;
        currentWord = s[i];
      }
    } else {
      currentWord = currentWord + s[i];
    }
  }
  currentLine = (currentLine + currentWord).trim();
  if (currentLine.length > 0) res.push(currentLine);
  return res;
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function nonAccentVietnamese(s) {
  return s.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, "a").replace(/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ/g, "A").replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, "e").replace(/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/g, "E").replace(/ì|í|ị|ỉ|ĩ/g, "i").replace(/Ì|Í|Ị|Ỉ|Ĩ/g, "I").replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, "o").replace(/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ/g, "O").replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, "u").replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, "U").replace(/ỳ|ý|ỵ|ỷ|ỹ/g, "y").replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, "Y").replace(/đ/g, "d").replace(/Đ/g, "D").replace(/\u0300|\u0301|\u0303|\u0309|\u0323/g, "").replace(/\u02C6|\u0306|\u031B/g, "");
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function pascalCaseToCamelCase(s) {
  return s.substr(0, 1).toLowerCase() + s.substr(1);
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function kebabCaseToCamelCase(s) {
  return s.replace(/-+([^-])/g, function (full, c) {
    return c.toUpperCase();
  });
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function underScoreToCamelCase(s) {
  return s.replace(/(_+)?([^_]+)/g, function (full, underscore, word) {
    if (underscore) {
      if (word) {
        return word.substr(0, 1).toUpperCase() + word.substr(1).toLowerCase();
      } else return '';
    } else {
      return word.toLowerCase();
    }
  });
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function camelCaseToPascalCase(s) {
  return s.substr(0, 1).toUpperCase() + s.substr(1);
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function underScoreToPascalCase(s) {
  return s.replace(/(_+|^)?([^_]+)/g, function (full, underscore, word) {
    return word.substr(0, 1).toUpperCase() + word.substr(1).toLowerCase();
  });
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function kebabCaseToPascalCase(s) {
  return s.replace(/(-+|^)([^-])/g, function (full, u, c) {
    return c.toUpperCase();
  });
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function pascalCaseToKebabCase(s) {
  return s.replace(/[A-Z][^A-Z]*/g, function (full, index) {
    if (index == 0) return full.toLowerCase();
    return '-' + full.toLowerCase();
  });
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function camelCaseToKebabCase(s) {
  return s.replace(/(^|[A-Z])[^A-Z]*/g, function (full, index) {
    if (index == 0) return full.toLowerCase();
    return '-' + full.toLowerCase();
  });
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function underScoreToKebabCase(s) {
  return s.replace(/(^|_+)([^_]+)/g, function (full, score, word, index) {
    if (index == 0) return word.toLowerCase();
    return '-' + word.toLowerCase();
  });
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function pascalCaseToUnderScore(s) {
  return s.replace(/[A-Z][^A-Z]*/g, function (full, index) {
    if (index == 0) return full.toLowerCase();
    return '_' + full.toLowerCase();
  });
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function pascalCaseToUpperUnderScore(s) {
  return s.replace(/[A-Z][^A-Z]*/g, function (full, index) {
    if (index == 0) return full.toUpperCase();
    return '_' + full.toUpperCase();
  });
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function camelCaseToUnderScore(s) {
  return s.replace(/(^|[A-Z])[^A-Z]*/g, function (full, index) {
    if (index == 0) return full.toLowerCase();
    return '_' + full.toLowerCase();
  });
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function camelCaseToUpperUnderScore(s) {
  return s.replace(/(^|[A-Z])[^A-Z]*/g, function (full, index) {
    if (index == 0) return full.toUpperCase();
    return '_' + full.toUpperCase();
  });
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function kebabCaseToUnderScore(s) {
  return s.replace(/(-+|^)([^-]+)/g, function (full, u, word, index) {
    if (index == 0) return word.toLowerCase();
    return '_' + word.toLowerCase();
  });
}

/**
 *
 * @param {String} s
 * @returns {String}
 */
function kebabCaseToUpperUnderScore(s) {
  return s.replace(/(-+|^)([^-]+)/g, function (full, u, word, index) {
    if (index == 0) return word.toUpperCase();
    return '_' + word.toUpperCase();
  });
}

/***
 *
 * @param {String} text
 */
function normalizeIdent(text, opt) {
  var spaces = '_';
  if (opt && 'spaces' in opt) {
    spaces = opt.spaces || '';
  }
  var symbols = '_';
  if (opt && 'symbols' in opt) {
    symbols = opt.symbols || '';
  }
  var startsWithDigit = false;
  if (opt && 'startsWithDigit' in opt) {
    startsWithDigit = opt.startsWithDigit || false;
  }
  var res = nonAccentVietnamese(text);
  if (typeof spaces === "string") {
    res = res.replace(/\s+/g, spaces);
  }
  if (typeof symbols === 'string') {
    if (spaces === '_') res = res.replace(/[^a-zA-Z0-9_$]+/g, symbols);else if (spaces === '-') {
      res = res.replace(/[^a-zA-Z0-9_$\-]+/g, symbols);
    }
  }
  if (spaces) {
    res = res.replace(new RegExp("([".concat(spaces, "]+)"), 'g'), spaces);
  }
  if (symbols && symbols !== spaces) {
    res = res.replace(new RegExp("([".concat(symbols, "]+)"), 'g'), spaces);
  }
  if (spaces) {
    res = res.replace(new RegExp("([".concat(spaces, "]+$)|(^[").concat(spaces, "]+)"), 'g'), '');
  }
  if (symbols && symbols !== spaces) {
    res = res.replace(new RegExp("([".concat(symbols, "]+$)|(^[").concat(symbols, "]+$)"), 'g'), '');
  }
  if (!startsWithDigit && res.match(/^[0-9]/)) {
    res = '$' + res;
  }
  return res;
}
function breakTextToLineByLength(text, limitLength) {
  limitLength = limitLength || 256;
  var lines = text.split(/\n/);
  var newLines = [];
  var breakLine = function breakLine(line) {
    var testLine = nonAccentVietnamese(line).toLowerCase();
    var wordRgx = /(\(?(\d+([.]\d*)?([eE][+-]?\d+)?|[.]\d+([eE][+-]?\d+)?)\)?)|([()_a-z0-9,.]+)|([^\sa-z0-9,._()])/g;
    var poss = [];
    var matched = wordRgx.exec(testLine);
    while (matched) {
      poss.push(matched.index);
      matched = wordRgx.exec(testLine);
    }
    if (poss[0] !== 0) poss.unshift(0);
    poss.push(testLine.length);
    poss.push(testLine.length);
    var start = poss[0] || 0;
    var end,
      pend = start;
    var newLine;
    var chars;
    for (var i = 1; i < poss.length; ++i) {
      end = poss[i];
      if (end - start > limitLength || i + 1 === poss.length) {
        newLine = line.substring(start, pend).trimEnd();
        if (newLine.length > limitLength) {
          chars = newLine.split('');
          while (chars.length > 0) {
            newLine = chars.splice(0, limitLength).join('');
            newLines.push(newLine);
          }
        } else if (newLine.length > 0) {
          newLines.push(newLine);
        }
        start = pend;
      }
      pend = end;
    }
  };
  lines.forEach(function (line) {
    return breakLine(line);
  });
  return newLines.join('\n');
}

// window.t = `Sử dụng công thức tính: (Luong_Gio  OT150  0.5) + (Luong_Gio  OT200  1.0) + (Luong_Gio  OT210  1.1) + (Luong_Gio  OT270  1.7) + (Luong_Gio  OT300  2.0)`;
// console.log(breakTextToLineByLength(t, 50))

String.nonAccentVietnamese = nonAccentVietnamese;
String.prototype.nonAccentVietnamese = function () {
  return String.nonAccentVietnamese(this);
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.ipsumLoremWord = exports.identCharacters = void 0;
exports.parallelMatch = parallelMatch;
exports.randomIdent = randomIdent;
exports.randomParagraph = randomParagraph;
exports.randomPhrase = randomPhrase;
exports.randomSentence = randomSentence;
exports.randomWord = randomWord;
var _random = __webpack_require__(88917);
var identCharacters = function () {
  var chars = 'qwertyuiopasdfghjklzxcvbnm';
  chars = chars + chars.toUpperCase();
  var num = '0123456789';
  var spect = '_';
  return (chars + spect + num).split('');
}();
exports.identCharacters = identCharacters;
function randomIdent(length) {
  if (!(length > 0)) length = 4;
  var factor = identCharacters;
  return [factor[Math.random() * (factor.length - 10) >> 0]].concat(Array(length - 1).fill('').map(function () {
    return factor[Math.random() * factor.length >> 0];
  })).join('');
}
function parallelMatch(a, b) {
  var l = Math.min(a.length, b.length);
  var res = 0;
  for (var i = 0; i < l; ++i) {
    if (a[i] == b[i]) ++res;
  }
  return res;
}
var ipsumLoremWord = ['lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit', 'sed', 'do', 'eiusmod', 'tempor', 'incididunt', 'ut', 'labore', 'et', 'dolore', 'magna', 'aliqua', 'enim', 'ad', 'minim', 'veniam', 'quis', 'nostrud', 'exercitation', 'ullamco', 'laboris', 'nisi', 'aliquip', 'ex', 'ea', 'commodo', 'consequat', 'duis', 'aute', 'irure', 'in', 'reprehenderit', 'voluptate', 'velit', 'esse', 'cillum', 'eu', 'fugiat', 'nulla', 'pariatur', 'excepteur', 'sint', 'occaecat', 'cupidatat', 'non', 'proident', 'sunt', 'culpa', 'qui', 'officia', 'deserunt', 'mollit', 'anim', 'id', 'est', 'laborum', 'perspiciatis', 'unde', 'omnis', 'iste', 'natus', 'error', 'voluptatem', 'accusantium', 'doloremque', 'laudantium', 'totam', 'rem', 'aperiam', 'eaque', 'ipsa', 'quae', 'ab', 'illo', 'inventore', 'veritatis', 'quasi', 'architecto', 'beatae', 'vitae', 'dicta', 'explicabo', 'nemo', 'ipsam', 'quia', 'voluptas', 'aspernatur', 'aut', 'odit', 'fugit', 'consequuntur', 'magni', 'dolores', 'eos', 'ratione', 'sequi', 'nesciunt', 'neque', 'porro', 'quisquam', 'dolorem', 'adipisci', 'numquam', 'eius', 'modi', 'tempora', 'incidunt', 'magnam', 'aliquam', 'quaerat', 'minima', 'nostrum', 'exercitationem', 'ullam', 'corporis', 'suscipit', 'laboriosam', 'aliquid', 'commodi', 'consequatur', 'autem', 'vel', 'eum', 'iure', 'quam', 'nihil', 'molestiae', 'illum', 'quo', 'at', 'vero', 'accusamus', 'iusto', 'odio', 'dignissimos', 'ducimus', 'blanditiis', 'praesentium', 'voluptatum', 'deleniti', 'atque', 'corrupti', 'quos', 'quas', 'molestias', 'excepturi', 'occaecati', 'cupiditate', 'provident', 'similique', 'mollitia', 'animi', 'dolorum', 'fuga', 'harum', 'quidem', 'rerum', 'facilis', 'expedita', 'distinctio', 'nam', 'libero', 'tempore', 'sum', 'soluta', 'nobis', 'eligendi', 'optio', 'cumque', 'impedit', 'minus', 'quod', 'maxime', 'placeat', 'facere', 'possimus', 'assumenda', 'repellendus', 'temporibus', 'quibusdam', 'officiis', 'debitis', 'necessitatibus', 'saepe', 'eveniet', 'voluptates', 'repudiandae', 'recusandae', 'itaque', 'earum', 'hic', 'tenetur', 'a', 'sapiente', 'delectus', 'reiciendis', 'voluptatibus', 'maiores', 'alias', 'perferendis', 'doloribus', 'asperiores', 'repellat', 'integer', 'nec', 'praesent', 'cursus', 'ante', 'dapibus', 'diam', 'sem', 'nibh', 'elementum', 'imperdiet', 'sagittis', 'mauris', 'fusce', 'tellus', 'augue', 'semper', 'porta', 'massa', 'vestibulum', 'lacinia', 'arcu', 'eget', 'class', 'aptent', 'taciti', 'sociosqu', 'litora', 'torquent', 'per', 'conubia', 'nostra', 'inceptos', 'himenaeos', 'curabitur', 'sodales', 'ligula', 'dignissim', 'nunc', 'tortor', 'pellentesque', 'aenean', 'scelerisque', 'maecenas', 'mattis', 'convallis', 'tristique', 'proin', 'egestas', 'porttitor', 'morbi', 'lectus', 'risus', 'iaculis', 'luctus', 'ac', 'turpis', 'aliquet', 'metus', 'ullamcorper', 'tincidunt', 'euismod', 'quisque', 'volutpat', 'condimentum', 'urna', 'facilisi', 'fringilla', 'suspendisse', 'potenti', 'feugiat', 'mi', 'sapien', 'etiam', 'ultrices', 'justo', 'lacus', 'pharetra', 'auctor', 'interdum', 'primis', 'faucibus', 'orci', 'posuere', 'cubilia', 'curae', 'molestie', 'dui', 'blandit', 'congue', 'pede', 'facilisis', 'laoreet', 'donec', 'viverra', 'malesuada', 'pulvinar', 'sollicitudin', 'cras', 'nisl', 'felis', 'venenatis', 'ultricies', 'accumsan', 'pretium', 'fermentum', 'nullam', 'purus', 'mollis', 'vivamus', 'consectetuer'];
exports.ipsumLoremWord = ipsumLoremWord;
function randomWord() {
  var arr = ipsumLoremWord;
  var idx = (0, _random.randomInt)(0, arr.length - 1);
  return arr[idx];
}

/**
 * @param {number}arg1
 * @param {number=}arg2
 * @also
 * @param {number} arg1
 * @returns {string}
 */
function randomPhrase(arg1, arg2) {
  var limitLength = arguments[arguments.length - 1];
  var minLength = 1;
  if (arguments.length > 1) minLength = arguments[0];
  if (!limitLength) limitLength = 50;
  var length = Math.ceil((Math.random() * (limitLength - minLength) + minLength) / 7);
  return new Array(length).fill(null).map(randomWord).reduce(function (ac, cr) {
    if (ac.length + cr.length < limitLength || ac.length < minLength) {
      ac.parts.push(cr);
    }
    return ac;
  }, {
    parts: [],
    length: 0
  }).parts.join(' ');
}
function randomSentence(limitLenght) {
  if (!limitLenght) limitLenght = 300;
  var length = Math.ceil(Math.random() * limitLenght / 70);
  var res = new Array(length).fill(null).map(function (value) {
    return randomPhrase(value);
  }).reduce(function (ac, cr) {
    if (ac.length + cr.length < limitLenght) {
      ac.parts.push(cr);
    }
    return ac;
  }, {
    parts: [],
    length: 0
  }).parts.join(', ');
  if (Math.random() < 0.03) {
    res = res.replace(/\,/i, ':');
  }
  res = res.replace(/^./, function (x) {
    return x.toUpperCase();
  });
  res += '.';
  return res;
}
function randomParagraph(limitLength) {
  if (!limitLength) limitLength = 1000;
  var length = Math.ceil(Math.random() * limitLength / 200);
  return new Array(length).fill(null).map(function (value) {
    return randomSentence(value);
  }).reduce(function (ac, cr) {
    if (ac.length + cr.length < limitLength) {
      ac.parts.push(cr);
    }
    return ac;
  }, {
    parts: [],
    length: 0
  }).parts.join(' ');
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.exportStringMatchingCode = exportStringMatchingCode;
exports.phraseLike = phraseLike;
exports.phraseMatch = phraseMatch;
exports.wordLike = wordLike;
exports.wordsMatch = wordsMatch;
var _int = __webpack_require__(65909);
/**
 *
 * @param {String} a
 * @param {String} b
 */

function wordLike(a, b) {
  var m = a.length;
  var n = b.length;
  function map(i, j) {
    return i * (n + 1) + j;
  }
  var Q = Array((m + 1) * (n + 1)).fill(0);
  for (var i = 0; i < m; ++i) {
    for (var j = 0; j < n; ++j) {
      if (a.charAt(i) == b.charAt(j)) {
        if (Q[map(i + 1, j + 1)]) {
          if (Q[map(i + 1, j + 1)] < Q[map(i, j)] + 1) Q[map(i + 1, j + 1)] = Q[map(i, j)] + 1;
        } else Q[map(i + 1, j + 1)] = Q[map(i, j)] + 1;
      } else Q[map(i + 1, j + 1)] = Math.max(Q[map(i + 1, j)], Q[map(i, j + 1)]);
    }
  }
  return Q[map(m, n)] / (0, _int.harmonicMean)(m, n);
}

/**
 *
 * @param {Array<String>} sq1
 * @param {Array<String>} sq2
 * @param {number=} matchWordPow
 */
function wordsMatch(sq1, sq2, matchWordPow) {
  matchWordPow = matchWordPow === undefined ? 1 : matchWordPow;
  var m = sq1.length;
  var n = sq2.length;
  function map(i, j) {
    return i * (n + 1) + j;
  }
  var Q = Array((m + 1) * (n + 1)).fill(0);
  var e = 0.0;
  for (var i = 0; i < m; ++i) {
    for (var j = 0; j < n; ++j) {
      e = Math.pow(wordLike(sq1[i], sq2[j]), matchWordPow);
      if (Q[map(i + 1, j + 1)]) {
        if (Q[map(i + 1, j + 1)] < Q[map(i, j)] + e) Q[map(i + 1, j + 1)] = Q[map(i, j)] + e;
      } else Q[map(i + 1, j + 1)] = Q[map(i, j)] + e;
      e = Math.max(Q[map(i + 1, j)], Q[map(i, j + 1)]);
      if (e > Q[map(i + 1, j + 1)]) Q[map(i + 1, j + 1)] = e;
    }
  }
  return Q[map(m, n)];
}
function phraseMatch(a, b, matchWordPow) {
  matchWordPow = matchWordPow || 1;
  var spliter = /[\s,-\.+?\_]+/;
  var notEmp = function notEmp(e) {
    return e.length > 0;
  };
  var sq1 = a.toLowerCase().split(spliter).filter(notEmp);
  var sq2 = b.toLowerCase().split(spliter).filter(notEmp);
  var wordsMatchScore = wordsMatch(sq1, sq2);
  var m = sq1.length;
  var n = sq2.length;
  return wordsMatchScore / Math.max((0, _int.harmonicMean)(m, n), 1);
}
;
function phraseLike(a, b, matchWordPow) {
  matchWordPow = matchWordPow || 1;
  var spliter = /[\s,-\.+?\_]+/;
  var notEmp = function notEmp(e) {
    return e.length > 0;
  };
  var sq1 = a.toLowerCase().split(spliter).filter(notEmp);
  var sq2 = b.toLowerCase().split(spliter).filter(notEmp);
  var m = sq1.length;
  var n = sq2.length;
  var wordsMatchScore = wordsMatch(sq1, sq2);
  return wordsMatchScore / Math.max((0, _int.harmonicMean)(m, n), 1);
}
function exportStringMatchingCode() {
  return [_int.harmonicMean, phraseLike, phraseMatch, wordLike, wordsMatch].map(function (f) {
    return f + '';
  }).join('\n') + '\nvar _stringFormat = {harmonicMean, phraseLike, wordLike, wordsMatch};';
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.stringHashCode = stringHashCode;
function stringHashCode(st) {
  var hash = 0,
    i,
    chr;
  if (st.length === 0) return hash;
  for (i = 0; i < st.length; i++) {
    chr = st.charCodeAt(i);
    hash = (hash << 5) - hash + chr;
    hash |= 0; // Convert to 32bit integer
  }

  return hash;
}
function crc16($str) {
  var $CRC16_Lookup = [0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0];
  var $crc16 = 0xFFFF; // the CRC
  var $len = $str.length;
  var $t;
  for (var $i = 0; $i < $len; $i++) {
    $t = $crc16 >> 8 ^ $str.charCodeAt($i); // High byte Xor Message Byte to get index
    $crc16 = $crc16 << 8 & 0xffff ^ $CRC16_Lookup[$t]; // Update the CRC from table
  }

  $crc16 = $crc16.toString(16).toUpperCase();
  return $crc16;
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.MILLIS_PER_MINUTE = exports.MILLIS_PER_HOUR = exports.MILLIS_PER_DAY = exports.LOCAL_DATE_TIME_FORMAT = exports.LOCAL_DATE_FORMAT = exports.DATE_TIME_TOKEN_RGX = void 0;
exports.addDate = addDate;
exports.addMonth = addMonth;
exports.addMonthKeepDate = addMonthKeepDate;
exports.addMonthKeepDateTime = addMonthKeepDateTime;
exports.addQuarter = addQuarter;
exports.addWeek = addWeek;
exports.addYear = addYear;
exports.beginOfDay = beginOfDay;
exports.beginOfHour = beginOfHour;
exports.beginOfMinute = beginOfMinute;
exports.beginOfMonth = beginOfMonth;
exports.beginOfQuarter = beginOfQuarter;
exports.beginOfSecond = beginOfSecond;
exports.beginOfWeek = beginOfWeek;
exports.beginOfYear = beginOfYear;
exports.compareDate = compareDate;
exports.compareMonth = compareMonth;
exports.compareYear = compareYear;
exports.dayNames = exports.dateFormatList = exports.dateFormat2LocationList = void 0;
exports.daysInMonth = daysInMonth;
exports.ddmmyyyy = ddmmyyyy;
exports.formartDateString = formartDateString;
exports.formatDateString = formatDateString;
exports.formatDateTime = formatDateTime;
exports.formatTimeRange24 = formatTimeRange24;
exports.formatTokenRegex = void 0;
exports.getDefaultFirstDayOfWeek = getDefaultFirstDayOfWeek;
exports.getTimeRangeFromStep = getTimeRangeFromStep;
exports.implicitDate = implicitDate;
exports.monthNames = exports.language2LocalDateFormat = void 0;
exports.monthOfTwoDate = monthOfTwoDate;
exports.nextDate = nextDate;
exports.nextMonth = nextMonth;
exports.nextQuarter = nextQuarter;
exports.nextWeek = nextWeek;
exports.nextYear = nextYear;
exports.parseDateString = parseDateString;
exports.parseDateTime = parseDateTime;
exports.prevDate = prevDate;
exports.prevMonth = prevMonth;
exports.prevQuarter = prevQuarter;
exports.prevWeek = prevWeek;
exports.prevYear = prevYear;
exports.setDefaultFirstDayOfWeek = setDefaultFirstDayOfWeek;
exports.shortMonthNames = exports.shortDayNames = void 0;
exports.weekInYear = weekInYear;
exports.weekIndexOf = weekIndexOf;
exports.yyymmdd = yyymmdd;
var _stringFormat = __webpack_require__(22294);
var _int = __webpack_require__(65909);
var MILLIS_PER_DAY = 24 * 3600000;
exports.MILLIS_PER_DAY = MILLIS_PER_DAY;
var MILLIS_PER_HOUR = 3600000;
exports.MILLIS_PER_HOUR = MILLIS_PER_HOUR;
var MILLIS_PER_MINUTE = 60000;
exports.MILLIS_PER_MINUTE = MILLIS_PER_MINUTE;
var _default_first_day_of_week = 1;
function getDefaultFirstDayOfWeek() {
  return _default_first_day_of_week;
}
function setDefaultFirstDayOfWeek(value) {
  if (isNaN(value) || !isFinite(value)) return;
  value = Math.floor(value) % 7;
  _default_first_day_of_week = value;
}

/**
 *
 * @param {Date} date
 * @returns {String}
 */
function ddmmyyyy(date) {
  return formatDateTime(date, 'dd/MM/yyyy');
}
var language2LocalDateFormat = {
  "af-ZA": "yyyy/mm/dd",
  "am-ET": "d/m/yyyy",
  "ar-AE": "dd/mm/yyyy",
  "ar-BH": "dd/mm/yyyy",
  "ar-DZ": "dd-mm-yyyy",
  "ar-EG": "dd/mm/yyyy",
  "ar-IQ": "dd/mm/yyyy",
  "ar-JO": "dd/mm/yyyy",
  "ar-KW": "dd/mm/yyyy",
  "ar-LB": "dd/mm/yyyy",
  "ar-LY": "dd/mm/yyyy",
  "ar-MA": "dd-mm-yyyy",
  "ar-OM": "dd/mm/yyyy",
  "ar-QA": "dd/mm/yyyy",
  "ar-SA": "dd/mm/yy",
  "ar-SY": "dd/mm/yyyy",
  "ar-TN": "dd-mm-yyyy",
  "ar-YE": "dd/mm/yyyy",
  "arn-CL": "dd-mm-yyyy",
  "as-IN": "dd-mm-yyyy",
  "az-Cyrl-AZ": "dd.mm.yyyy",
  "az-Latn-AZ": "dd.mm.yyyy",
  "ba-RU": "dd.mm.yy",
  "be-BY": "dd.mm.yyyy",
  "bg-BG": "dd.m.yyyy",
  "bn-BD": "dd-mm-yy",
  "bn-IN": "dd-mm-yy",
  "bo-CN": "yyyy/m/d",
  "br-FR": "dd/mm/yyyy",
  "bs-Cyrl-BA": "d.m.yyyy",
  "bs-Latn-BA": "d.m.yyyy",
  "ca-ES": "dd/mm/yyyy",
  "co-FR": "dd/mm/yyyy",
  "cs-CZ": "d.m.yyyy",
  "cy-GB": "dd/mm/yyyy",
  "da-DK": "dd-mm-yyyy",
  "de-AT": "dd.mm.yyyy",
  "de-CH": "dd.mm.yyyy",
  "de-DE": "dd.mm.yyyy",
  "de-LI": "dd.mm.yyyy",
  "de-LU": "dd.mm.yyyy",
  "dsb-DE": "d. m. yyyy",
  "dv-MV": "dd/mm/yy",
  "el-GR": "d/m/yyyy",
  "en-029": "mm/dd/yyyy",
  "en-AU": "d/mm/yyyy",
  "en-BZ": "dd/mm/yyyy",
  "en-CA": "dd/mm/yyyy",
  "en-GB": "dd/mm/yyyy",
  "en-IE": "dd/mm/yyyy",
  "en-IN": "dd-mm-yyyy",
  "en-JM": "dd/mm/yyyy",
  "en-MY": "d/m/yyyy",
  "en-NZ": "d/mm/yyyy",
  "en-PH": "m/d/yyyy",
  "en-SG": "d/m/yyyy",
  "en-TT": "dd/mm/yyyy",
  "en-US": "m/d/yyyy",
  "en-ZA": "yyyy/mm/dd",
  "en-ZW": "m/d/yyyy",
  "es-AR": "dd/mm/yyyy",
  "es-BO": "dd/mm/yyyy",
  "es-CL": "dd-mm-yyyy",
  "es-CO": "dd/mm/yyyy",
  "es-CR": "dd/mm/yyyy",
  "es-DO": "dd/mm/yyyy",
  "es-EC": "dd/mm/yyyy",
  "es-ES": "dd/mm/yyyy",
  "es-GT": "dd/mm/yyyy",
  "es-HN": "dd/mm/yyyy",
  "es-MX": "dd/mm/yyyy",
  "es-NI": "dd/mm/yyyy",
  "es-PA": "mm/dd/yyyy",
  "es-PE": "dd/mm/yyyy",
  "es-PR": "dd/mm/yyyy",
  "es-PY": "dd/mm/yyyy",
  "es-SV": "dd/mm/yyyy",
  "es-US": "m/d/yyyy",
  "es-UY": "dd/mm/yyyy",
  "es-VE": "dd/mm/yyyy",
  "et-EE": "d.mm.yyyy",
  "eu-ES": "yyyy/mm/dd",
  "fa-IR": "mm/dd/yyyy",
  "fi-FI": "d.m.yyyy",
  "fil-PH": "m/d/yyyy",
  "fo-FO": "dd-mm-yyyy",
  "fr-BE": "d/mm/yyyy",
  "fr-CA": "yyyy-mm-dd",
  "fr-CH": "dd.mm.yyyy",
  "fr-FR": "dd/mm/yyyy",
  "fr-LU": "dd/mm/yyyy",
  "fr-MC": "dd/mm/yyyy",
  "fy-NL": "d-m-yyyy",
  "ga-IE": "dd/mm/yyyy",
  "gd-GB": "dd/mm/yyyy",
  "gl-ES": "dd/mm/yy",
  "gsw-FR": "dd/mm/yyyy",
  "gu-IN": "dd-mm-yy",
  "ha-Latn-NG": "d/m/yyyy",
  "he-IL": "dd/mm/yyyy",
  "hi-IN": "dd-mm-yyyy",
  "hr-BA": "d.m.yyyy.",
  "hr-HR": "d.m.yyyy",
  "hsb-DE": "d. m. yyyy",
  "hu-HU": "yyyy. mm. dd.",
  "hy-AM": "dd.mm.yyyy",
  "id-ID": "dd/mm/yyyy",
  "ig-NG": "d/m/yyyy",
  "ii-CN": "yyyy/m/d",
  "is-IS": "d.m.yyyy",
  "it-CH": "dd.mm.yyyy",
  "it-IT": "dd/mm/yyyy",
  "iu-Cans-CA": "d/m/yyyy",
  "iu-Latn-CA": "d/mm/yyyy",
  "ja-JP": "yyyy/mm/dd",
  "ka-GE": "dd.mm.yyyy",
  "kk-KZ": "dd.mm.yyyy",
  "kl-GL": "dd-mm-yyyy",
  "km-KH": "yyyy-mm-dd",
  "kn-IN": "dd-mm-yy",
  "ko-KR": "yyyy-mm-dd",
  "kok-IN": "dd-mm-yyyy",
  "ky-KG": "dd.mm.yy",
  "lb-LU": "dd/mm/yyyy",
  "lo-LA": "dd/mm/yyyy",
  "lt-LT": "yyyy.mm.dd",
  "lv-LV": "yyyy.mm.dd.",
  "mi-NZ": "dd/mm/yyyy",
  "mk-MK": "dd.mm.yyyy",
  "ml-IN": "dd-mm-yy",
  "mn-MN": "yy.mm.dd",
  "mn-Mong-CN": "yyyy/m/d",
  "moh-CA": "m/d/yyyy",
  "mr-IN": "dd-mm-yyyy",
  "ms-BN": "dd/mm/yyyy",
  "ms-MY": "dd/mm/yyyy",
  "mt-MT": "dd/mm/yyyy",
  "nb-NO": "dd.mm.yyyy",
  "ne-NP": "m/d/yyyy",
  "nl-BE": "d/mm/yyyy",
  "nl-NL": "d-m-yyyy",
  "nn-NO": "dd.mm.yyyy",
  "nso-ZA": "yyyy/mm/dd",
  "oc-FR": "dd/mm/yyyy",
  "or-IN": "dd-mm-yy",
  "pa-IN": "dd-mm-yy",
  "pl-PL": "yyyy-mm-dd",
  "prs-AF": "dd/mm/yy",
  "ps-AF": "dd/mm/yy",
  "pt-BR": "d/m/yyyy",
  "pt-PT": "dd-mm-yyyy",
  "qut-GT": "dd/mm/yyyy",
  "quz-BO": "dd/mm/yyyy",
  "quz-EC": "dd/mm/yyyy",
  "quz-PE": "dd/mm/yyyy",
  "rm-CH": "dd/mm/yyyy",
  "ro-RO": "dd.mm.yyyy",
  "ru-RU": "dd.mm.yyyy",
  "rw-RW": "m/d/yyyy",
  "sa-IN": "dd-mm-yyyy",
  "sah-RU": "mm.dd.yyyy",
  "se-FI": "d.m.yyyy",
  "se-NO": "dd.mm.yyyy",
  "se-SE": "yyyy-mm-dd",
  "si-LK": "yyyy-mm-dd",
  "sk-SK": "d. m. yyyy",
  "sl-SI": "d.m.yyyy",
  "sma-NO": "dd.mm.yyyy",
  "sma-SE": "yyyy-mm-dd",
  "smj-NO": "dd.mm.yyyy",
  "smj-SE": "yyyy-mm-dd",
  "smn-FI": "d.m.yyyy",
  "sms-FI": "d.m.yyyy",
  "sq-AL": "yyyy-mm-dd",
  "sr-Cyrl-BA": "d.m.yyyy",
  "sr-Cyrl-CS": "d.m.yyyy",
  "sr-Cyrl-ME": "d.m.yyyy",
  "sr-Cyrl-RS": "d.m.yyyy",
  "sr-Latn-BA": "d.m.yyyy",
  "sr-Latn-CS": "d.m.yyyy",
  "sr-Latn-ME": "d.m.yyyy",
  "sr-Latn-RS": "d.m.yyyy",
  "sv-FI": "d.m.yyyy",
  "sv-SE": "yyyy-mm-dd",
  "sw-KE": "m/d/yyyy",
  "syr-SY": "dd/mm/yyyy",
  "ta-IN": "dd-mm-yyyy",
  "te-IN": "dd-mm-yy",
  "tg-Cyrl-TJ": "dd.mm.yy",
  "th-TH": "d/m/yyyy",
  "tk-TM": "dd.mm.yy",
  "tn-ZA": "yyyy/mm/dd",
  "tr-TR": "dd.mm.yyyy",
  "tt-RU": "dd.mm.yyyy",
  "tzm-Latn-DZ": "dd-mm-yyyy",
  "ug-CN": "yyyy-m-d",
  "uk-UA": "dd.mm.yyyy",
  "ur-PK": "dd/mm/yyyy",
  "uz-Cyrl-UZ": "dd.mm.yyyy",
  "uz-Latn-UZ": "dd/mm yyyy",
  "vi-VN": "dd/mm/yyyy",
  "wo-SN": "dd/mm/yyyy",
  "xh-ZA": "yyyy/mm/dd",
  "yo-NG": "d/m/yyyy",
  "zh-CN": "yyyy/m/d",
  "zh-HK": "d/m/yyyy",
  "zh-MO": "d/m/yyyy",
  "zh-SG": "d/m/yyyy",
  "zh-TW": "yyyy/m/d",
  "zu-ZA": "yyyy/mm/dd"
};
exports.language2LocalDateFormat = language2LocalDateFormat;
var dateFormat2LocationList = Object.keys(language2LocalDateFormat).reduce(function (ac, cr) {
  ac[language2LocalDateFormat[cr]] = ac[language2LocalDateFormat[cr]] || [];
  ac[language2LocalDateFormat[cr]].push(cr);
  return ac;
}, {});
exports.dateFormat2LocationList = dateFormat2LocationList;
var dateFormatList = Object.keys(dateFormat2LocationList);

/**
 *
 * @param {Date} date
 * @returns {String}
 */
exports.dateFormatList = dateFormatList;
function yyymmdd(date) {
  return formatDateTime(date, 'yyyy/MM/dd');
}
var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
exports.dayNames = dayNames;
var shortDayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
exports.shortDayNames = shortDayNames;
var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
exports.monthNames = monthNames;
var shortMonthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
exports.shortMonthNames = shortMonthNames;
var formatTokenRegex = /([,.\-\/])|([a-zA-Z0-9]+)/g; //more
exports.formatTokenRegex = formatTokenRegex;
var DATE_TIME_TOKEN_RGX = /([^\s.\/:\-,]+)|([.\/:\-,]+)/i;

/**
 *
 * @param {Date} date
 * @param {String=} format
 * @returns {String}
 */
exports.DATE_TIME_TOKEN_RGX = DATE_TIME_TOKEN_RGX;
function formatDateString(date, format) {
  format = format || 'dd/mm/yyyy';
  var dt = date.getDate();
  var day = date.getDay();
  var month = date.getMonth();
  var year = date.getFullYear();
  return format.replace(formatTokenRegex, function (x) {
    switch (x) {
      case "dddd":
        return dayNames[day];
      case "ddd":
        return shortDayNames[day];
      case "dd":
        return dt < 10 ? '0' + dt : '' + dt;
      case "d":
        return '' + dt;
      case "mmmm":
        return monthNames[month];
      case "mmm":
        return shortMonthNames[month];
      case "mm":
        return month + 1 < 10 ? '0' + (month + 1) : '' + (month + 1);
      case "m":
        return '' + (month + 1);
      case 'yy':
        return (year + '').match(/..$/)[0];
      case 'yyyy':
        return year + '';
      default:
        return x;
    }
  });
}
var LOCAL_DATE_FORMAT = function () {
  var d = new Date(2021, 4, 4);
  var s = d.toLocaleDateString();
  var fm = s.replace(new RegExp(DATE_TIME_TOKEN_RGX.source, 'g'), function (token) {
    switch (token) {
      case '2021':
        return 'yyyy';
      case '5':
        return 'M';
      case '05':
        return 'MM';
      case '4':
        return 'd';
      case '04':
        return 'dd';
      default:
        return token;
    }
  });
  return fm;
}();
exports.LOCAL_DATE_FORMAT = LOCAL_DATE_FORMAT;
var LOCAL_DATE_TIME_FORMAT = function () {
  var d = new Date(2021, 4, 4, 6, 7, 3);
  var s = d.toLocaleString();
  var fm = s.replace(new RegExp(DATE_TIME_TOKEN_RGX.source, 'g'), function (token) {
    switch (token) {
      case '2021':
        return 'yyyy';
      case '5':
        return 'M';
      case '05':
        return 'MM';
      case '4':
        return 'd';
      case '04':
        return 'dd';
      case '06':
        if (new Date(2021, 4, 4, 18, 7, 3).toLocaleString().indexOf(18) >= 0) return 'HH';
        return 'hh';
      case '6':
        return 'h';
      case '07':
        return 'mm';
      case '7':
        return 'm';
      case '03':
        return 'ss';
      case '3':
        return 's';
      case 'AM':
        return 'a';
      default:
        return token;
    }
  });
  return fm;
}();
exports.LOCAL_DATE_TIME_FORMAT = LOCAL_DATE_TIME_FORMAT;
function formartDateString() {
  window.ALogger.warn("spelled incorrectly: formartDateString");
  return formatDateString.apply(null, arguments);
}

/**
 *
 * @param {String} text
 * @param {String} format
 * @returns {Date}
 */
function parseDateString(text, format) {
  text = (0, _stringFormat.nonAccentVietnamese)(text).toLowerCase();
  format = (0, _stringFormat.nonAccentVietnamese)(format).toLowerCase();
  var textTokens = text.match(formatTokenRegex) || [];
  var formatTokens = format.match(formatTokenRegex) || [];
  var year = new Date().getFullYear();
  var month = 0;
  var day = 1;
  var n = Math.min(textTokens.length, formatTokens.length);
  var textToken;
  var formatToken;
  for (var i = 0; i < n; ++i) {
    textToken = textTokens[i];
    formatToken = formatTokens[i];
    switch (formatToken) {
      case "dd":
        day = parseInt(textToken);
        break;
      case "d":
        day = parseInt(textToken);
        break;
      case "mmmm":
        month = monthNames.indexOf(textToken.substr(0, 1).toUpperCase() + textToken.substr(1).toLowerCase());
        break;
      case "mmm":
        month = shortMonthNames.indexOf(textToken.substr(0, 1).toUpperCase() + textToken.substr(1).toLowerCase());
        break;
      case "mm":
      case 'MM':
        month = parseInt(textToken) - 1;
        break;
      case "m":
      case 'M':
        month = parseInt(textToken) - 1;
        break;
      case 'yy':
        year = Math.floor(new Date().getFullYear() / 100) * 100 + parseInt(textToken);
        break;
      case 'yyyy':
        year = parseInt(textToken);
        break;
      default:
        if (textToken !== formatToken) throw new Error('Unexpected token ' + textToken);
    }
  }
  if (isNaN(year)) throw new Error('Invalid year');
  if (isNaN(month) && month !== -1) {
    throw new Error('Invalid month');
  } else {
    month = Math.max(0, Math.min(11, month));
  }
  if (!isNaN(day)) {
    day = Math.max(1, Math.min(31, day));
    if (!isNaN(month)) {
      day = Math.min(daysInMonth(2000, month), day);
      if (!isNaN(year)) day = Math.min(daysInMonth(year, month), day);
    }
  } else {
    throw new Error('Invalid day');
  }
  return new Date(year, month, day);
}

/***
 *
 * @param date
 * @param {number} delta - must be a integer
 * @param {boolean=} gmt
 * @returns {Date}
 */
function addDate(date, delta, gmt) {
  delta = Math.round(delta);
  var res = beginOfDay(date, gmt);
  if (gmt) {
    res.setUTCDate(date.getUTCDate() + delta);
  } else {
    res.setDate(date.getDate() + delta);
  }
  return beginOfDay(res, gmt);
}

/**
 * @param {Date} date
 * @param {boolean=} gmt
 * @return {Date}
 */
function prevDate(date, gmt) {
  return addDate(date, -1, gmt);
}

/**
 * @param {Date} date
 * @param {boolean=} gmt
 * @return {Date}
 */
function nextDate(date, gmt) {
  return addDate(date, 1, gmt);
}

/****
 *
 * @param {Date} date
 * @param {boolean=} gmt
 * @param {number=} startDayOfWeek
 * @returns {number}
 */
function weekIndexOf(date, gmt, startDayOfWeek) {
  if (typeof startDayOfWeek !== "number") startDayOfWeek = getDefaultFirstDayOfWeek();
  var by = beginOfYear(date, gmt);
  var byw = beginOfWeek(by, gmt, startDayOfWeek);
  return Math.floor(compareDate(date, byw, gmt) / 7);
}

/***
 *
 * @param {number} year
 * @param {number} weekIdx
 * @param {boolean=} gmt
 * @param {number=} startDayOfWeek
 * @returns {Date}
 */
function weekInYear(year, weekIdx, gmt, startDayOfWeek) {
  if (typeof startDayOfWeek !== "number") startDayOfWeek = getDefaultFirstDayOfWeek();
  var bg = new Date(year, 0, 1, 0, 0, 0, 0);
  if (gmt) bg.setUTCHours(0);
  var byw = beginOfWeek(bg, gmt, startDayOfWeek);
  if (weekIdx === 0) return bg;
  return new Date(byw.getTime() + weekIdx * 7 * MILLIS_PER_DAY);
}

/**
 * @param {Date} date
 * @param {Boolean=} gmt default:false
 * @return {Date} date at xx:xx:xx:00
 */
function beginOfSecond(date, gmt) {
  var res = new Date(date.getTime());
  if (gmt) res.setUTCMilliseconds(0);else res.setMilliseconds(0);
  return res;
}

/**
 * @param {Date} date
 * @param {Boolean=} gmt default:false
 * @return {Date} date at xx:xx:00
 */
function beginOfMinute(date, gmt) {
  var res = new Date(date.getTime());
  if (gmt) res.setUTCSeconds(0, 0);else res.setSeconds(0, 0);
  return res;
}

/**
 * @param {Date} date
 * @param {Boolean=} gmt default:false
 * @return {Date} date at 00:00
 */
function beginOfDay(date, gmt) {
  var res = new Date(date.getTime());
  if (gmt) res.setUTCHours(0, 0, 0, 0);else res.setHours(0, 0, 0, 0);
  return res;
}

/**
 * @param {Date} date
 * @param {Boolean=} gmt default:false
 * @return {Date} date at xx:00
 */
function beginOfHour(date, gmt) {
  var res = new Date(date.getTime());
  if (gmt) res.setUTCMinutes(0, 0, 0);else res.setMinutes(0, 0, 0);
  return res;
}

/**
 * @param {Date} date
 * @param {Boolean=} gmt default:false
 * @param {number=} startDayOfWeek default:0
 * @return {Date} date at 00:00
 */
function beginOfWeek(date, gmt, startDayOfWeek) {
  if (typeof startDayOfWeek !== "number") startDayOfWeek = getDefaultFirstDayOfWeek();
  var res = beginOfDay(date, gmt);
  if (isNaN(res.getTime())) return res;
  while ((gmt ? res.getUTCDay() : res.getDay()) !== startDayOfWeek) {
    res = prevDate(res, gmt);
  }
  return res;
}

/***
 *
 * @param {Date} date
 * @param {number} delta
 * @param {boolean=} gmt
 */
function addWeek(date, delta, gmt) {
  date = beginOfWeek(date, gmt);
  delta = Math.round(delta);
  return addDate(date, delta * 7, gmt);
}

/****
 *
 * @param {Date} date
 * @param {boolean=} gmt
 * @returns {Date}
 */
function nextWeek(date, gmt) {
  return addWeek(date, 1, gmt);
}

/****
 *
 * @param {Date} date
 * @param {boolean=} gmt
 * @returns {Date}
 */
function prevWeek(date, gmt) {
  return addWeek(date, -1, gmt);
}

/**
 * @param {Date} date
 * @param {Boolean=} gmt default:false
 * @return {Date} date at 00:00 AM
 */
function beginOfMonth(date, gmt) {
  var m = gmt ? date.getUTCMonth() : date.getMonth();
  var y = gmt ? date.getUTCFullYear() : date.getFullYear();
  var res = new Date();
  if (gmt) res.setUTCFullYear(y, m, 1);else res.setFullYear(y, m, 1);
  return beginOfDay(res, gmt);
}

/**
 * @param {Date} date
 * @param {Boolean=} gmt default:false
 * @return {Date} date at 00:00 AM
 */
function beginOfQuarter(date, gmt) {
  var y = gmt ? date.getUTCFullYear() : date.getFullYear();
  var m = gmt ? date.getUTCMonth() : date.getMonth();
  m = Math.floor(m / 3) * 3;
  var res = new Date();
  if (gmt) res.setUTCFullYear(y, m, 1);else res.setFullYear(y, m, 1);
  return beginOfDay(res, gmt);
}

/***
 *
 * @param {Date} date
 * @param {number=} delta
 * @param {boolean=} gmt
 */
function addQuarter(date, delta, gmt) {
  delta = Math.round(delta);
  date = beginOfQuarter(date, gmt);
  return addMonth(date, delta * 3, gmt);
}

/***
 *
 * @param {Date} date
 * @param {boolean=} gmt
 * @returns {Date}
 */
function nextQuarter(date, gmt) {
  date = beginOfQuarter(date);
  return nextMonth(nextMonth(nextMonth(date, gmt), gmt), gmt);
}

/***
 *
 * @param {Date} date
 * @param {boolean=} gmt
 * @returns {Date}
 */
function prevQuarter(date, gmt) {
  date = beginOfQuarter(date, gmt);
  return prevMonth(prevMonth(prevMonth(date, gmt), gmt), gmt);
}

/**
 * @param {Date} date
 * @param {Boolean=} gmt default:false
 * @return {Date} date at 00:00 AM
 */
function beginOfYear(date, gmt) {
  var y = gmt ? date.getUTCFullYear() : date.getFullYear();
  var res = new Date();
  if (gmt) res.setUTCFullYear(y, 0, 1);else res.setFullYear(y, 0, 1);
  return beginOfDay(res, gmt);
}

/**
 * @param {Date} date
 * @param {number} delta
 * @param {Boolean=} gmt default:false
 * @return {Date} date at 00:00 AM
 */
function addYear(date, delta, gmt) {
  delta = Math.round(delta);
  var y = gmt ? date.getUTCFullYear() : date.getFullYear();
  var res = new Date();
  if (gmt) res.setUTCFullYear(y + delta, 0, 1);else res.setFullYear(y + delta, 0, 1);
  return beginOfDay(res, gmt);
}

/**
 * @param {Date} date
 * @param {Boolean=} gmt default:false
 * @return {Date} date at 00:00 AM
 */
function nextYear(date, gmt) {
  return addYear(date, 1, gmt);
}

/**
 * @param {Date} date
 * @param {Boolean=} gmt default:false
 * @return {Date} date at 00:00 AM
 */
function prevYear(date, gmt) {
  return addYear(date, -1, gmt);
}

/**
 * @param {Date} date0
 * @param {Date} date1
 * @param {Boolean=} gmt default:false
 * @return {number}
 */
function compareDate(date0, date1, gmt) {
  date0 = beginOfDay(date0, gmt);
  date1 = beginOfDay(date1, gmt);
  //Date(1975, 5, 12) has 1 hour extend
  return Math.floor((date0.getTime() - date1.getTime()) / 86400000);
}

/**
 * @param {Date} date0
 * @param {Date} date1
 * @param {Boolean=} gmt default:false
 * @return {number}
 */

function compareMonth(date0, date1, gmt) {
  var m0 = gmt ? date0.getUTCMonth() : date0.getMonth();
  var y0 = gmt ? date0.getUTCFullYear() : date0.getFullYear();
  var m1 = gmt ? date1.getUTCMonth() : date1.getMonth();
  var y1 = gmt ? date1.getUTCFullYear() : date1.getFullYear();
  return (y0 - y1) * 12 + (m0 - m1);
}

/***
 *
 * @param {Date} date0
 * @param {Date} date1
 * @param {boolean=}gmt
 * @returns {number}
 */
function compareYear(date0, date1, gmt) {
  var y0 = gmt ? date0.getUTCFullYear() : date0.getFullYear();
  var y1 = gmt ? date1.getUTCFullYear() : date1.getFullYear();
  return y0 - y1;
}

/**
 *
 * @param {Date} date
 * @param {number} delta
 * @param {boolean=} gmt
 * @returns {Date}
 */
function addMonth(date, delta, gmt) {
  var res = beginOfMonth(date, gmt);
  if (gmt) {
    res.setUTCMonth(res.getUTCMonth() + delta);
  } else {
    res.setMonth(res.getMonth() + delta);
  }
  return beginOfDay(res, gmt);
}

/**
 *
 * @param {Date} date
 * @param {number} delta
 * @param {boolean=} gmt
 * @returns {Date}
 */
function addMonthKeepDate(date, delta, gmt) {
  var res = addMonth(date, delta, gmt);
  var dateNum = gmt ? date.getUTCDate() : date.getDate();
  var dim = daysInMonth(gmt ? date.getUTCFullYear() : date.getFullYear(), gmt ? date.getUTCFullYear() : date.getFullYear());
  dateNum = Math.min(dateNum, dim);
  res = addDate(res, dateNum - 1, gmt);
  return res;
}

/**
 *
 * @param {Date} date
 * @param {number} delta
 * @param {boolean=} gmt
 * @returns {Date}
 */
function addMonthKeepDateTime(date, delta, gmt) {
  var dayOffset = date.getTime() - beginOfDay(date, gmt).getTime();
  var res = addMonthKeepDate(date, delta, gmt);
  res = new Date(res.getTime() + dayOffset);
  return res;
}

/**
 *
 * @param {Date} date
 * @param {boolean=} gmt
 * @returns {Date}
 */
function nextMonth(date, gmt) {
  return addMonth(date, 1, gmt);
}

/**
 *
 * @param {Date} date
 * @param {boolean=} gmt
 * @returns {Date}
 */
function prevMonth(date, gmt) {
  return addMonth(date, -1, gmt);
}

/**
 * note:argument will be converted to 00h00
 * @param date0
 * @param date1
 */
function monthOfTwoDate(date0, date1) {
  date0 = beginOfDay(date0);
  date1 = beginOfDay(date1);
  var temp;
  var sign = 1;
  var res = 0;
  var cmdv = compareDate(date0, date1);
  if (cmdv > 0) {
    sign = -1;
    temp = date0;
    date0 = date1;
    date1 = temp;
  } else if (cmdv === 0) return 0;
  var d1 = date0.getDate();
  var d2 = date1.getDate();
  var y0 = date0.getFullYear();
  var y1 = date1.getFullYear();
  var m0 = date0.getMonth();
  var m1 = date1.getMonth();
  var nextMD0;
  if (d1 <= d2) {
    res += (y1 - y0) * 12 + (m1 - m0);
    res += 2 * (d2 - d1) / (daysInMonth(y0, m0) + daysInMonth(y1, m1));
  } else {
    res += (y1 - y0) * 12 + (m1 - m0) - 1;
    nextMD0 = beginOfMonth(nextMonth(date0));
    res += 2 * (compareDate(nextMD0, date0) + compareDate(date1, beginOfMonth(date1))) / (daysInMonth(y0, m0) + daysInMonth(y1, m1));
  }
  return sign * res;
}

/**
 *
 * @param {Number} year
 * @param {Number} month
 * @returns {Number}
 */
function daysInMonth(year, month) {
  var start = new Date(year, month, 1);
  var end = nextMonth(start);
  return compareDate(end, start);
}

/****
 *
 * @param text
 * @param format support d, M, Y, Q
 * @param {*=} opt
 * @returns {Date}
 */
function parseDateTime(text, format, opt) {
  opt = Object.assign({
    startDayOfWeek: 0
  }, opt);
  var tokenMap = {};
  var txtRgx = new RegExp(DATE_TIME_TOKEN_RGX.source, 'g');
  var fmRgx = new RegExp(DATE_TIME_TOKEN_RGX.source, 'g');
  var tkMatched, fmMatched;
  tkMatched = txtRgx.exec(text);
  fmMatched = fmRgx.exec(format);
  var tkText, fmText;
  while (tkMatched && fmMatched) {
    tkText = tkMatched[0];
    fmText = fmMatched[0];
    switch (fmText) {
      case 'd':
      case 'dd':
        tokenMap.day = parseInt(tkText, 10);
        break;
      case 'w':
      case 'ww':
        tokenMap.week = parseInt(tkText, 10) - 1;
        break;
      case 'M':
      case 'MM':
        tokenMap.month = parseInt(tkText, 10) - 1;
        break;
      case 'y':
      case 'yyyy':
        tokenMap.year = parseInt(tkText, 10);
        break;
      case 'h':
      case 'hh':
      case 'H':
      case 'HH':
        tokenMap.hour = parseInt(tkText, 10);
        break;
      case 'm':
      case 'mm':
        tokenMap.minute = parseInt(tkText, 10);
        break;
      case 'a':
        if (tkText === 'AM' || tkText === 'PM') tokenMap.period = tkText;else throw new Error('Invalid period(a):' + tkText);
        break;
      case 'Q':
      case 'QQ':
        tokenMap.month = (parseInt(tkText, 10) - 1) * 3;
        break;
      default:
        if (tkText !== fmText) {
          throw new Error('Unexpected token ' + JSON.stringify(tkText) + ' at ' + tkMatched.index + ', expected ' + fmText);
        }
    }
    tkMatched = txtRgx.exec(text);
    fmMatched = fmRgx.exec(format);
  }
  if (tokenMap.period) {
    if (tokenMap.period === 'AM' && tokenMap.hour === 12) tokenMap.hour = 0;else if (tokenMap.period === "PM" && tokenMap.hour < 12) tokenMap.hour += 12;
  }
  var paramNames = ['year', 'month', 'day', 'hour', 'minute', 'second'];
  var paramShortNames = ['y', 'M', 'd', 'h', 'm', 's'];
  var paramDefaultValues = [new Date().getFullYear(), 0, 1, 0, 0, 0];
  var resParam = paramDefaultValues.slice();
  var paramList = paramNames.reduce(function (ac, cr, i) {
    var sN = paramShortNames[i];
    if (cr in tokenMap) {
      ac += sN;
    }
    return ac;
  }, '');
  var paramName;
  for (var i = 0; i < paramNames.length; ++i) {
    paramName = paramNames[i];
    resParam[i] = tokenMap[paramName] === undefined ? paramDefaultValues[i] : tokenMap[paramName];
  }
  var weekDate;
  if ('week' in tokenMap && !isNaN(tokenMap.week)) {
    weekDate = weekInYear(resParam[0], tokenMap.week, false, opt.startDayOfWeek);
    resParam[1] = weekDate.getMonth();
    resParam[2] = weekDate.getDate();
  }
  switch (paramList) {
    case 'hm':
      resParam.splice(1, 2, new Date().getMonth(), new Date().getDate());
      break;
  }
  return new Date(resParam[0], resParam[1], resParam[2], resParam[3], resParam[4], resParam[5]);
}

/***
 *
 * @param {Date} date
 * @param {string} format
 * @param {*=} opt
 * @return {string}
 */
function formatDateTime(date, format, opt) {
  opt = Object.assign({
    startDayOfWeek: 0
  }, opt);
  var fmRgx = new RegExp(DATE_TIME_TOKEN_RGX.source, 'g');
  return format.replace(fmRgx, function (s) {
    var res = s;
    switch (s) {
      case 'd':
      case 'dd':
        res = (0, _int.integerZeroPadding)(date.getDate(), s.length);
        break;
      case 'w':
      case 'ww':
        res = (0, _int.integerZeroPadding)(weekIndexOf(date, false, opt.startDayOfWeek || getDefaultFirstDayOfWeek()) + 1, s.length);
        break;
      case 'M':
      case 'MM':
        res = (0, _int.integerZeroPadding)(date.getMonth() + 1, s.length);
        break;
      case 'MMM':
        res = shortMonthNames[date.getMonth()];
        break;
      case 'MMMM':
        res = monthNames[date.getMonth()];
        break;
      case 'y':
      case 'yyyy':
        res = (0, _int.integerZeroPadding)(date.getFullYear(), s.length);
        break;
      case 'yy':
        res = (0, _int.integerZeroPadding)(date.getFullYear() % 100, s.length);
        break;
      case 'a':
        res = date.getHours() < 12 ? "AM" : "PM";
        break;
      case "H":
      case 'HH':
        res = (0, _int.integerZeroPadding)(date.getHours(), s.length);
        break;
      case 'h':
      case 'hh':
        res = (0, _int.integerZeroPadding)(1 + (date.getHours() - 1) % 12, s.length);
        break;
      case 'm':
      case 'mm':
        res = (0, _int.integerZeroPadding)(date.getMinutes(), s.length);
        break;
      case 's':
      case 'ss':
        res = (0, _int.integerZeroPadding)(date.getSeconds(), s.length);
        break;
      case 'Q':
      case 'QQ':
        res = (0, _int.integerZeroPadding)(Math.floor(date.getMonth() / 3) + 1, s.length);
        break;
    }
    return res;
  });
}
var number = [/[+-]?\d+$/, function (matched) {
  return new Date(parseInt(matched[0]));
}];
var reISO = [/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/, function (matched) {
  return new Date(matched[0]);
}];
var reMsAjax = [/^\/Date\((d|-|.*)\)[\/|\\]$/, function (matched) {
  return new Date(parseInt(matched[1]));
}];
var reString = [/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s+([a-zA-Z]{3})\s+[\d\s:]+GMT[\d+]+\s*\([^)]+\)$/, function (matched) {
  return new Date(matched[0]);
}];
function implicitDate(o) {
  var res = null;
  if (o instanceof Date) {
    res = new Date(o.getTime());
  } else if (typeof o === "number") {
    res = new Date(o);
  } else if (typeof o === 'string') {
    [reString, reISO, reMsAjax, number].some(function (rule) {
      var matched = o.match(rule[0]);
      if (matched) {
        res = rule[1](matched);
        return true;
      }
      return false;
    });
  }
  if (res && isNaN(res.getTime())) res = null;
  return res;
}

/***
 *
 * @param {null|{dayOffset?: number, duration?: number}}range
 * @param opt
 */
function formatTimeRange24(range, opt) {
  opt = Object.assign({
    nextDayText: !window.systemconfig || typeof window.systemconfig.language !== "string" || window.systemconfig.language.toLowerCase().indexOf('vn') >= 0 || window.systemconfig.language.toLowerCase().indexOf('vi') >= 0 ? 'Hôm sau' : 'Next day'
  }, opt || {});
  range = range || {};
  var m0 = Math.floor(range.dayOffset / MILLIS_PER_MINUTE);
  var h0 = Math.floor(m0 / 60);
  var d0 = Math.floor(h0 / 24);
  m0 = m0 % 60;
  h0 = h0 % 24;
  var endOffset = range.dayOffset + range.duration;
  var m1 = Math.floor(endOffset / MILLIS_PER_MINUTE);
  var h1 = Math.floor(m1 / 60);
  var d1 = Math.floor(h1 / 24);
  m1 = m1 % 60;
  h1 = h1 % 24;
  var res = h0 + ':' + (0, _int.integerZeroPadding)(m0, 2) + ' - ' + h1 + ':' + (0, _int.integerZeroPadding)(m1, 2);
  if (d0 !== d1) res += ' (' + opt.nextDayText + ')';
  return res;
}

/**
 *
 * @param {Date} date
 * @param type
 * @param {number} n
 * @returns {{expireddate: Date, startdate: Date}}
 */
function getTimeRangeFromStep(date, type, n) {
  var startDate, expiredDate;
  var initHandlers = {
    month: function month(x) {
      return beginOfMonth(x);
    },
    quarter: function quarter(x) {
      return beginOfQuarter(x);
    },
    year: function year(x) {
      return beginOfYear(x);
    }
  };
  var addHandlers = {
    month: function month(x, d) {
      return addMonth(x, d);
    },
    quarter: function quarter(x, d) {
      return addQuarter(x, d);
    },
    year: function year(x, d) {
      return addYear(x, d);
    }
  };
  startDate = initHandlers[type](addHandlers[type](date, n));
  expiredDate = addHandlers[type](startDate, 1);
  return {
    startdate: startDate,
    expireddate: expiredDate
  };
}

/***/ }),

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

"use strict";


exports.byteLength = byteLength;
exports.toByteArray = toByteArray;
exports.fromByteArray = fromByteArray;
var lookup = [];
var revLookup = [];
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
for (var i = 0, len = code.length; i < len; ++i) {
  lookup[i] = code[i];
  revLookup[code.charCodeAt(i)] = i;
}

// Support decoding URL-safe base64 strings, as Node.js does.
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
revLookup['-'.charCodeAt(0)] = 62;
revLookup['_'.charCodeAt(0)] = 63;
function getLens(b64) {
  var len = b64.length;
  if (len % 4 > 0) {
    throw new Error('Invalid string. Length must be a multiple of 4');
  }

  // Trim off extra bytes after placeholder bytes are found
  // See: https://github.com/beatgammit/base64-js/issues/42
  var validLen = b64.indexOf('=');
  if (validLen === -1) validLen = len;
  var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;
  return [validLen, placeHoldersLen];
}

// base64 is 4/3 + up to two characters of the original data
function byteLength(b64) {
  var lens = getLens(b64);
  var validLen = lens[0];
  var placeHoldersLen = lens[1];
  return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
}
function _byteLength(b64, validLen, placeHoldersLen) {
  return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
}
function toByteArray(b64) {
  var tmp;
  var lens = getLens(b64);
  var validLen = lens[0];
  var placeHoldersLen = lens[1];
  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));
  var curByte = 0;

  // if there are placeholders, only get up to the last complete 4 chars
  var len = placeHoldersLen > 0 ? validLen - 4 : validLen;
  var i;
  for (i = 0; i < len; i += 4) {
    tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];
    arr[curByte++] = tmp >> 16 & 0xFF;
    arr[curByte++] = tmp >> 8 & 0xFF;
    arr[curByte++] = tmp & 0xFF;
  }
  if (placeHoldersLen === 2) {
    tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;
    arr[curByte++] = tmp & 0xFF;
  }
  if (placeHoldersLen === 1) {
    tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;
    arr[curByte++] = tmp >> 8 & 0xFF;
    arr[curByte++] = tmp & 0xFF;
  }
  return arr;
}
function tripletToBase64(num) {
  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];
}
function encodeChunk(uint8, start, end) {
  var tmp;
  var output = [];
  for (var i = start; i < end; i += 3) {
    tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);
    output.push(tripletToBase64(tmp));
  }
  return output.join('');
}
function fromByteArray(uint8) {
  var tmp;
  var len = uint8.length;
  var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
  var parts = [];
  var maxChunkLength = 16383; // must be multiple of 3

  // go through the array every three bytes, we'll deal with trailing stuff later
  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
    parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));
  }

  // pad the end with zeros, but make sure to not forget the extra bytes
  if (extraBytes === 1) {
    tmp = uint8[len - 1];
    parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');
  } else if (extraBytes === 2) {
    tmp = (uint8[len - 2] << 8) + uint8[len - 1];
    parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');
  }
  return parts.join('');
}

/***/ }),

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

"use strict";


var _require = __webpack_require__(80365),
  Buffer = _require.Buffer;
var symbol = Symbol["for"]('BufferList');
function BufferList(buf) {
  if (!(this instanceof BufferList)) {
    return new BufferList(buf);
  }
  BufferList._init.call(this, buf);
}
BufferList._init = function _init(buf) {
  Object.defineProperty(this, symbol, {
    value: true
  });
  this._bufs = [];
  this.length = 0;
  if (buf) {
    this.append(buf);
  }
};
BufferList.prototype._new = function _new(buf) {
  return new BufferList(buf);
};
BufferList.prototype._offset = function _offset(offset) {
  if (offset === 0) {
    return [0, 0];
  }
  var tot = 0;
  for (var i = 0; i < this._bufs.length; i++) {
    var _t = tot + this._bufs[i].length;
    if (offset < _t || i === this._bufs.length - 1) {
      return [i, offset - tot];
    }
    tot = _t;
  }
};
BufferList.prototype._reverseOffset = function (blOffset) {
  var bufferId = blOffset[0];
  var offset = blOffset[1];
  for (var i = 0; i < bufferId; i++) {
    offset += this._bufs[i].length;
  }
  return offset;
};
BufferList.prototype.get = function get(index) {
  if (index > this.length || index < 0) {
    return undefined;
  }
  var offset = this._offset(index);
  return this._bufs[offset[0]][offset[1]];
};
BufferList.prototype.slice = function slice(start, end) {
  if (typeof start === 'number' && start < 0) {
    start += this.length;
  }
  if (typeof end === 'number' && end < 0) {
    end += this.length;
  }
  return this.copy(null, 0, start, end);
};
BufferList.prototype.copy = function copy(dst, dstStart, srcStart, srcEnd) {
  if (typeof srcStart !== 'number' || srcStart < 0) {
    srcStart = 0;
  }
  if (typeof srcEnd !== 'number' || srcEnd > this.length) {
    srcEnd = this.length;
  }
  if (srcStart >= this.length) {
    return dst || Buffer.alloc(0);
  }
  if (srcEnd <= 0) {
    return dst || Buffer.alloc(0);
  }
  var copy = !!dst;
  var off = this._offset(srcStart);
  var len = srcEnd - srcStart;
  var bytes = len;
  var bufoff = copy && dstStart || 0;
  var start = off[1];

  // copy/slice everything
  if (srcStart === 0 && srcEnd === this.length) {
    if (!copy) {
      // slice, but full concat if multiple buffers
      return this._bufs.length === 1 ? this._bufs[0] : Buffer.concat(this._bufs, this.length);
    }

    // copy, need to copy individual buffers
    for (var i = 0; i < this._bufs.length; i++) {
      this._bufs[i].copy(dst, bufoff);
      bufoff += this._bufs[i].length;
    }
    return dst;
  }

  // easy, cheap case where it's a subset of one of the buffers
  if (bytes <= this._bufs[off[0]].length - start) {
    return copy ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes) : this._bufs[off[0]].slice(start, start + bytes);
  }
  if (!copy) {
    // a slice, we need something to copy in to
    dst = Buffer.allocUnsafe(len);
  }
  for (var _i = off[0]; _i < this._bufs.length; _i++) {
    var l = this._bufs[_i].length - start;
    if (bytes > l) {
      this._bufs[_i].copy(dst, bufoff, start);
      bufoff += l;
    } else {
      this._bufs[_i].copy(dst, bufoff, start, start + bytes);
      bufoff += l;
      break;
    }
    bytes -= l;
    if (start) {
      start = 0;
    }
  }

  // safeguard so that we don't return uninitialized memory
  if (dst.length > bufoff) return dst.slice(0, bufoff);
  return dst;
};
BufferList.prototype.shallowSlice = function shallowSlice(start, end) {
  start = start || 0;
  end = typeof end !== 'number' ? this.length : end;
  if (start < 0) {
    start += this.length;
  }
  if (end < 0) {
    end += this.length;
  }
  if (start === end) {
    return this._new();
  }
  var startOffset = this._offset(start);
  var endOffset = this._offset(end);
  var buffers = this._bufs.slice(startOffset[0], endOffset[0] + 1);
  if (endOffset[1] === 0) {
    buffers.pop();
  } else {
    buffers[buffers.length - 1] = buffers[buffers.length - 1].slice(0, endOffset[1]);
  }
  if (startOffset[1] !== 0) {
    buffers[0] = buffers[0].slice(startOffset[1]);
  }
  return this._new(buffers);
};
BufferList.prototype.toString = function toString(encoding, start, end) {
  return this.slice(start, end).toString(encoding);
};
BufferList.prototype.consume = function consume(bytes) {
  // first, normalize the argument, in accordance with how Buffer does it
  bytes = Math.trunc(bytes);
  // do nothing if not a positive number
  if (Number.isNaN(bytes) || bytes <= 0) return this;
  while (this._bufs.length) {
    if (bytes >= this._bufs[0].length) {
      bytes -= this._bufs[0].length;
      this.length -= this._bufs[0].length;
      this._bufs.shift();
    } else {
      this._bufs[0] = this._bufs[0].slice(bytes);
      this.length -= bytes;
      break;
    }
  }
  return this;
};
BufferList.prototype.duplicate = function duplicate() {
  var copy = this._new();
  for (var i = 0; i < this._bufs.length; i++) {
    copy.append(this._bufs[i]);
  }
  return copy;
};
BufferList.prototype.append = function append(buf) {
  if (buf == null) {
    return this;
  }
  if (buf.buffer) {
    // append a view of the underlying ArrayBuffer
    this._appendBuffer(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength));
  } else if (Array.isArray(buf)) {
    for (var i = 0; i < buf.length; i++) {
      this.append(buf[i]);
    }
  } else if (this._isBufferList(buf)) {
    // unwrap argument into individual BufferLists
    for (var _i2 = 0; _i2 < buf._bufs.length; _i2++) {
      this.append(buf._bufs[_i2]);
    }
  } else {
    // coerce number arguments to strings, since Buffer(number) does
    // uninitialized memory allocation
    if (typeof buf === 'number') {
      buf = buf.toString();
    }
    this._appendBuffer(Buffer.from(buf));
  }
  return this;
};
BufferList.prototype._appendBuffer = function appendBuffer(buf) {
  this._bufs.push(buf);
  this.length += buf.length;
};
BufferList.prototype.indexOf = function (search, offset, encoding) {
  if (encoding === undefined && typeof offset === 'string') {
    encoding = offset;
    offset = undefined;
  }
  if (typeof search === 'function' || Array.isArray(search)) {
    throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');
  } else if (typeof search === 'number') {
    search = Buffer.from([search]);
  } else if (typeof search === 'string') {
    search = Buffer.from(search, encoding);
  } else if (this._isBufferList(search)) {
    search = search.slice();
  } else if (Array.isArray(search.buffer)) {
    search = Buffer.from(search.buffer, search.byteOffset, search.byteLength);
  } else if (!Buffer.isBuffer(search)) {
    search = Buffer.from(search);
  }
  offset = Number(offset || 0);
  if (isNaN(offset)) {
    offset = 0;
  }
  if (offset < 0) {
    offset = this.length + offset;
  }
  if (offset < 0) {
    offset = 0;
  }
  if (search.length === 0) {
    return offset > this.length ? this.length : offset;
  }
  var blOffset = this._offset(offset);
  var blIndex = blOffset[0]; // index of which internal buffer we're working on
  var buffOffset = blOffset[1]; // offset of the internal buffer we're working on

  // scan over each buffer
  for (; blIndex < this._bufs.length; blIndex++) {
    var buff = this._bufs[blIndex];
    while (buffOffset < buff.length) {
      var availableWindow = buff.length - buffOffset;
      if (availableWindow >= search.length) {
        var nativeSearchResult = buff.indexOf(search, buffOffset);
        if (nativeSearchResult !== -1) {
          return this._reverseOffset([blIndex, nativeSearchResult]);
        }
        buffOffset = buff.length - search.length + 1; // end of native search window
      } else {
        var revOffset = this._reverseOffset([blIndex, buffOffset]);
        if (this._match(revOffset, search)) {
          return revOffset;
        }
        buffOffset++;
      }
    }
    buffOffset = 0;
  }
  return -1;
};
BufferList.prototype._match = function (offset, search) {
  if (this.length - offset < search.length) {
    return false;
  }
  for (var searchOffset = 0; searchOffset < search.length; searchOffset++) {
    if (this.get(offset + searchOffset) !== search[searchOffset]) {
      return false;
    }
  }
  return true;
};
(function () {
  var methods = {
    readDoubleBE: 8,
    readDoubleLE: 8,
    readFloatBE: 4,
    readFloatLE: 4,
    readInt32BE: 4,
    readInt32LE: 4,
    readUInt32BE: 4,
    readUInt32LE: 4,
    readInt16BE: 2,
    readInt16LE: 2,
    readUInt16BE: 2,
    readUInt16LE: 2,
    readInt8: 1,
    readUInt8: 1,
    readIntBE: null,
    readIntLE: null,
    readUIntBE: null,
    readUIntLE: null
  };
  for (var m in methods) {
    (function (m) {
      if (methods[m] === null) {
        BufferList.prototype[m] = function (offset, byteLength) {
          return this.slice(offset, offset + byteLength)[m](0, byteLength);
        };
      } else {
        BufferList.prototype[m] = function () {
          var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
          return this.slice(offset, offset + methods[m])[m](0);
        };
      }
    })(m);
  }
})();

// Used internally by the class and also as an indicator of this object being
// a `BufferList`. It's not possible to use `instanceof BufferList` in a browser
// environment because there could be multiple different copies of the
// BufferList class and some `BufferList`s might be `BufferList`s.
BufferList.prototype._isBufferList = function _isBufferList(b) {
  return b instanceof BufferList || BufferList.isBufferList(b);
};
BufferList.isBufferList = function isBufferList(b) {
  return b != null && b[symbol];
};
module.exports = BufferList;

/***/ }),

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

"use strict";


var DuplexStream = (__webpack_require__(8237).Duplex);
var inherits = __webpack_require__(80376);
var BufferList = __webpack_require__(10666);
function BufferListStream(callback) {
  if (!(this instanceof BufferListStream)) {
    return new BufferListStream(callback);
  }
  if (typeof callback === 'function') {
    this._callback = callback;
    var piper = function piper(err) {
      if (this._callback) {
        this._callback(err);
        this._callback = null;
      }
    }.bind(this);
    this.on('pipe', function onPipe(src) {
      src.on('error', piper);
    });
    this.on('unpipe', function onUnpipe(src) {
      src.removeListener('error', piper);
    });
    callback = null;
  }
  BufferList._init.call(this, callback);
  DuplexStream.call(this);
}
inherits(BufferListStream, DuplexStream);
Object.assign(BufferListStream.prototype, BufferList.prototype);
BufferListStream.prototype._new = function _new(callback) {
  return new BufferListStream(callback);
};
BufferListStream.prototype._write = function _write(buf, encoding, callback) {
  this._appendBuffer(buf);
  if (typeof callback === 'function') {
    callback();
  }
};
BufferListStream.prototype._read = function _read(size) {
  if (!this.length) {
    return this.push(null);
  }
  size = Math.min(size, this.length);
  this.push(this.slice(0, size));
  this.consume(size);
};
BufferListStream.prototype.end = function end(chunk) {
  DuplexStream.prototype.end.call(this, chunk);
  if (this._callback) {
    this._callback(null, this.slice());
    this._callback = null;
  }
};
BufferListStream.prototype._destroy = function _destroy(err, cb) {
  this._bufs.length = 0;
  this.length = 0;
  cb(err);
};
BufferListStream.prototype._isBufferList = function _isBufferList(b) {
  return b instanceof BufferListStream || b instanceof BufferList || BufferListStream.isBufferList(b);
};
BufferListStream.isBufferList = BufferList.isBufferList;
module.exports = BufferListStream;
module.exports.BufferListStream = BufferListStream;
module.exports.BufferList = BufferList;

/***/ }),

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

"use strict";
/*!
 * The buffer module from node.js, for the browser.
 *
 * @author   Feross Aboukhadijeh <https://feross.org>
 * @license  MIT
 */
/* eslint-disable no-proto */



function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var base64 = __webpack_require__(47943);
var ieee754 = __webpack_require__(48405);
var customInspectSymbol = typeof Symbol === 'function' && typeof Symbol['for'] === 'function' // eslint-disable-line dot-notation
? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation
: null;
exports.Buffer = Buffer;
exports.SlowBuffer = SlowBuffer;
exports.INSPECT_MAX_BYTES = 50;
var K_MAX_LENGTH = 0x7fffffff;
exports.kMaxLength = K_MAX_LENGTH;

/**
 * If `Buffer.TYPED_ARRAY_SUPPORT`:
 *   === true    Use Uint8Array implementation (fastest)
 *   === false   Print warning and recommend using `buffer` v4.x which has an Object
 *               implementation (most compatible, even IE6)
 *
 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
 * Opera 11.6+, iOS 4.2+.
 *
 * We report that the browser does not support typed arrays if the are not subclassable
 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
 * for __proto__ and has a buggy typed array implementation.
 */
Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();
if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && typeof console.error === 'function') {
  console.error('This browser lacks typed array (Uint8Array) support which is required by ' + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.');
}
function typedArraySupport() {
  // Can typed array instances can be augmented?
  try {
    var arr = new Uint8Array(1);
    var proto = {
      foo: function foo() {
        return 42;
      }
    };
    Object.setPrototypeOf(proto, Uint8Array.prototype);
    Object.setPrototypeOf(arr, proto);
    return arr.foo() === 42;
  } catch (e) {
    return false;
  }
}
Object.defineProperty(Buffer.prototype, 'parent', {
  enumerable: true,
  get: function get() {
    if (!Buffer.isBuffer(this)) return undefined;
    return this.buffer;
  }
});
Object.defineProperty(Buffer.prototype, 'offset', {
  enumerable: true,
  get: function get() {
    if (!Buffer.isBuffer(this)) return undefined;
    return this.byteOffset;
  }
});
function createBuffer(length) {
  if (length > K_MAX_LENGTH) {
    throw new RangeError('The value "' + length + '" is invalid for option "size"');
  }
  // Return an augmented `Uint8Array` instance
  var buf = new Uint8Array(length);
  Object.setPrototypeOf(buf, Buffer.prototype);
  return buf;
}

/**
 * The Buffer constructor returns instances of `Uint8Array` that have their
 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
 * returns a single octet.
 *
 * The `Uint8Array` prototype remains unmodified.
 */

function Buffer(arg, encodingOrOffset, length) {
  // Common case.
  if (typeof arg === 'number') {
    if (typeof encodingOrOffset === 'string') {
      throw new TypeError('The "string" argument must be of type string. Received type number');
    }
    return allocUnsafe(arg);
  }
  return from(arg, encodingOrOffset, length);
}
Buffer.poolSize = 8192; // not used by this implementation

function from(value, encodingOrOffset, length) {
  if (typeof value === 'string') {
    return fromString(value, encodingOrOffset);
  }
  if (ArrayBuffer.isView(value)) {
    return fromArrayView(value);
  }
  if (value == null) {
    throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + _typeof(value));
  }
  if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {
    return fromArrayBuffer(value, encodingOrOffset, length);
  }
  if (typeof SharedArrayBuffer !== 'undefined' && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {
    return fromArrayBuffer(value, encodingOrOffset, length);
  }
  if (typeof value === 'number') {
    throw new TypeError('The "value" argument must not be of type number. Received type number');
  }
  var valueOf = value.valueOf && value.valueOf();
  if (valueOf != null && valueOf !== value) {
    return Buffer.from(valueOf, encodingOrOffset, length);
  }
  var b = fromObject(value);
  if (b) return b;
  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') {
    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length);
  }
  throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + _typeof(value));
}

/**
 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
 * if value is a number.
 * Buffer.from(str[, encoding])
 * Buffer.from(array)
 * Buffer.from(buffer)
 * Buffer.from(arrayBuffer[, byteOffset[, length]])
 **/
Buffer.from = function (value, encodingOrOffset, length) {
  return from(value, encodingOrOffset, length);
};

// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
// https://github.com/feross/buffer/pull/148
Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);
Object.setPrototypeOf(Buffer, Uint8Array);
function assertSize(size) {
  if (typeof size !== 'number') {
    throw new TypeError('"size" argument must be of type number');
  } else if (size < 0) {
    throw new RangeError('The value "' + size + '" is invalid for option "size"');
  }
}
function alloc(size, fill, encoding) {
  assertSize(size);
  if (size <= 0) {
    return createBuffer(size);
  }
  if (fill !== undefined) {
    // Only pay attention to encoding if it's a string. This
    // prevents accidentally sending in a number that would
    // be interpreted as a start offset.
    return typeof encoding === 'string' ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);
  }
  return createBuffer(size);
}

/**
 * Creates a new filled Buffer instance.
 * alloc(size[, fill[, encoding]])
 **/
Buffer.alloc = function (size, fill, encoding) {
  return alloc(size, fill, encoding);
};
function allocUnsafe(size) {
  assertSize(size);
  return createBuffer(size < 0 ? 0 : checked(size) | 0);
}

/**
 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
 * */
Buffer.allocUnsafe = function (size) {
  return allocUnsafe(size);
};
/**
 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
 */
Buffer.allocUnsafeSlow = function (size) {
  return allocUnsafe(size);
};
function fromString(string, encoding) {
  if (typeof encoding !== 'string' || encoding === '') {
    encoding = 'utf8';
  }
  if (!Buffer.isEncoding(encoding)) {
    throw new TypeError('Unknown encoding: ' + encoding);
  }
  var length = byteLength(string, encoding) | 0;
  var buf = createBuffer(length);
  var actual = buf.write(string, encoding);
  if (actual !== length) {
    // Writing a hex string, for example, that contains invalid characters will
    // cause everything after the first invalid character to be ignored. (e.g.
    // 'abxxcd' will be treated as 'ab')
    buf = buf.slice(0, actual);
  }
  return buf;
}
function fromArrayLike(array) {
  var length = array.length < 0 ? 0 : checked(array.length) | 0;
  var buf = createBuffer(length);
  for (var i = 0; i < length; i += 1) {
    buf[i] = array[i] & 255;
  }
  return buf;
}
function fromArrayView(arrayView) {
  if (isInstance(arrayView, Uint8Array)) {
    var copy = new Uint8Array(arrayView);
    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);
  }
  return fromArrayLike(arrayView);
}
function fromArrayBuffer(array, byteOffset, length) {
  if (byteOffset < 0 || array.byteLength < byteOffset) {
    throw new RangeError('"offset" is outside of buffer bounds');
  }
  if (array.byteLength < byteOffset + (length || 0)) {
    throw new RangeError('"length" is outside of buffer bounds');
  }
  var buf;
  if (byteOffset === undefined && length === undefined) {
    buf = new Uint8Array(array);
  } else if (length === undefined) {
    buf = new Uint8Array(array, byteOffset);
  } else {
    buf = new Uint8Array(array, byteOffset, length);
  }

  // Return an augmented `Uint8Array` instance
  Object.setPrototypeOf(buf, Buffer.prototype);
  return buf;
}
function fromObject(obj) {
  if (Buffer.isBuffer(obj)) {
    var len = checked(obj.length) | 0;
    var buf = createBuffer(len);
    if (buf.length === 0) {
      return buf;
    }
    obj.copy(buf, 0, 0, len);
    return buf;
  }
  if (obj.length !== undefined) {
    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
      return createBuffer(0);
    }
    return fromArrayLike(obj);
  }
  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
    return fromArrayLike(obj.data);
  }
}
function checked(length) {
  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
  // length is NaN (which is otherwise coerced to zero.)
  if (length >= K_MAX_LENGTH) {
    throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes');
  }
  return length | 0;
}
function SlowBuffer(length) {
  if (+length != length) {
    // eslint-disable-line eqeqeq
    length = 0;
  }
  return Buffer.alloc(+length);
}
Buffer.isBuffer = function isBuffer(b) {
  return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false
};

Buffer.compare = function compare(a, b) {
  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);
  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);
  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
    throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
  }
  if (a === b) return 0;
  var x = a.length;
  var y = b.length;
  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
    if (a[i] !== b[i]) {
      x = a[i];
      y = b[i];
      break;
    }
  }
  if (x < y) return -1;
  if (y < x) return 1;
  return 0;
};
Buffer.isEncoding = function isEncoding(encoding) {
  switch (String(encoding).toLowerCase()) {
    case 'hex':
    case 'utf8':
    case 'utf-8':
    case 'ascii':
    case 'latin1':
    case 'binary':
    case 'base64':
    case 'ucs2':
    case 'ucs-2':
    case 'utf16le':
    case 'utf-16le':
      return true;
    default:
      return false;
  }
};
Buffer.concat = function concat(list, length) {
  if (!Array.isArray(list)) {
    throw new TypeError('"list" argument must be an Array of Buffers');
  }
  if (list.length === 0) {
    return Buffer.alloc(0);
  }
  var i;
  if (length === undefined) {
    length = 0;
    for (i = 0; i < list.length; ++i) {
      length += list[i].length;
    }
  }
  var buffer = Buffer.allocUnsafe(length);
  var pos = 0;
  for (i = 0; i < list.length; ++i) {
    var buf = list[i];
    if (isInstance(buf, Uint8Array)) {
      if (pos + buf.length > buffer.length) {
        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);
        buf.copy(buffer, pos);
      } else {
        Uint8Array.prototype.set.call(buffer, buf, pos);
      }
    } else if (!Buffer.isBuffer(buf)) {
      throw new TypeError('"list" argument must be an Array of Buffers');
    } else {
      buf.copy(buffer, pos);
    }
    pos += buf.length;
  }
  return buffer;
};
function byteLength(string, encoding) {
  if (Buffer.isBuffer(string)) {
    return string.length;
  }
  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {
    return string.byteLength;
  }
  if (typeof string !== 'string') {
    throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + _typeof(string));
  }
  var len = string.length;
  var mustMatch = arguments.length > 2 && arguments[2] === true;
  if (!mustMatch && len === 0) return 0;

  // Use a for loop to avoid recursion
  var loweredCase = false;
  for (;;) {
    switch (encoding) {
      case 'ascii':
      case 'latin1':
      case 'binary':
        return len;
      case 'utf8':
      case 'utf-8':
        return utf8ToBytes(string).length;
      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return len * 2;
      case 'hex':
        return len >>> 1;
      case 'base64':
        return base64ToBytes(string).length;
      default:
        if (loweredCase) {
          return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8
        }

        encoding = ('' + encoding).toLowerCase();
        loweredCase = true;
    }
  }
}
Buffer.byteLength = byteLength;
function slowToString(encoding, start, end) {
  var loweredCase = false;

  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
  // property of a typed array.

  // This behaves neither like String nor Uint8Array in that we set start/end
  // to their upper/lower bounds if the value passed is out of range.
  // undefined is handled specially as per ECMA-262 6th Edition,
  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
  if (start === undefined || start < 0) {
    start = 0;
  }
  // Return early if start > this.length. Done here to prevent potential uint32
  // coercion fail below.
  if (start > this.length) {
    return '';
  }
  if (end === undefined || end > this.length) {
    end = this.length;
  }
  if (end <= 0) {
    return '';
  }

  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.
  end >>>= 0;
  start >>>= 0;
  if (end <= start) {
    return '';
  }
  if (!encoding) encoding = 'utf8';
  while (true) {
    switch (encoding) {
      case 'hex':
        return hexSlice(this, start, end);
      case 'utf8':
      case 'utf-8':
        return utf8Slice(this, start, end);
      case 'ascii':
        return asciiSlice(this, start, end);
      case 'latin1':
      case 'binary':
        return latin1Slice(this, start, end);
      case 'base64':
        return base64Slice(this, start, end);
      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return utf16leSlice(this, start, end);
      default:
        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);
        encoding = (encoding + '').toLowerCase();
        loweredCase = true;
    }
  }
}

// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
// reliably in a browserify context because there could be multiple different
// copies of the 'buffer' package in use. This method works even for Buffer
// instances that were created from another copy of the `buffer` package.
// See: https://github.com/feross/buffer/issues/154
Buffer.prototype._isBuffer = true;
function swap(b, n, m) {
  var i = b[n];
  b[n] = b[m];
  b[m] = i;
}
Buffer.prototype.swap16 = function swap16() {
  var len = this.length;
  if (len % 2 !== 0) {
    throw new RangeError('Buffer size must be a multiple of 16-bits');
  }
  for (var i = 0; i < len; i += 2) {
    swap(this, i, i + 1);
  }
  return this;
};
Buffer.prototype.swap32 = function swap32() {
  var len = this.length;
  if (len % 4 !== 0) {
    throw new RangeError('Buffer size must be a multiple of 32-bits');
  }
  for (var i = 0; i < len; i += 4) {
    swap(this, i, i + 3);
    swap(this, i + 1, i + 2);
  }
  return this;
};
Buffer.prototype.swap64 = function swap64() {
  var len = this.length;
  if (len % 8 !== 0) {
    throw new RangeError('Buffer size must be a multiple of 64-bits');
  }
  for (var i = 0; i < len; i += 8) {
    swap(this, i, i + 7);
    swap(this, i + 1, i + 6);
    swap(this, i + 2, i + 5);
    swap(this, i + 3, i + 4);
  }
  return this;
};
Buffer.prototype.toString = function toString() {
  var length = this.length;
  if (length === 0) return '';
  if (arguments.length === 0) return utf8Slice(this, 0, length);
  return slowToString.apply(this, arguments);
};
Buffer.prototype.toLocaleString = Buffer.prototype.toString;
Buffer.prototype.equals = function equals(b) {
  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');
  if (this === b) return true;
  return Buffer.compare(this, b) === 0;
};
Buffer.prototype.inspect = function inspect() {
  var str = '';
  var max = exports.INSPECT_MAX_BYTES;
  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();
  if (this.length > max) str += ' ... ';
  return '<Buffer ' + str + '>';
};
if (customInspectSymbol) {
  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;
}
Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {
  if (isInstance(target, Uint8Array)) {
    target = Buffer.from(target, target.offset, target.byteLength);
  }
  if (!Buffer.isBuffer(target)) {
    throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + _typeof(target));
  }
  if (start === undefined) {
    start = 0;
  }
  if (end === undefined) {
    end = target ? target.length : 0;
  }
  if (thisStart === undefined) {
    thisStart = 0;
  }
  if (thisEnd === undefined) {
    thisEnd = this.length;
  }
  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
    throw new RangeError('out of range index');
  }
  if (thisStart >= thisEnd && start >= end) {
    return 0;
  }
  if (thisStart >= thisEnd) {
    return -1;
  }
  if (start >= end) {
    return 1;
  }
  start >>>= 0;
  end >>>= 0;
  thisStart >>>= 0;
  thisEnd >>>= 0;
  if (this === target) return 0;
  var x = thisEnd - thisStart;
  var y = end - start;
  var len = Math.min(x, y);
  var thisCopy = this.slice(thisStart, thisEnd);
  var targetCopy = target.slice(start, end);
  for (var i = 0; i < len; ++i) {
    if (thisCopy[i] !== targetCopy[i]) {
      x = thisCopy[i];
      y = targetCopy[i];
      break;
    }
  }
  if (x < y) return -1;
  if (y < x) return 1;
  return 0;
};

// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
//
// Arguments:
// - buffer - a Buffer to search
// - val - a string, Buffer, or number
// - byteOffset - an index into `buffer`; will be clamped to an int32
// - encoding - an optional encoding, relevant is val is a string
// - dir - true for indexOf, false for lastIndexOf
function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {
  // Empty buffer means no match
  if (buffer.length === 0) return -1;

  // Normalize byteOffset
  if (typeof byteOffset === 'string') {
    encoding = byteOffset;
    byteOffset = 0;
  } else if (byteOffset > 0x7fffffff) {
    byteOffset = 0x7fffffff;
  } else if (byteOffset < -0x80000000) {
    byteOffset = -0x80000000;
  }
  byteOffset = +byteOffset; // Coerce to Number.
  if (numberIsNaN(byteOffset)) {
    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
    byteOffset = dir ? 0 : buffer.length - 1;
  }

  // Normalize byteOffset: negative offsets start from the end of the buffer
  if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
  if (byteOffset >= buffer.length) {
    if (dir) return -1;else byteOffset = buffer.length - 1;
  } else if (byteOffset < 0) {
    if (dir) byteOffset = 0;else return -1;
  }

  // Normalize val
  if (typeof val === 'string') {
    val = Buffer.from(val, encoding);
  }

  // Finally, search either indexOf (if dir is true) or lastIndexOf
  if (Buffer.isBuffer(val)) {
    // Special case: looking for empty string/buffer always fails
    if (val.length === 0) {
      return -1;
    }
    return arrayIndexOf(buffer, val, byteOffset, encoding, dir);
  } else if (typeof val === 'number') {
    val = val & 0xFF; // Search for a byte value [0-255]
    if (typeof Uint8Array.prototype.indexOf === 'function') {
      if (dir) {
        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);
      } else {
        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);
      }
    }
    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);
  }
  throw new TypeError('val must be string, number or Buffer');
}
function arrayIndexOf(arr, val, byteOffset, encoding, dir) {
  var indexSize = 1;
  var arrLength = arr.length;
  var valLength = val.length;
  if (encoding !== undefined) {
    encoding = String(encoding).toLowerCase();
    if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {
      if (arr.length < 2 || val.length < 2) {
        return -1;
      }
      indexSize = 2;
      arrLength /= 2;
      valLength /= 2;
      byteOffset /= 2;
    }
  }
  function read(buf, i) {
    if (indexSize === 1) {
      return buf[i];
    } else {
      return buf.readUInt16BE(i * indexSize);
    }
  }
  var i;
  if (dir) {
    var foundIndex = -1;
    for (i = byteOffset; i < arrLength; i++) {
      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
        if (foundIndex === -1) foundIndex = i;
        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;
      } else {
        if (foundIndex !== -1) i -= i - foundIndex;
        foundIndex = -1;
      }
    }
  } else {
    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
    for (i = byteOffset; i >= 0; i--) {
      var found = true;
      for (var j = 0; j < valLength; j++) {
        if (read(arr, i + j) !== read(val, j)) {
          found = false;
          break;
        }
      }
      if (found) return i;
    }
  }
  return -1;
}
Buffer.prototype.includes = function includes(val, byteOffset, encoding) {
  return this.indexOf(val, byteOffset, encoding) !== -1;
};
Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
  return bidirectionalIndexOf(this, val, byteOffset, encoding, true);
};
Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {
  return bidirectionalIndexOf(this, val, byteOffset, encoding, false);
};
function hexWrite(buf, string, offset, length) {
  offset = Number(offset) || 0;
  var remaining = buf.length - offset;
  if (!length) {
    length = remaining;
  } else {
    length = Number(length);
    if (length > remaining) {
      length = remaining;
    }
  }
  var strLen = string.length;
  if (length > strLen / 2) {
    length = strLen / 2;
  }
  var i;
  for (i = 0; i < length; ++i) {
    var parsed = parseInt(string.substr(i * 2, 2), 16);
    if (numberIsNaN(parsed)) return i;
    buf[offset + i] = parsed;
  }
  return i;
}
function utf8Write(buf, string, offset, length) {
  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);
}
function asciiWrite(buf, string, offset, length) {
  return blitBuffer(asciiToBytes(string), buf, offset, length);
}
function base64Write(buf, string, offset, length) {
  return blitBuffer(base64ToBytes(string), buf, offset, length);
}
function ucs2Write(buf, string, offset, length) {
  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);
}
Buffer.prototype.write = function write(string, offset, length, encoding) {
  // Buffer#write(string)
  if (offset === undefined) {
    encoding = 'utf8';
    length = this.length;
    offset = 0;
    // Buffer#write(string, encoding)
  } else if (length === undefined && typeof offset === 'string') {
    encoding = offset;
    length = this.length;
    offset = 0;
    // Buffer#write(string, offset[, length][, encoding])
  } else if (isFinite(offset)) {
    offset = offset >>> 0;
    if (isFinite(length)) {
      length = length >>> 0;
      if (encoding === undefined) encoding = 'utf8';
    } else {
      encoding = length;
      length = undefined;
    }
  } else {
    throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');
  }
  var remaining = this.length - offset;
  if (length === undefined || length > remaining) length = remaining;
  if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {
    throw new RangeError('Attempt to write outside buffer bounds');
  }
  if (!encoding) encoding = 'utf8';
  var loweredCase = false;
  for (;;) {
    switch (encoding) {
      case 'hex':
        return hexWrite(this, string, offset, length);
      case 'utf8':
      case 'utf-8':
        return utf8Write(this, string, offset, length);
      case 'ascii':
      case 'latin1':
      case 'binary':
        return asciiWrite(this, string, offset, length);
      case 'base64':
        // Warning: maxLength not taken into account in base64Write
        return base64Write(this, string, offset, length);
      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return ucs2Write(this, string, offset, length);
      default:
        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);
        encoding = ('' + encoding).toLowerCase();
        loweredCase = true;
    }
  }
};
Buffer.prototype.toJSON = function toJSON() {
  return {
    type: 'Buffer',
    data: Array.prototype.slice.call(this._arr || this, 0)
  };
};
function base64Slice(buf, start, end) {
  if (start === 0 && end === buf.length) {
    return base64.fromByteArray(buf);
  } else {
    return base64.fromByteArray(buf.slice(start, end));
  }
}
function utf8Slice(buf, start, end) {
  end = Math.min(buf.length, end);
  var res = [];
  var i = start;
  while (i < end) {
    var firstByte = buf[i];
    var codePoint = null;
    var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;
    if (i + bytesPerSequence <= end) {
      var secondByte = void 0,
        thirdByte = void 0,
        fourthByte = void 0,
        tempCodePoint = void 0;
      switch (bytesPerSequence) {
        case 1:
          if (firstByte < 0x80) {
            codePoint = firstByte;
          }
          break;
        case 2:
          secondByte = buf[i + 1];
          if ((secondByte & 0xC0) === 0x80) {
            tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;
            if (tempCodePoint > 0x7F) {
              codePoint = tempCodePoint;
            }
          }
          break;
        case 3:
          secondByte = buf[i + 1];
          thirdByte = buf[i + 2];
          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;
            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
              codePoint = tempCodePoint;
            }
          }
          break;
        case 4:
          secondByte = buf[i + 1];
          thirdByte = buf[i + 2];
          fourthByte = buf[i + 3];
          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;
            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
              codePoint = tempCodePoint;
            }
          }
      }
    }
    if (codePoint === null) {
      // we did not generate a valid codePoint so insert a
      // replacement char (U+FFFD) and advance only 1 byte
      codePoint = 0xFFFD;
      bytesPerSequence = 1;
    } else if (codePoint > 0xFFFF) {
      // encode to utf16 (surrogate pair dance)
      codePoint -= 0x10000;
      res.push(codePoint >>> 10 & 0x3FF | 0xD800);
      codePoint = 0xDC00 | codePoint & 0x3FF;
    }
    res.push(codePoint);
    i += bytesPerSequence;
  }
  return decodeCodePointsArray(res);
}

// Based on http://stackoverflow.com/a/22747272/680742, the browser with
// the lowest limit is Chrome, with 0x10000 args.
// We go 1 magnitude less, for safety
var MAX_ARGUMENTS_LENGTH = 0x1000;
function decodeCodePointsArray(codePoints) {
  var len = codePoints.length;
  if (len <= MAX_ARGUMENTS_LENGTH) {
    return String.fromCharCode.apply(String, codePoints); // avoid extra slice()
  }

  // Decode in chunks to avoid "call stack size exceeded".
  var res = '';
  var i = 0;
  while (i < len) {
    res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));
  }
  return res;
}
function asciiSlice(buf, start, end) {
  var ret = '';
  end = Math.min(buf.length, end);
  for (var i = start; i < end; ++i) {
    ret += String.fromCharCode(buf[i] & 0x7F);
  }
  return ret;
}
function latin1Slice(buf, start, end) {
  var ret = '';
  end = Math.min(buf.length, end);
  for (var i = start; i < end; ++i) {
    ret += String.fromCharCode(buf[i]);
  }
  return ret;
}
function hexSlice(buf, start, end) {
  var len = buf.length;
  if (!start || start < 0) start = 0;
  if (!end || end < 0 || end > len) end = len;
  var out = '';
  for (var i = start; i < end; ++i) {
    out += hexSliceLookupTable[buf[i]];
  }
  return out;
}
function utf16leSlice(buf, start, end) {
  var bytes = buf.slice(start, end);
  var res = '';
  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)
  for (var i = 0; i < bytes.length - 1; i += 2) {
    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
  }
  return res;
}
Buffer.prototype.slice = function slice(start, end) {
  var len = this.length;
  start = ~~start;
  end = end === undefined ? len : ~~end;
  if (start < 0) {
    start += len;
    if (start < 0) start = 0;
  } else if (start > len) {
    start = len;
  }
  if (end < 0) {
    end += len;
    if (end < 0) end = 0;
  } else if (end > len) {
    end = len;
  }
  if (end < start) end = start;
  var newBuf = this.subarray(start, end);
  // Return an augmented `Uint8Array` instance
  Object.setPrototypeOf(newBuf, Buffer.prototype);
  return newBuf;
};

/*
 * Need to make sure that buffer isn't trying to write out of bounds.
 */
function checkOffset(offset, ext, length) {
  if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');
  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');
}
Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {
  offset = offset >>> 0;
  byteLength = byteLength >>> 0;
  if (!noAssert) checkOffset(offset, byteLength, this.length);
  var val = this[offset];
  var mul = 1;
  var i = 0;
  while (++i < byteLength && (mul *= 0x100)) {
    val += this[offset + i] * mul;
  }
  return val;
};
Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {
  offset = offset >>> 0;
  byteLength = byteLength >>> 0;
  if (!noAssert) {
    checkOffset(offset, byteLength, this.length);
  }
  var val = this[offset + --byteLength];
  var mul = 1;
  while (byteLength > 0 && (mul *= 0x100)) {
    val += this[offset + --byteLength] * mul;
  }
  return val;
};
Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 1, this.length);
  return this[offset];
};
Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 2, this.length);
  return this[offset] | this[offset + 1] << 8;
};
Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 2, this.length);
  return this[offset] << 8 | this[offset + 1];
};
Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 4, this.length);
  return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;
};
Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 4, this.length);
  return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);
};
Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {
  offset = offset >>> 0;
  validateNumber(offset, 'offset');
  var first = this[offset];
  var last = this[offset + 7];
  if (first === undefined || last === undefined) {
    boundsError(offset, this.length - 8);
  }
  var lo = first + this[++offset] * Math.pow(2, 8) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 24);
  var hi = this[++offset] + this[++offset] * Math.pow(2, 8) + this[++offset] * Math.pow(2, 16) + last * Math.pow(2, 24);
  return BigInt(lo) + (BigInt(hi) << BigInt(32));
});
Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {
  offset = offset >>> 0;
  validateNumber(offset, 'offset');
  var first = this[offset];
  var last = this[offset + 7];
  if (first === undefined || last === undefined) {
    boundsError(offset, this.length - 8);
  }
  var hi = first * Math.pow(2, 24) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + this[++offset];
  var lo = this[++offset] * Math.pow(2, 24) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + last;
  return (BigInt(hi) << BigInt(32)) + BigInt(lo);
});
Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {
  offset = offset >>> 0;
  byteLength = byteLength >>> 0;
  if (!noAssert) checkOffset(offset, byteLength, this.length);
  var val = this[offset];
  var mul = 1;
  var i = 0;
  while (++i < byteLength && (mul *= 0x100)) {
    val += this[offset + i] * mul;
  }
  mul *= 0x80;
  if (val >= mul) val -= Math.pow(2, 8 * byteLength);
  return val;
};
Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {
  offset = offset >>> 0;
  byteLength = byteLength >>> 0;
  if (!noAssert) checkOffset(offset, byteLength, this.length);
  var i = byteLength;
  var mul = 1;
  var val = this[offset + --i];
  while (i > 0 && (mul *= 0x100)) {
    val += this[offset + --i] * mul;
  }
  mul *= 0x80;
  if (val >= mul) val -= Math.pow(2, 8 * byteLength);
  return val;
};
Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 1, this.length);
  if (!(this[offset] & 0x80)) return this[offset];
  return (0xff - this[offset] + 1) * -1;
};
Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 2, this.length);
  var val = this[offset] | this[offset + 1] << 8;
  return val & 0x8000 ? val | 0xFFFF0000 : val;
};
Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 2, this.length);
  var val = this[offset + 1] | this[offset] << 8;
  return val & 0x8000 ? val | 0xFFFF0000 : val;
};
Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 4, this.length);
  return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;
};
Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 4, this.length);
  return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];
};
Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {
  offset = offset >>> 0;
  validateNumber(offset, 'offset');
  var first = this[offset];
  var last = this[offset + 7];
  if (first === undefined || last === undefined) {
    boundsError(offset, this.length - 8);
  }
  var val = this[offset + 4] + this[offset + 5] * Math.pow(2, 8) + this[offset + 6] * Math.pow(2, 16) + (last << 24); // Overflow

  return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * Math.pow(2, 8) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 24));
});
Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {
  offset = offset >>> 0;
  validateNumber(offset, 'offset');
  var first = this[offset];
  var last = this[offset + 7];
  if (first === undefined || last === undefined) {
    boundsError(offset, this.length - 8);
  }
  var val = (first << 24) +
  // Overflow
  this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + this[++offset];
  return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * Math.pow(2, 24) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + last);
});
Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 4, this.length);
  return ieee754.read(this, offset, true, 23, 4);
};
Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 4, this.length);
  return ieee754.read(this, offset, false, 23, 4);
};
Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 8, this.length);
  return ieee754.read(this, offset, true, 52, 8);
};
Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {
  offset = offset >>> 0;
  if (!noAssert) checkOffset(offset, 8, this.length);
  return ieee754.read(this, offset, false, 52, 8);
};
function checkInt(buf, value, offset, ext, max, min) {
  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance');
  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds');
  if (offset + ext > buf.length) throw new RangeError('Index out of range');
}
Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {
  value = +value;
  offset = offset >>> 0;
  byteLength = byteLength >>> 0;
  if (!noAssert) {
    var maxBytes = Math.pow(2, 8 * byteLength) - 1;
    checkInt(this, value, offset, byteLength, maxBytes, 0);
  }
  var mul = 1;
  var i = 0;
  this[offset] = value & 0xFF;
  while (++i < byteLength && (mul *= 0x100)) {
    this[offset + i] = value / mul & 0xFF;
  }
  return offset + byteLength;
};
Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {
  value = +value;
  offset = offset >>> 0;
  byteLength = byteLength >>> 0;
  if (!noAssert) {
    var maxBytes = Math.pow(2, 8 * byteLength) - 1;
    checkInt(this, value, offset, byteLength, maxBytes, 0);
  }
  var i = byteLength - 1;
  var mul = 1;
  this[offset + i] = value & 0xFF;
  while (--i >= 0 && (mul *= 0x100)) {
    this[offset + i] = value / mul & 0xFF;
  }
  return offset + byteLength;
};
Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
  this[offset] = value & 0xff;
  return offset + 1;
};
Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
  this[offset] = value & 0xff;
  this[offset + 1] = value >>> 8;
  return offset + 2;
};
Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
  this[offset] = value >>> 8;
  this[offset + 1] = value & 0xff;
  return offset + 2;
};
Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
  this[offset + 3] = value >>> 24;
  this[offset + 2] = value >>> 16;
  this[offset + 1] = value >>> 8;
  this[offset] = value & 0xff;
  return offset + 4;
};
Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
  this[offset] = value >>> 24;
  this[offset + 1] = value >>> 16;
  this[offset + 2] = value >>> 8;
  this[offset + 3] = value & 0xff;
  return offset + 4;
};
function wrtBigUInt64LE(buf, value, offset, min, max) {
  checkIntBI(value, min, max, buf, offset, 7);
  var lo = Number(value & BigInt(0xffffffff));
  buf[offset++] = lo;
  lo = lo >> 8;
  buf[offset++] = lo;
  lo = lo >> 8;
  buf[offset++] = lo;
  lo = lo >> 8;
  buf[offset++] = lo;
  var hi = Number(value >> BigInt(32) & BigInt(0xffffffff));
  buf[offset++] = hi;
  hi = hi >> 8;
  buf[offset++] = hi;
  hi = hi >> 8;
  buf[offset++] = hi;
  hi = hi >> 8;
  buf[offset++] = hi;
  return offset;
}
function wrtBigUInt64BE(buf, value, offset, min, max) {
  checkIntBI(value, min, max, buf, offset, 7);
  var lo = Number(value & BigInt(0xffffffff));
  buf[offset + 7] = lo;
  lo = lo >> 8;
  buf[offset + 6] = lo;
  lo = lo >> 8;
  buf[offset + 5] = lo;
  lo = lo >> 8;
  buf[offset + 4] = lo;
  var hi = Number(value >> BigInt(32) & BigInt(0xffffffff));
  buf[offset + 3] = hi;
  hi = hi >> 8;
  buf[offset + 2] = hi;
  hi = hi >> 8;
  buf[offset + 1] = hi;
  hi = hi >> 8;
  buf[offset] = hi;
  return offset + 8;
}
Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value) {
  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'));
});
Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value) {
  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'));
});
Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) {
    var limit = Math.pow(2, 8 * byteLength - 1);
    checkInt(this, value, offset, byteLength, limit - 1, -limit);
  }
  var i = 0;
  var mul = 1;
  var sub = 0;
  this[offset] = value & 0xFF;
  while (++i < byteLength && (mul *= 0x100)) {
    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
      sub = 1;
    }
    this[offset + i] = (value / mul >> 0) - sub & 0xFF;
  }
  return offset + byteLength;
};
Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) {
    var limit = Math.pow(2, 8 * byteLength - 1);
    checkInt(this, value, offset, byteLength, limit - 1, -limit);
  }
  var i = byteLength - 1;
  var mul = 1;
  var sub = 0;
  this[offset + i] = value & 0xFF;
  while (--i >= 0 && (mul *= 0x100)) {
    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
      sub = 1;
    }
    this[offset + i] = (value / mul >> 0) - sub & 0xFF;
  }
  return offset + byteLength;
};
Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);
  if (value < 0) value = 0xff + value + 1;
  this[offset] = value & 0xff;
  return offset + 1;
};
Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
  this[offset] = value & 0xff;
  this[offset + 1] = value >>> 8;
  return offset + 2;
};
Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
  this[offset] = value >>> 8;
  this[offset + 1] = value & 0xff;
  return offset + 2;
};
Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
  this[offset] = value & 0xff;
  this[offset + 1] = value >>> 8;
  this[offset + 2] = value >>> 16;
  this[offset + 3] = value >>> 24;
  return offset + 4;
};
Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
  if (value < 0) value = 0xffffffff + value + 1;
  this[offset] = value >>> 24;
  this[offset + 1] = value >>> 16;
  this[offset + 2] = value >>> 8;
  this[offset + 3] = value & 0xff;
  return offset + 4;
};
Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value) {
  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'));
});
Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value) {
  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'));
});
function checkIEEE754(buf, value, offset, ext, max, min) {
  if (offset + ext > buf.length) throw new RangeError('Index out of range');
  if (offset < 0) throw new RangeError('Index out of range');
}
function writeFloat(buf, value, offset, littleEndian, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) {
    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);
  }
  ieee754.write(buf, value, offset, littleEndian, 23, 4);
  return offset + 4;
}
Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {
  return writeFloat(this, value, offset, true, noAssert);
};
Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {
  return writeFloat(this, value, offset, false, noAssert);
};
function writeDouble(buf, value, offset, littleEndian, noAssert) {
  value = +value;
  offset = offset >>> 0;
  if (!noAssert) {
    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);
  }
  ieee754.write(buf, value, offset, littleEndian, 52, 8);
  return offset + 8;
}
Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {
  return writeDouble(this, value, offset, true, noAssert);
};
Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {
  return writeDouble(this, value, offset, false, noAssert);
};

// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
Buffer.prototype.copy = function copy(target, targetStart, start, end) {
  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer');
  if (!start) start = 0;
  if (!end && end !== 0) end = this.length;
  if (targetStart >= target.length) targetStart = target.length;
  if (!targetStart) targetStart = 0;
  if (end > 0 && end < start) end = start;

  // Copy 0 bytes; we're done
  if (end === start) return 0;
  if (target.length === 0 || this.length === 0) return 0;

  // Fatal error conditions
  if (targetStart < 0) {
    throw new RangeError('targetStart out of bounds');
  }
  if (start < 0 || start >= this.length) throw new RangeError('Index out of range');
  if (end < 0) throw new RangeError('sourceEnd out of bounds');

  // Are we oob?
  if (end > this.length) end = this.length;
  if (target.length - targetStart < end - start) {
    end = target.length - targetStart + start;
  }
  var len = end - start;
  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {
    // Use built-in when available, missing from IE11
    this.copyWithin(targetStart, start, end);
  } else {
    Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);
  }
  return len;
};

// Usage:
//    buffer.fill(number[, offset[, end]])
//    buffer.fill(buffer[, offset[, end]])
//    buffer.fill(string[, offset[, end]][, encoding])
Buffer.prototype.fill = function fill(val, start, end, encoding) {
  // Handle string cases:
  if (typeof val === 'string') {
    if (typeof start === 'string') {
      encoding = start;
      start = 0;
      end = this.length;
    } else if (typeof end === 'string') {
      encoding = end;
      end = this.length;
    }
    if (encoding !== undefined && typeof encoding !== 'string') {
      throw new TypeError('encoding must be a string');
    }
    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
      throw new TypeError('Unknown encoding: ' + encoding);
    }
    if (val.length === 1) {
      var code = val.charCodeAt(0);
      if (encoding === 'utf8' && code < 128 || encoding === 'latin1') {
        // Fast path: If `val` fits into a single byte, use that numeric value.
        val = code;
      }
    }
  } else if (typeof val === 'number') {
    val = val & 255;
  } else if (typeof val === 'boolean') {
    val = Number(val);
  }

  // Invalid ranges are not set to a default, so can range check early.
  if (start < 0 || this.length < start || this.length < end) {
    throw new RangeError('Out of range index');
  }
  if (end <= start) {
    return this;
  }
  start = start >>> 0;
  end = end === undefined ? this.length : end >>> 0;
  if (!val) val = 0;
  var i;
  if (typeof val === 'number') {
    for (i = start; i < end; ++i) {
      this[i] = val;
    }
  } else {
    var bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);
    var len = bytes.length;
    if (len === 0) {
      throw new TypeError('The value "' + val + '" is invalid for argument "value"');
    }
    for (i = 0; i < end - start; ++i) {
      this[i + start] = bytes[i % len];
    }
  }
  return this;
};

// CUSTOM ERRORS
// =============

// Simplified versions from Node, changed for Buffer-only usage
var errors = {};
function E(sym, getMessage, Base) {
  errors[sym] = /*#__PURE__*/function (_Base) {
    _inherits(NodeError, _Base);
    var _super = _createSuper(NodeError);
    function NodeError() {
      var _this;
      _classCallCheck(this, NodeError);
      _this = _super.call(this);
      Object.defineProperty(_assertThisInitialized(_this), 'message', {
        value: getMessage.apply(_assertThisInitialized(_this), arguments),
        writable: true,
        configurable: true
      });

      // Add the error code to the name to include it in the stack trace.
      _this.name = "".concat(_this.name, " [").concat(sym, "]");
      // Access the stack to generate the error message including the error code
      // from the name.
      _this.stack; // eslint-disable-line no-unused-expressions
      // Reset the name to the actual name.
      delete _this.name;
      return _this;
    }
    _createClass(NodeError, [{
      key: "code",
      get: function get() {
        return sym;
      },
      set: function set(value) {
        Object.defineProperty(this, 'code', {
          configurable: true,
          enumerable: true,
          value: value,
          writable: true
        });
      }
    }, {
      key: "toString",
      value: function toString() {
        return "".concat(this.name, " [").concat(sym, "]: ").concat(this.message);
      }
    }]);
    return NodeError;
  }(Base);
}
E('ERR_BUFFER_OUT_OF_BOUNDS', function (name) {
  if (name) {
    return "".concat(name, " is outside of buffer bounds");
  }
  return 'Attempt to access memory outside buffer bounds';
}, RangeError);
E('ERR_INVALID_ARG_TYPE', function (name, actual) {
  return "The \"".concat(name, "\" argument must be of type number. Received type ").concat(_typeof(actual));
}, TypeError);
E('ERR_OUT_OF_RANGE', function (str, range, input) {
  var msg = "The value of \"".concat(str, "\" is out of range.");
  var received = input;
  if (Number.isInteger(input) && Math.abs(input) > Math.pow(2, 32)) {
    received = addNumericalSeparator(String(input));
  } else if (typeof input === 'bigint') {
    received = String(input);
    if (input > Math.pow(BigInt(2), BigInt(32)) || input < -Math.pow(BigInt(2), BigInt(32))) {
      received = addNumericalSeparator(received);
    }
    received += 'n';
  }
  msg += " It must be ".concat(range, ". Received ").concat(received);
  return msg;
}, RangeError);
function addNumericalSeparator(val) {
  var res = '';
  var i = val.length;
  var start = val[0] === '-' ? 1 : 0;
  for (; i >= start + 4; i -= 3) {
    res = "_".concat(val.slice(i - 3, i)).concat(res);
  }
  return "".concat(val.slice(0, i)).concat(res);
}

// CHECK FUNCTIONS
// ===============

function checkBounds(buf, offset, byteLength) {
  validateNumber(offset, 'offset');
  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {
    boundsError(offset, buf.length - (byteLength + 1));
  }
}
function checkIntBI(value, min, max, buf, offset, byteLength) {
  if (value > max || value < min) {
    var n = typeof min === 'bigint' ? 'n' : '';
    var range;
    if (byteLength > 3) {
      if (min === 0 || min === BigInt(0)) {
        range = ">= 0".concat(n, " and < 2").concat(n, " ** ").concat((byteLength + 1) * 8).concat(n);
      } else {
        range = ">= -(2".concat(n, " ** ").concat((byteLength + 1) * 8 - 1).concat(n, ") and < 2 ** ") + "".concat((byteLength + 1) * 8 - 1).concat(n);
      }
    } else {
      range = ">= ".concat(min).concat(n, " and <= ").concat(max).concat(n);
    }
    throw new errors.ERR_OUT_OF_RANGE('value', range, value);
  }
  checkBounds(buf, offset, byteLength);
}
function validateNumber(value, name) {
  if (typeof value !== 'number') {
    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value);
  }
}
function boundsError(value, length, type) {
  if (Math.floor(value) !== value) {
    validateNumber(value, type);
    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value);
  }
  if (length < 0) {
    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();
  }
  throw new errors.ERR_OUT_OF_RANGE(type || 'offset', ">= ".concat(type ? 1 : 0, " and <= ").concat(length), value);
}

// HELPER FUNCTIONS
// ================

var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;
function base64clean(str) {
  // Node takes equal signs as end of the Base64 encoding
  str = str.split('=')[0];
  // Node strips out invalid characters like \n and \t from the string, base64-js does not
  str = str.trim().replace(INVALID_BASE64_RE, '');
  // Node converts strings with length < 2 to ''
  if (str.length < 2) return '';
  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
  while (str.length % 4 !== 0) {
    str = str + '=';
  }
  return str;
}
function utf8ToBytes(string, units) {
  units = units || Infinity;
  var codePoint;
  var length = string.length;
  var leadSurrogate = null;
  var bytes = [];
  for (var i = 0; i < length; ++i) {
    codePoint = string.charCodeAt(i);

    // is surrogate component
    if (codePoint > 0xD7FF && codePoint < 0xE000) {
      // last char was a lead
      if (!leadSurrogate) {
        // no lead yet
        if (codePoint > 0xDBFF) {
          // unexpected trail
          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
          continue;
        } else if (i + 1 === length) {
          // unpaired lead
          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
          continue;
        }

        // valid lead
        leadSurrogate = codePoint;
        continue;
      }

      // 2 leads in a row
      if (codePoint < 0xDC00) {
        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
        leadSurrogate = codePoint;
        continue;
      }

      // valid surrogate pair
      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
    } else if (leadSurrogate) {
      // valid bmp char, but last char was a lead
      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
    }
    leadSurrogate = null;

    // encode utf8
    if (codePoint < 0x80) {
      if ((units -= 1) < 0) break;
      bytes.push(codePoint);
    } else if (codePoint < 0x800) {
      if ((units -= 2) < 0) break;
      bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);
    } else if (codePoint < 0x10000) {
      if ((units -= 3) < 0) break;
      bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);
    } else if (codePoint < 0x110000) {
      if ((units -= 4) < 0) break;
      bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);
    } else {
      throw new Error('Invalid code point');
    }
  }
  return bytes;
}
function asciiToBytes(str) {
  var byteArray = [];
  for (var i = 0; i < str.length; ++i) {
    // Node's code seems to be doing this and not & 0x7F..
    byteArray.push(str.charCodeAt(i) & 0xFF);
  }
  return byteArray;
}
function utf16leToBytes(str, units) {
  var c, hi, lo;
  var byteArray = [];
  for (var i = 0; i < str.length; ++i) {
    if ((units -= 2) < 0) break;
    c = str.charCodeAt(i);
    hi = c >> 8;
    lo = c % 256;
    byteArray.push(lo);
    byteArray.push(hi);
  }
  return byteArray;
}
function base64ToBytes(str) {
  return base64.toByteArray(base64clean(str));
}
function blitBuffer(src, dst, offset, length) {
  var i;
  for (i = 0; i < length; ++i) {
    if (i + offset >= dst.length || i >= src.length) break;
    dst[i + offset] = src[i];
  }
  return i;
}

// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass
// the `instanceof` check but they should be treated as of that type.
// See: https://github.com/feross/buffer/issues/166
function isInstance(obj, type) {
  return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;
}
function numberIsNaN(obj) {
  // For IE11 support
  return obj !== obj; // eslint-disable-line no-self-compare
}

// Create lookup table for `toString('hex')`
// See: https://github.com/feross/buffer/issues/219
var hexSliceLookupTable = function () {
  var alphabet = '0123456789abcdef';
  var table = new Array(256);
  for (var i = 0; i < 16; ++i) {
    var i16 = i * 16;
    for (var j = 0; j < 16; ++j) {
      table[i16 + j] = alphabet[i] + alphabet[j];
    }
  }
  return table;
}();

// Return not function with Error if BigInt not supported
function defineBigIntMethod(fn) {
  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn;
}
function BufferBigIntNotDefined() {
  throw new Error('BigInt not supported');
}

/***/ }),

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

"use strict";


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); }
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.

function isArray(arg) {
  if (Array.isArray) {
    return Array.isArray(arg);
  }
  return objectToString(arg) === '[object Array]';
}
exports.isArray = isArray;
function isBoolean(arg) {
  return typeof arg === 'boolean';
}
exports.isBoolean = isBoolean;
function isNull(arg) {
  return arg === null;
}
exports.isNull = isNull;
function isNullOrUndefined(arg) {
  return arg == null;
}
exports.isNullOrUndefined = isNullOrUndefined;
function isNumber(arg) {
  return typeof arg === 'number';
}
exports.isNumber = isNumber;
function isString(arg) {
  return typeof arg === 'string';
}
exports.isString = isString;
function isSymbol(arg) {
  return _typeof(arg) === 'symbol';
}
exports.isSymbol = isSymbol;
function isUndefined(arg) {
  return arg === void 0;
}
exports.isUndefined = isUndefined;
function isRegExp(re) {
  return objectToString(re) === '[object RegExp]';
}
exports.isRegExp = isRegExp;
function isObject(arg) {
  return _typeof(arg) === 'object' && arg !== null;
}
exports.isObject = isObject;
function isDate(d) {
  return objectToString(d) === '[object Date]';
}
exports.isDate = isDate;
function isError(e) {
  return objectToString(e) === '[object Error]' || e instanceof Error;
}
exports.isError = isError;
function isFunction(arg) {
  return typeof arg === 'function';
}
exports.isFunction = isFunction;
function isPrimitive(arg) {
  return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || _typeof(arg) === 'symbol' ||
  // ES6 symbol
  typeof arg === 'undefined';
}
exports.isPrimitive = isPrimitive;
exports.isBuffer = __webpack_require__(80365).Buffer.isBuffer;
function objectToString(o) {
  return Object.prototype.toString.call(o);
}

/***/ }),

/***/ 55788:
/***/ ((module) => {

"use strict";


/*
  MIT License http://www.opensource.org/licenses/mit-license.php
  Author Tobias Koppers @sokra
*/
// css base code, injected by the css-loader
module.exports = function (useSourceMap) {
  var list = []; // return the list of modules as css string

  list.toString = function toString() {
    return this.map(function (item) {
      var content = cssWithMappingToString(item, useSourceMap);
      if (item[2]) {
        return '@media ' + item[2] + '{' + content + '}';
      } else {
        return content;
      }
    }).join('');
  }; // import a list of modules into the list

  list.i = function (modules, mediaQuery) {
    if (typeof modules === 'string') {
      modules = [[null, modules, '']];
    }
    var alreadyImportedModules = {};
    for (var i = 0; i < this.length; i++) {
      var id = this[i][0];
      if (id != null) {
        alreadyImportedModules[id] = true;
      }
    }
    for (i = 0; i < modules.length; i++) {
      var item = modules[i]; // skip already imported module
      // this implementation is not 100% perfect for weird media query combinations
      // when a module is imported multiple times with different media queries.
      // I hope this will never occur (Hey this way we have smaller bundles)

      if (item[0] == null || !alreadyImportedModules[item[0]]) {
        if (mediaQuery && !item[2]) {
          item[2] = mediaQuery;
        } else if (mediaQuery) {
          item[2] = '(' + item[2] + ') and (' + mediaQuery + ')';
        }
        list.push(item);
      }
    }
  };
  return list;
};
function cssWithMappingToString(item, useSourceMap) {
  var content = item[1] || '';
  var cssMapping = item[3];
  if (!cssMapping) {
    return content;
  }
  if (useSourceMap && typeof btoa === 'function') {
    var sourceMapping = toComment(cssMapping);
    var sourceURLs = cssMapping.sources.map(function (source) {
      return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';
    });
    return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
  }
  return [content].join('\n');
} // Adapted from convert-source-map (MIT)

function toComment(sourceMap) {
  // eslint-disable-next-line no-undef
  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
  var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;
  return '/*# ' + data + ' */';
}

/***/ }),

/***/ 38801:
/***/ ((module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var process = __webpack_require__(554);


/* eslint-env browser */

/**
 * This is the web browser implementation of `debug()`.
 */

exports.formatArgs = formatArgs;
exports.save = save;
exports.load = load;
exports.useColors = useColors;
exports.storage = localstorage();
exports.destroy = function () {
  var warned = false;
  return function () {
    if (!warned) {
      warned = true;
      console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
    }
  };
}();

/**
 * Colors.
 */

exports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];

/**
 * Currently only WebKit-based Web Inspectors, Firefox >= v31,
 * and the Firebug extension (any Firefox version) are known
 * to support "%c" CSS customizations.
 *
 * TODO: add a `localStorage` variable to explicitly enable/disable colors
 */

// eslint-disable-next-line complexity
function useColors() {
  // NB: In an Electron preload script, document will be defined but not fully
  // initialized. Since we know we're in Chrome, we'll just detect this case
  // explicitly
  if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {
    return true;
  }

  // Internet Explorer and Edge do not support colors.
  if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
    return false;
  }

  // Is webkit? http://stackoverflow.com/a/16459606/376773
  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
  return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance ||
  // Is firebug? http://stackoverflow.com/a/398120/376773
  typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) ||
  // Is firefox >= v31?
  // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 ||
  // Double check webkit in userAgent just in case we are in a worker
  typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
}

/**
 * Colorize log arguments if enabled.
 *
 * @api public
 */

function formatArgs(args) {
  args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);
  if (!this.useColors) {
    return;
  }
  var c = 'color: ' + this.color;
  args.splice(1, 0, c, 'color: inherit');

  // The final "%c" is somewhat tricky, because there could be other
  // arguments passed either before or after the %c, so we need to
  // figure out the correct index to insert the CSS into
  var index = 0;
  var lastC = 0;
  args[0].replace(/%[a-zA-Z%]/g, function (match) {
    if (match === '%%') {
      return;
    }
    index++;
    if (match === '%c') {
      // We only are interested in the *last* %c
      // (the user may have provided their own)
      lastC = index;
    }
  });
  args.splice(lastC, 0, c);
}

/**
 * Invokes `console.debug()` when available.
 * No-op when `console.debug` is not a "function".
 * If `console.debug` is not available, falls back
 * to `console.log`.
 *
 * @api public
 */
exports.log = console.debug || console.log || function () {};

/**
 * Save `namespaces`.
 *
 * @param {String} namespaces
 * @api private
 */
function save(namespaces) {
  try {
    if (namespaces) {
      exports.storage.setItem('debug', namespaces);
    } else {
      exports.storage.removeItem('debug');
    }
  } catch (error) {
    // Swallow
    // XXX (@Qix-) should we be logging these?
  }
}

/**
 * Load `namespaces`.
 *
 * @return {String} returns the previously persisted debug modes
 * @api private
 */
function load() {
  var r;
  try {
    r = exports.storage.getItem('debug');
  } catch (error) {
    // Swallow
    // XXX (@Qix-) should we be logging these?
  }

  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
  if (!r && typeof process !== 'undefined' && 'env' in process) {
    r = process.env.DEBUG;
  }
  return r;
}

/**
 * Localstorage attempts to return the localstorage.
 *
 * This is necessary because safari throws
 * when a user disables cookies/localstorage
 * and you attempt to access it.
 *
 * @return {LocalStorage}
 * @api private
 */

function localstorage() {
  try {
    // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context
    // The Browser also has localStorage in the global context.
    return localStorage;
  } catch (error) {
    // Swallow
    // XXX (@Qix-) should we be logging these?
  }
}
module.exports = __webpack_require__(5331)(exports);
var formatters = module.exports.formatters;

/**
 * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
 */

formatters.j = function (v) {
  try {
    return JSON.stringify(v);
  } catch (error) {
    return '[UnexpectedJSONParseError]: ' + error.message;
  }
};

/***/ }),

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

"use strict";


function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
/**
 * This is the common logic for both the Node.js and web browser
 * implementations of `debug()`.
 */

function setup(env) {
  createDebug.debug = createDebug;
  createDebug["default"] = createDebug;
  createDebug.coerce = coerce;
  createDebug.disable = disable;
  createDebug.enable = enable;
  createDebug.enabled = enabled;
  createDebug.humanize = __webpack_require__(32068);
  createDebug.destroy = destroy;
  Object.keys(env).forEach(function (key) {
    createDebug[key] = env[key];
  });

  /**
  * The currently active debug mode names, and names to skip.
  */

  createDebug.names = [];
  createDebug.skips = [];

  /**
  * Map of special "%n" handling functions, for the debug "format" argument.
  *
  * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
  */
  createDebug.formatters = {};

  /**
  * Selects a color for a debug namespace
  * @param {String} namespace The namespace string for the for the debug instance to be colored
  * @return {Number|String} An ANSI color code for the given namespace
  * @api private
  */
  function selectColor(namespace) {
    var hash = 0;
    for (var i = 0; i < namespace.length; i++) {
      hash = (hash << 5) - hash + namespace.charCodeAt(i);
      hash |= 0; // Convert to 32bit integer
    }

    return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
  }
  createDebug.selectColor = selectColor;

  /**
  * Create a debugger with the given `namespace`.
  *
  * @param {String} namespace
  * @return {Function}
  * @api public
  */
  function createDebug(namespace) {
    var prevTime;
    var enableOverride = null;
    var namespacesCache;
    var enabledCache;
    function debug() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }
      // Disabled?
      if (!debug.enabled) {
        return;
      }
      var self = debug;

      // Set `diff` timestamp
      var curr = Number(new Date());
      var ms = curr - (prevTime || curr);
      self.diff = ms;
      self.prev = prevTime;
      self.curr = curr;
      prevTime = curr;
      args[0] = createDebug.coerce(args[0]);
      if (typeof args[0] !== 'string') {
        // Anything else let's inspect with %O
        args.unshift('%O');
      }

      // Apply any `formatters` transformations
      var index = 0;
      args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {
        // If we encounter an escaped % then don't increase the array index
        if (match === '%%') {
          return '%';
        }
        index++;
        var formatter = createDebug.formatters[format];
        if (typeof formatter === 'function') {
          var val = args[index];
          match = formatter.call(self, val);

          // Now we need to remove `args[index]` since it's inlined in the `format`
          args.splice(index, 1);
          index--;
        }
        return match;
      });

      // Apply env-specific formatting (colors, etc.)
      createDebug.formatArgs.call(self, args);
      var logFn = self.log || createDebug.log;
      logFn.apply(self, args);
    }
    debug.namespace = namespace;
    debug.useColors = createDebug.useColors();
    debug.color = createDebug.selectColor(namespace);
    debug.extend = extend;
    debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.

    Object.defineProperty(debug, 'enabled', {
      enumerable: true,
      configurable: false,
      get: function get() {
        if (enableOverride !== null) {
          return enableOverride;
        }
        if (namespacesCache !== createDebug.namespaces) {
          namespacesCache = createDebug.namespaces;
          enabledCache = createDebug.enabled(namespace);
        }
        return enabledCache;
      },
      set: function set(v) {
        enableOverride = v;
      }
    });

    // Env-specific initialization logic for debug instances
    if (typeof createDebug.init === 'function') {
      createDebug.init(debug);
    }
    return debug;
  }
  function extend(namespace, delimiter) {
    var newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);
    newDebug.log = this.log;
    return newDebug;
  }

  /**
  * Enables a debug mode by namespaces. This can include modes
  * separated by a colon and wildcards.
  *
  * @param {String} namespaces
  * @api public
  */
  function enable(namespaces) {
    createDebug.save(namespaces);
    createDebug.namespaces = namespaces;
    createDebug.names = [];
    createDebug.skips = [];
    var i;
    var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
    var len = split.length;
    for (i = 0; i < len; i++) {
      if (!split[i]) {
        // ignore empty strings
        continue;
      }
      namespaces = split[i].replace(/\*/g, '.*?');
      if (namespaces[0] === '-') {
        createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
      } else {
        createDebug.names.push(new RegExp('^' + namespaces + '$'));
      }
    }
  }

  /**
  * Disable debug output.
  *
  * @return {String} namespaces
  * @api public
  */
  function disable() {
    var namespaces = [].concat(_toConsumableArray(createDebug.names.map(toNamespace)), _toConsumableArray(createDebug.skips.map(toNamespace).map(function (namespace) {
      return '-' + namespace;
    }))).join(',');
    createDebug.enable('');
    return namespaces;
  }

  /**
  * Returns true if the given mode name is enabled, false otherwise.
  *
  * @param {String} name
  * @return {Boolean}
  * @api public
  */
  function enabled(name) {
    if (name[name.length - 1] === '*') {
      return true;
    }
    var i;
    var len;
    for (i = 0, len = createDebug.skips.length; i < len; i++) {
      if (createDebug.skips[i].test(name)) {
        return false;
      }
    }
    for (i = 0, len = createDebug.names.length; i < len; i++) {
      if (createDebug.names[i].test(name)) {
        return true;
      }
    }
    return false;
  }

  /**
  * Convert regexp to namespace
  *
  * @param {RegExp} regxep
  * @return {String} namespace
  * @api private
  */
  function toNamespace(regexp) {
    return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, '*');
  }

  /**
  * Coerce `val`.
  *
  * @param {Mixed} val
  * @return {Mixed}
  * @api private
  */
  function coerce(val) {
    if (val instanceof Error) {
      return val.stack || val.message;
    }
    return val;
  }

  /**
  * XXX DO NOT USE. This is a temporary stub function.
  * XXX It WILL be removed in the next major release.
  */
  function destroy() {
    console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
  }
  createDebug.enable(createDebug.load());
  return createDebug;
}
module.exports = setup;

/***/ }),

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

"use strict";
/* provided dependency */ var Buffer = __webpack_require__(80365)["Buffer"];
/* provided dependency */ var process = __webpack_require__(554);


var stream = __webpack_require__(8237);
var eos = __webpack_require__(54582);
var inherits = __webpack_require__(80376);
var shift = __webpack_require__(67738);
var SIGNAL_FLUSH = Buffer.from && Buffer.from !== Uint8Array.from ? Buffer.from([0]) : new Buffer([0]);
var onuncork = function onuncork(self, fn) {
  if (self._corked) self.once('uncork', fn);else fn();
};
var autoDestroy = function autoDestroy(self, err) {
  if (self._autoDestroy) self.destroy(err);
};
var destroyer = function destroyer(self, end) {
  return function (err) {
    if (err) autoDestroy(self, err.message === 'premature close' ? null : err);else if (end && !self._ended) self.end();
  };
};
var end = function end(ws, fn) {
  if (!ws) return fn();
  if (ws._writableState && ws._writableState.finished) return fn();
  if (ws._writableState) return ws.end(fn);
  ws.end();
  fn();
};
var noop = function noop() {};
var toStreams2 = function toStreams2(rs) {
  return new stream.Readable({
    objectMode: true,
    highWaterMark: 16
  }).wrap(rs);
};
var Duplexify = function Duplexify(writable, readable, opts) {
  if (!(this instanceof Duplexify)) return new Duplexify(writable, readable, opts);
  stream.Duplex.call(this, opts);
  this._writable = null;
  this._readable = null;
  this._readable2 = null;
  this._autoDestroy = !opts || opts.autoDestroy !== false;
  this._forwardDestroy = !opts || opts.destroy !== false;
  this._forwardEnd = !opts || opts.end !== false;
  this._corked = 1; // start corked
  this._ondrain = null;
  this._drained = false;
  this._forwarding = false;
  this._unwrite = null;
  this._unread = null;
  this._ended = false;
  this.destroyed = false;
  if (writable) this.setWritable(writable);
  if (readable) this.setReadable(readable);
};
inherits(Duplexify, stream.Duplex);
Duplexify.obj = function (writable, readable, opts) {
  if (!opts) opts = {};
  opts.objectMode = true;
  opts.highWaterMark = 16;
  return new Duplexify(writable, readable, opts);
};
Duplexify.prototype.cork = function () {
  if (++this._corked === 1) this.emit('cork');
};
Duplexify.prototype.uncork = function () {
  if (this._corked && --this._corked === 0) this.emit('uncork');
};
Duplexify.prototype.setWritable = function (writable) {
  if (this._unwrite) this._unwrite();
  if (this.destroyed) {
    if (writable && writable.destroy) writable.destroy();
    return;
  }
  if (writable === null || writable === false) {
    this.end();
    return;
  }
  var self = this;
  var unend = eos(writable, {
    writable: true,
    readable: false
  }, destroyer(this, this._forwardEnd));
  var ondrain = function ondrain() {
    var ondrain = self._ondrain;
    self._ondrain = null;
    if (ondrain) ondrain();
  };
  var clear = function clear() {
    self._writable.removeListener('drain', ondrain);
    unend();
  };
  if (this._unwrite) process.nextTick(ondrain); // force a drain on stream reset to avoid livelocks

  this._writable = writable;
  this._writable.on('drain', ondrain);
  this._unwrite = clear;
  this.uncork(); // always uncork setWritable
};

Duplexify.prototype.setReadable = function (readable) {
  if (this._unread) this._unread();
  if (this.destroyed) {
    if (readable && readable.destroy) readable.destroy();
    return;
  }
  if (readable === null || readable === false) {
    this.push(null);
    this.resume();
    return;
  }
  var self = this;
  var unend = eos(readable, {
    writable: false,
    readable: true
  }, destroyer(this));
  var onreadable = function onreadable() {
    self._forward();
  };
  var onend = function onend() {
    self.push(null);
  };
  var clear = function clear() {
    self._readable2.removeListener('readable', onreadable);
    self._readable2.removeListener('end', onend);
    unend();
  };
  this._drained = true;
  this._readable = readable;
  this._readable2 = readable._readableState ? readable : toStreams2(readable);
  this._readable2.on('readable', onreadable);
  this._readable2.on('end', onend);
  this._unread = clear;
  this._forward();
};
Duplexify.prototype._read = function () {
  this._drained = true;
  this._forward();
};
Duplexify.prototype._forward = function () {
  if (this._forwarding || !this._readable2 || !this._drained) return;
  this._forwarding = true;
  var data;
  while (this._drained && (data = shift(this._readable2)) !== null) {
    if (this.destroyed) continue;
    this._drained = this.push(data);
  }
  this._forwarding = false;
};
Duplexify.prototype.destroy = function (err, cb) {
  if (!cb) cb = noop;
  if (this.destroyed) return cb(null);
  this.destroyed = true;
  var self = this;
  process.nextTick(function () {
    self._destroy(err);
    cb(null);
  });
};
Duplexify.prototype._destroy = function (err) {
  if (err) {
    var ondrain = this._ondrain;
    this._ondrain = null;
    if (ondrain) ondrain(err);else this.emit('error', err);
  }
  if (this._forwardDestroy) {
    if (this._readable && this._readable.destroy) this._readable.destroy();
    if (this._writable && this._writable.destroy) this._writable.destroy();
  }
  this.emit('close');
};
Duplexify.prototype._write = function (data, enc, cb) {
  if (this.destroyed) return;
  if (this._corked) return onuncork(this, this._write.bind(this, data, enc, cb));
  if (data === SIGNAL_FLUSH) return this._finish(cb);
  if (!this._writable) return cb();
  if (this._writable.write(data) === false) this._ondrain = cb;else if (!this.destroyed) cb();
};
Duplexify.prototype._finish = function (cb) {
  var self = this;
  this.emit('preend');
  onuncork(this, function () {
    end(self._forwardEnd && self._writable, function () {
      // haxx to not emit prefinish twice
      if (self._writableState.prefinished === false) self._writableState.prefinished = true;
      self.emit('prefinish');
      onuncork(self, cb);
    });
  });
};
Duplexify.prototype.end = function (data, enc, cb) {
  if (typeof data === 'function') return this.end(null, null, data);
  if (typeof enc === 'function') return this.end(data, null, enc);
  this._ended = true;
  if (data) this.write(data);
  if (!this._writableState.ending && !this._writableState.destroyed) this.write(SIGNAL_FLUSH);
  return stream.Writable.prototype.end.call(this, cb);
};
module.exports = Duplexify;

/***/ }),

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

"use strict";
/* provided dependency */ var process = __webpack_require__(554);


var once = __webpack_require__(98144);
var noop = function noop() {};
var isRequest = function isRequest(stream) {
  return stream.setHeader && typeof stream.abort === 'function';
};
var isChildProcess = function isChildProcess(stream) {
  return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3;
};
var eos = function eos(stream, opts, callback) {
  if (typeof opts === 'function') return eos(stream, null, opts);
  if (!opts) opts = {};
  callback = once(callback || noop);
  var ws = stream._writableState;
  var rs = stream._readableState;
  var readable = opts.readable || opts.readable !== false && stream.readable;
  var writable = opts.writable || opts.writable !== false && stream.writable;
  var cancelled = false;
  var onlegacyfinish = function onlegacyfinish() {
    if (!stream.writable) onfinish();
  };
  var onfinish = function onfinish() {
    writable = false;
    if (!readable) callback.call(stream);
  };
  var onend = function onend() {
    readable = false;
    if (!writable) callback.call(stream);
  };
  var onexit = function onexit(exitCode) {
    callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);
  };
  var onerror = function onerror(err) {
    callback.call(stream, err);
  };
  var onclose = function onclose() {
    process.nextTick(onclosenexttick);
  };
  var onclosenexttick = function onclosenexttick() {
    if (cancelled) return;
    if (readable && !(rs && rs.ended && !rs.destroyed)) return callback.call(stream, new Error('premature close'));
    if (writable && !(ws && ws.ended && !ws.destroyed)) return callback.call(stream, new Error('premature close'));
  };
  var onrequest = function onrequest() {
    stream.req.on('finish', onfinish);
  };
  if (isRequest(stream)) {
    stream.on('complete', onfinish);
    stream.on('abort', onclose);
    if (stream.req) onrequest();else stream.on('request', onrequest);
  } else if (writable && !ws) {
    // legacy streams
    stream.on('end', onlegacyfinish);
    stream.on('close', onlegacyfinish);
  }
  if (isChildProcess(stream)) stream.on('exit', onexit);
  stream.on('end', onend);
  stream.on('finish', onfinish);
  if (opts.error !== false) stream.on('error', onerror);
  stream.on('close', onclose);
  return function () {
    cancelled = true;
    stream.removeListener('complete', onfinish);
    stream.removeListener('abort', onclose);
    stream.removeListener('request', onrequest);
    if (stream.req) stream.req.removeListener('finish', onfinish);
    stream.removeListener('end', onlegacyfinish);
    stream.removeListener('close', onlegacyfinish);
    stream.removeListener('finish', onfinish);
    stream.removeListener('exit', onexit);
    stream.removeListener('end', onend);
    stream.removeListener('error', onerror);
    stream.removeListener('close', onclose);
  };
};
module.exports = eos;

/***/ }),

/***/ 19620:
/***/ ((module) => {

"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.



function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var R = (typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === 'object' ? Reflect : null;
var ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) {
  return Function.prototype.apply.call(target, receiver, args);
};
var ReflectOwnKeys;
if (R && typeof R.ownKeys === 'function') {
  ReflectOwnKeys = R.ownKeys;
} else if (Object.getOwnPropertySymbols) {
  ReflectOwnKeys = function ReflectOwnKeys(target) {
    return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));
  };
} else {
  ReflectOwnKeys = function ReflectOwnKeys(target) {
    return Object.getOwnPropertyNames(target);
  };
}
function ProcessEmitWarning(warning) {
  if (console && console.warn) console.warn(warning);
}
var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
  return value !== value;
};
function EventEmitter() {
  EventEmitter.init.call(this);
}
module.exports = EventEmitter;
module.exports.once = once;

// Backwards-compat with node 0.10.x
EventEmitter.EventEmitter = EventEmitter;
EventEmitter.prototype._events = undefined;
EventEmitter.prototype._eventsCount = 0;
EventEmitter.prototype._maxListeners = undefined;

// By default EventEmitters will print a warning if more than 10 listeners are
// added to it. This is a useful default which helps finding memory leaks.
var defaultMaxListeners = 10;
function checkListener(listener) {
  if (typeof listener !== 'function') {
    throw new TypeError('The "listener" argument must be of type Function. Received type ' + _typeof(listener));
  }
}
Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
  enumerable: true,
  get: function get() {
    return defaultMaxListeners;
  },
  set: function set(arg) {
    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
      throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.');
    }
    defaultMaxListeners = arg;
  }
});
EventEmitter.init = function () {
  if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {
    this._events = Object.create(null);
    this._eventsCount = 0;
  }
  this._maxListeners = this._maxListeners || undefined;
};

// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
    throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.');
  }
  this._maxListeners = n;
  return this;
};
function _getMaxListeners(that) {
  if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners;
  return that._maxListeners;
}
EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
  return _getMaxListeners(this);
};
EventEmitter.prototype.emit = function emit(type) {
  var args = [];
  for (var i = 1; i < arguments.length; i++) {
    args.push(arguments[i]);
  }
  var doError = type === 'error';
  var events = this._events;
  if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false;

  // If there is no 'error' event listener then throw.
  if (doError) {
    var er;
    if (args.length > 0) er = args[0];
    if (er instanceof Error) {
      // Note: The comments on the `throw` lines are intentional, they show
      // up in Node's output if this results in an unhandled exception.
      throw er; // Unhandled 'error' event
    }
    // At least give some kind of context to the user
    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));
    err.context = er;
    throw err; // Unhandled 'error' event
  }

  var handler = events[type];
  if (handler === undefined) return false;
  if (typeof handler === 'function') {
    ReflectApply(handler, this, args);
  } else {
    var len = handler.length;
    var listeners = arrayClone(handler, len);
    for (var i = 0; i < len; ++i) {
      ReflectApply(listeners[i], this, args);
    }
  }
  return true;
};
function _addListener(target, type, listener, prepend) {
  var m;
  var events;
  var existing;
  checkListener(listener);
  events = target._events;
  if (events === undefined) {
    events = target._events = Object.create(null);
    target._eventsCount = 0;
  } else {
    // To avoid recursion in the case that type === "newListener"! Before
    // adding it to the listeners, first emit "newListener".
    if (events.newListener !== undefined) {
      target.emit('newListener', type, listener.listener ? listener.listener : listener);

      // Re-assign `events` because a newListener handler could have caused the
      // this._events to be assigned to a new object
      events = target._events;
    }
    existing = events[type];
  }
  if (existing === undefined) {
    // Optimize the case of one listener. Don't need the extra array object.
    existing = events[type] = listener;
    ++target._eventsCount;
  } else {
    if (typeof existing === 'function') {
      // Adding the second element, need to change to array.
      existing = events[type] = prepend ? [listener, existing] : [existing, listener];
      // If we've already got an array, just append.
    } else if (prepend) {
      existing.unshift(listener);
    } else {
      existing.push(listener);
    }

    // Check for listener leak
    m = _getMaxListeners(target);
    if (m > 0 && existing.length > m && !existing.warned) {
      existing.warned = true;
      // No error code for this since it is a Warning
      // eslint-disable-next-line no-restricted-syntax
      var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' ' + String(type) + ' listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit');
      w.name = 'MaxListenersExceededWarning';
      w.emitter = target;
      w.type = type;
      w.count = existing.length;
      ProcessEmitWarning(w);
    }
  }
  return target;
}
EventEmitter.prototype.addListener = function addListener(type, listener) {
  return _addListener(this, type, listener, false);
};
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
EventEmitter.prototype.prependListener = function prependListener(type, listener) {
  return _addListener(this, type, listener, true);
};
function onceWrapper() {
  if (!this.fired) {
    this.target.removeListener(this.type, this.wrapFn);
    this.fired = true;
    if (arguments.length === 0) return this.listener.call(this.target);
    return this.listener.apply(this.target, arguments);
  }
}
function _onceWrap(target, type, listener) {
  var state = {
    fired: false,
    wrapFn: undefined,
    target: target,
    type: type,
    listener: listener
  };
  var wrapped = onceWrapper.bind(state);
  wrapped.listener = listener;
  state.wrapFn = wrapped;
  return wrapped;
}
EventEmitter.prototype.once = function once(type, listener) {
  checkListener(listener);
  this.on(type, _onceWrap(this, type, listener));
  return this;
};
EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {
  checkListener(listener);
  this.prependListener(type, _onceWrap(this, type, listener));
  return this;
};

// Emits a 'removeListener' event if and only if the listener was removed.
EventEmitter.prototype.removeListener = function removeListener(type, listener) {
  var list, events, position, i, originalListener;
  checkListener(listener);
  events = this._events;
  if (events === undefined) return this;
  list = events[type];
  if (list === undefined) return this;
  if (list === listener || list.listener === listener) {
    if (--this._eventsCount === 0) this._events = Object.create(null);else {
      delete events[type];
      if (events.removeListener) this.emit('removeListener', type, list.listener || listener);
    }
  } else if (typeof list !== 'function') {
    position = -1;
    for (i = list.length - 1; i >= 0; i--) {
      if (list[i] === listener || list[i].listener === listener) {
        originalListener = list[i].listener;
        position = i;
        break;
      }
    }
    if (position < 0) return this;
    if (position === 0) list.shift();else {
      spliceOne(list, position);
    }
    if (list.length === 1) events[type] = list[0];
    if (events.removeListener !== undefined) this.emit('removeListener', type, originalListener || listener);
  }
  return this;
};
EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {
  var listeners, events, i;
  events = this._events;
  if (events === undefined) return this;

  // not listening for removeListener, no need to emit
  if (events.removeListener === undefined) {
    if (arguments.length === 0) {
      this._events = Object.create(null);
      this._eventsCount = 0;
    } else if (events[type] !== undefined) {
      if (--this._eventsCount === 0) this._events = Object.create(null);else delete events[type];
    }
    return this;
  }

  // emit removeListener for all listeners on all events
  if (arguments.length === 0) {
    var keys = Object.keys(events);
    var key;
    for (i = 0; i < keys.length; ++i) {
      key = keys[i];
      if (key === 'removeListener') continue;
      this.removeAllListeners(key);
    }
    this.removeAllListeners('removeListener');
    this._events = Object.create(null);
    this._eventsCount = 0;
    return this;
  }
  listeners = events[type];
  if (typeof listeners === 'function') {
    this.removeListener(type, listeners);
  } else if (listeners !== undefined) {
    // LIFO order
    for (i = listeners.length - 1; i >= 0; i--) {
      this.removeListener(type, listeners[i]);
    }
  }
  return this;
};
function _listeners(target, type, unwrap) {
  var events = target._events;
  if (events === undefined) return [];
  var evlistener = events[type];
  if (evlistener === undefined) return [];
  if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener];
  return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
}
EventEmitter.prototype.listeners = function listeners(type) {
  return _listeners(this, type, true);
};
EventEmitter.prototype.rawListeners = function rawListeners(type) {
  return _listeners(this, type, false);
};
EventEmitter.listenerCount = function (emitter, type) {
  if (typeof emitter.listenerCount === 'function') {
    return emitter.listenerCount(type);
  } else {
    return listenerCount.call(emitter, type);
  }
};
EventEmitter.prototype.listenerCount = listenerCount;
function listenerCount(type) {
  var events = this._events;
  if (events !== undefined) {
    var evlistener = events[type];
    if (typeof evlistener === 'function') {
      return 1;
    } else if (evlistener !== undefined) {
      return evlistener.length;
    }
  }
  return 0;
}
EventEmitter.prototype.eventNames = function eventNames() {
  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
};
function arrayClone(arr, n) {
  var copy = new Array(n);
  for (var i = 0; i < n; ++i) {
    copy[i] = arr[i];
  }
  return copy;
}
function spliceOne(list, index) {
  for (; index + 1 < list.length; index++) {
    list[index] = list[index + 1];
  }
  list.pop();
}
function unwrapListeners(arr) {
  var ret = new Array(arr.length);
  for (var i = 0; i < ret.length; ++i) {
    ret[i] = arr[i].listener || arr[i];
  }
  return ret;
}
function once(emitter, name) {
  return new Promise(function (resolve, reject) {
    function errorListener(err) {
      emitter.removeListener(name, resolver);
      reject(err);
    }
    function resolver() {
      if (typeof emitter.removeListener === 'function') {
        emitter.removeListener('error', errorListener);
      }
      resolve([].slice.call(arguments));
    }
    ;
    eventTargetAgnosticAddListener(emitter, name, resolver, {
      once: true
    });
    if (name !== 'error') {
      addErrorHandlerIfEventEmitter(emitter, errorListener, {
        once: true
      });
    }
  });
}
function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
  if (typeof emitter.on === 'function') {
    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);
  }
}
function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
  if (typeof emitter.on === 'function') {
    if (flags.once) {
      emitter.once(name, listener);
    } else {
      emitter.on(name, listener);
    }
  } else if (typeof emitter.addEventListener === 'function') {
    // EventTarget does not have `error` event semantics like Node
    // EventEmitters, we do not listen for `error` events here.
    emitter.addEventListener(name, function wrapListener(arg) {
      // IE does not have builtin `{ once: true }` support so we
      // have to do it manually.
      if (flags.once) {
        emitter.removeEventListener(name, wrapListener);
      }
      listener(arg);
    });
  } else {
    throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + _typeof(emitter));
  }
}

/***/ }),

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

"use strict";


/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
exports.read = function (buffer, offset, isLE, mLen, nBytes) {
  var e, m;
  var eLen = nBytes * 8 - mLen - 1;
  var eMax = (1 << eLen) - 1;
  var eBias = eMax >> 1;
  var nBits = -7;
  var i = isLE ? nBytes - 1 : 0;
  var d = isLE ? -1 : 1;
  var s = buffer[offset + i];
  i += d;
  e = s & (1 << -nBits) - 1;
  s >>= -nBits;
  nBits += eLen;
  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
  m = e & (1 << -nBits) - 1;
  e >>= -nBits;
  nBits += mLen;
  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
  if (e === 0) {
    e = 1 - eBias;
  } else if (e === eMax) {
    return m ? NaN : (s ? -1 : 1) * Infinity;
  } else {
    m = m + Math.pow(2, mLen);
    e = e - eBias;
  }
  return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
};
exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
  var e, m, c;
  var eLen = nBytes * 8 - mLen - 1;
  var eMax = (1 << eLen) - 1;
  var eBias = eMax >> 1;
  var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
  var i = isLE ? 0 : nBytes - 1;
  var d = isLE ? 1 : -1;
  var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
  value = Math.abs(value);
  if (isNaN(value) || value === Infinity) {
    m = isNaN(value) ? 1 : 0;
    e = eMax;
  } else {
    e = Math.floor(Math.log(value) / Math.LN2);
    if (value * (c = Math.pow(2, -e)) < 1) {
      e--;
      c *= 2;
    }
    if (e + eBias >= 1) {
      value += rt / c;
    } else {
      value += rt * Math.pow(2, 1 - eBias);
    }
    if (value * c >= 2) {
      e++;
      c /= 2;
    }
    if (e + eBias >= eMax) {
      m = 0;
      e = eMax;
    } else if (e + eBias >= 1) {
      m = (value * c - 1) * Math.pow(2, mLen);
      e = e + eBias;
    } else {
      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
      e = 0;
    }
  }
  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
  e = e << mLen | m;
  eLen += mLen;
  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
  buffer[offset + i - d] |= s * 128;
};

/***/ }),

/***/ 80376:
/***/ ((module) => {

"use strict";


if (typeof Object.create === 'function') {
  // implementation from standard node.js 'util' module
  module.exports = function inherits(ctor, superCtor) {
    if (superCtor) {
      ctor.super_ = superCtor;
      ctor.prototype = Object.create(superCtor.prototype, {
        constructor: {
          value: ctor,
          enumerable: false,
          writable: true,
          configurable: true
        }
      });
    }
  };
} else {
  // old school shim for old browsers
  module.exports = function inherits(ctor, superCtor) {
    if (superCtor) {
      ctor.super_ = superCtor;
      var TempCtor = function TempCtor() {};
      TempCtor.prototype = superCtor.prototype;
      ctor.prototype = new TempCtor();
      ctor.prototype.constructor = ctor;
    }
  };
}

/***/ }),

/***/ 7577:
/***/ ((module) => {

"use strict";


var toString = {}.toString;
module.exports = Array.isArray || function (arr) {
  return toString.call(arr) == '[object Array]';
};

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.ContainerIterator = exports.Container = exports.Base = void 0;
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(n, t) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (n, t) {
      n.__proto__ = t;
    } || function (n, t) {
      for (var r in t) {
        if (Object.prototype.hasOwnProperty.call(t, r)) n[r] = t[r];
      }
    };
    return _extendStatics(n, t);
  };
  return function (n, t) {
    if (typeof t !== "function" && t !== null) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
    _extendStatics(n, t);
    function __() {
      this.constructor = n;
    }
    n.prototype = t === null ? Object.create(t) : (__.prototype = t.prototype, new __());
  };
}();
var ContainerIterator = function () {
  function ContainerIterator(n) {
    if (n === void 0) {
      n = 0;
    }
    this.iteratorType = n;
  }
  ContainerIterator.prototype.equals = function (n) {
    return this.o === n.o;
  };
  return ContainerIterator;
}();
exports.ContainerIterator = ContainerIterator;
var Base = function () {
  function Base() {
    this.M = 0;
  }
  Object.defineProperty(Base.prototype, "length", {
    get: function get() {
      return this.M;
    },
    enumerable: false,
    configurable: true
  });
  Base.prototype.size = function () {
    return this.M;
  };
  Base.prototype.empty = function () {
    return this.M === 0;
  };
  return Base;
}();
exports.Base = Base;
var Container = function (n) {
  __extends(Container, n);
  function Container() {
    return n !== null && n.apply(this, arguments) || this;
  }
  return Container;
}(Base);
exports.Container = Container;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.HashContainerIterator = exports.HashContainer = void 0;
var _ContainerBase = __webpack_require__(86625);
var _checkObject = _interopRequireDefault(__webpack_require__(35127));
var _throwError = __webpack_require__(31162);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(t, i) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (t, i) {
      t.__proto__ = i;
    } || function (t, i) {
      for (var r in i) {
        if (Object.prototype.hasOwnProperty.call(i, r)) t[r] = i[r];
      }
    };
    return _extendStatics(t, i);
  };
  return function (t, i) {
    if (typeof i !== "function" && i !== null) throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");
    _extendStatics(t, i);
    function __() {
      this.constructor = t;
    }
    t.prototype = i === null ? Object.create(i) : (__.prototype = i.prototype, new __());
  };
}();
var HashContainerIterator = function (t) {
  __extends(HashContainerIterator, t);
  function HashContainerIterator(i, r, e) {
    var n = t.call(this, e) || this;
    n.o = i;
    n.h = r;
    if (n.iteratorType === 0) {
      n.pre = function () {
        if (this.o.L === this.h) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o = this.o.L;
        return this;
      };
      n.next = function () {
        if (this.o === this.h) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o = this.o.m;
        return this;
      };
    } else {
      n.pre = function () {
        if (this.o.m === this.h) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o = this.o.m;
        return this;
      };
      n.next = function () {
        if (this.o === this.h) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o = this.o.L;
        return this;
      };
    }
    return n;
  }
  return HashContainerIterator;
}(_ContainerBase.ContainerIterator);
exports.HashContainerIterator = HashContainerIterator;
var HashContainer = function (t) {
  __extends(HashContainer, t);
  function HashContainer() {
    var i = t.call(this) || this;
    i._ = [];
    i.I = {};
    i.HASH_TAG = Symbol("@@HASH_TAG");
    Object.setPrototypeOf(i.I, null);
    i.h = {};
    i.h.L = i.h.m = i.H = i.l = i.h;
    return i;
  }
  HashContainer.prototype.G = function (t) {
    var i = t.L,
      r = t.m;
    i.m = r;
    r.L = i;
    if (t === this.H) {
      this.H = r;
    }
    if (t === this.l) {
      this.l = i;
    }
    this.M -= 1;
  };
  HashContainer.prototype.v = function (t, i, r) {
    if (r === undefined) r = (0, _checkObject["default"])(t);
    var e;
    if (r) {
      var n = t[this.HASH_TAG];
      if (n !== undefined) {
        this._[n].p = i;
        return this.M;
      }
      Object.defineProperty(t, this.HASH_TAG, {
        value: this._.length,
        configurable: true
      });
      e = {
        u: t,
        p: i,
        L: this.l,
        m: this.h
      };
      this._.push(e);
    } else {
      var s = this.I[t];
      if (s) {
        s.p = i;
        return this.M;
      }
      e = {
        u: t,
        p: i,
        L: this.l,
        m: this.h
      };
      this.I[t] = e;
    }
    if (this.M === 0) {
      this.H = e;
      this.h.m = e;
    } else {
      this.l.m = e;
    }
    this.l = e;
    this.h.L = e;
    return ++this.M;
  };
  HashContainer.prototype.g = function (t, i) {
    if (i === undefined) i = (0, _checkObject["default"])(t);
    if (i) {
      var r = t[this.HASH_TAG];
      if (r === undefined) return this.h;
      return this._[r];
    } else {
      return this.I[t] || this.h;
    }
  };
  HashContainer.prototype.clear = function () {
    var t = this.HASH_TAG;
    this._.forEach(function (i) {
      delete i.u[t];
    });
    this._ = [];
    this.I = {};
    Object.setPrototypeOf(this.I, null);
    this.M = 0;
    this.H = this.l = this.h.L = this.h.m = this.h;
  };
  HashContainer.prototype.eraseElementByKey = function (t, i) {
    var r;
    if (i === undefined) i = (0, _checkObject["default"])(t);
    if (i) {
      var e = t[this.HASH_TAG];
      if (e === undefined) return false;
      delete t[this.HASH_TAG];
      r = this._[e];
      delete this._[e];
    } else {
      r = this.I[t];
      if (r === undefined) return false;
      delete this.I[t];
    }
    this.G(r);
    return true;
  };
  HashContainer.prototype.eraseElementByIterator = function (t) {
    var i = t.o;
    if (i === this.h) {
      (0, _throwError.throwIteratorAccessError)();
    }
    this.G(i);
    return t.next();
  };
  HashContainer.prototype.eraseElementByPos = function (t) {
    if (t < 0 || t > this.M - 1) {
      throw new RangeError();
    }
    var i = this.H;
    while (t--) {
      i = i.m;
    }
    this.G(i);
    return this.M;
  };
  return HashContainer;
}(_ContainerBase.Container);
exports.HashContainer = HashContainer;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Base = __webpack_require__(42790);
var _checkObject = _interopRequireDefault(__webpack_require__(35127));
var _throwError = __webpack_require__(31162);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(t, r) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (t, r) {
      t.__proto__ = r;
    } || function (t, r) {
      for (var n in r) {
        if (Object.prototype.hasOwnProperty.call(r, n)) t[n] = r[n];
      }
    };
    return _extendStatics(t, r);
  };
  return function (t, r) {
    if (typeof r !== "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null");
    _extendStatics(t, r);
    function __() {
      this.constructor = t;
    }
    t.prototype = r === null ? Object.create(r) : (__.prototype = r.prototype, new __());
  };
}();
var __generator = void 0 && (void 0).i || function (t, r) {
  var n = {
      label: 0,
      sent: function sent() {
        if (a[0] & 1) throw a[1];
        return a[1];
      },
      trys: [],
      ops: []
    },
    e,
    i,
    a,
    s;
  return s = {
    next: verb(0),
    "throw": verb(1),
    "return": verb(2)
  }, typeof Symbol === "function" && (s[Symbol.iterator] = function () {
    return this;
  }), s;
  function verb(t) {
    return function (r) {
      return step([t, r]);
    };
  }
  function step(s) {
    if (e) throw new TypeError("Generator is already executing.");
    while (n) {
      try {
        if (e = 1, i && (a = s[0] & 2 ? i["return"] : s[0] ? i["throw"] || ((a = i["return"]) && a.call(i), 0) : i.next) && !(a = a.call(i, s[1])).done) return a;
        if (i = 0, a) s = [s[0] & 2, a.value];
        switch (s[0]) {
          case 0:
          case 1:
            a = s;
            break;
          case 4:
            n.label++;
            return {
              value: s[1],
              done: false
            };
          case 5:
            n.label++;
            i = s[1];
            s = [0];
            continue;
          case 7:
            s = n.ops.pop();
            n.trys.pop();
            continue;
          default:
            if (!(a = n.trys, a = a.length > 0 && a[a.length - 1]) && (s[0] === 6 || s[0] === 2)) {
              n = 0;
              continue;
            }
            if (s[0] === 3 && (!a || s[1] > a[0] && s[1] < a[3])) {
              n.label = s[1];
              break;
            }
            if (s[0] === 6 && n.label < a[1]) {
              n.label = a[1];
              a = s;
              break;
            }
            if (a && n.label < a[2]) {
              n.label = a[2];
              n.ops.push(s);
              break;
            }
            if (a[2]) n.ops.pop();
            n.trys.pop();
            continue;
        }
        s = r.call(t, n);
      } catch (t) {
        s = [6, t];
        i = 0;
      } finally {
        e = a = 0;
      }
    }
    if (s[0] & 5) throw s[1];
    return {
      value: s[0] ? s[1] : void 0,
      done: true
    };
  }
};
var HashMapIterator = function (t) {
  __extends(HashMapIterator, t);
  function HashMapIterator(r, n, e, i) {
    var a = t.call(this, r, n, i) || this;
    a.container = e;
    return a;
  }
  Object.defineProperty(HashMapIterator.prototype, "pointer", {
    get: function get() {
      if (this.o === this.h) {
        (0, _throwError.throwIteratorAccessError)();
      }
      var t = this;
      return new Proxy([], {
        get: function get(r, n) {
          if (n === "0") return t.o.u;else if (n === "1") return t.o.p;
        },
        set: function set(r, n, e) {
          if (n !== "1") {
            throw new TypeError("props must be 1");
          }
          t.o.p = e;
          return true;
        }
      });
    },
    enumerable: false,
    configurable: true
  });
  HashMapIterator.prototype.copy = function () {
    return new HashMapIterator(this.o, this.h, this.container, this.iteratorType);
  };
  return HashMapIterator;
}(_Base.HashContainerIterator);
var HashMap = function (t) {
  __extends(HashMap, t);
  function HashMap(r) {
    if (r === void 0) {
      r = [];
    }
    var n = t.call(this) || this;
    var e = n;
    r.forEach(function (t) {
      e.setElement(t[0], t[1]);
    });
    return n;
  }
  HashMap.prototype.begin = function () {
    return new HashMapIterator(this.H, this.h, this);
  };
  HashMap.prototype.end = function () {
    return new HashMapIterator(this.h, this.h, this);
  };
  HashMap.prototype.rBegin = function () {
    return new HashMapIterator(this.l, this.h, this, 1);
  };
  HashMap.prototype.rEnd = function () {
    return new HashMapIterator(this.h, this.h, this, 1);
  };
  HashMap.prototype.front = function () {
    if (this.M === 0) return;
    return [this.H.u, this.H.p];
  };
  HashMap.prototype.back = function () {
    if (this.M === 0) return;
    return [this.l.u, this.l.p];
  };
  HashMap.prototype.setElement = function (t, r, n) {
    return this.v(t, r, n);
  };
  HashMap.prototype.getElementByKey = function (t, r) {
    if (r === undefined) r = (0, _checkObject["default"])(t);
    if (r) {
      var n = t[this.HASH_TAG];
      return n !== undefined ? this._[n].p : undefined;
    }
    var e = this.I[t];
    return e ? e.p : undefined;
  };
  HashMap.prototype.getElementByPos = function (t) {
    if (t < 0 || t > this.M - 1) {
      throw new RangeError();
    }
    var r = this.H;
    while (t--) {
      r = r.m;
    }
    return [r.u, r.p];
  };
  HashMap.prototype.find = function (t, r) {
    var n = this.g(t, r);
    return new HashMapIterator(n, this.h, this);
  };
  HashMap.prototype.forEach = function (t) {
    var r = 0;
    var n = this.H;
    while (n !== this.h) {
      t([n.u, n.p], r++, this);
      n = n.m;
    }
  };
  HashMap.prototype[Symbol.iterator] = function () {
    return function () {
      var t;
      return __generator(this, function (r) {
        switch (r.label) {
          case 0:
            t = this.H;
            r.label = 1;
          case 1:
            if (!(t !== this.h)) return [3, 3];
            return [4, [t.u, t.p]];
          case 2:
            r.sent();
            t = t.m;
            return [3, 1];
          case 3:
            return [2];
        }
      });
    }.bind(this)();
  };
  return HashMap;
}(_Base.HashContainer);
var _default = HashMap;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Base = __webpack_require__(42790);
var _throwError = __webpack_require__(31162);
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(t, r) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (t, r) {
      t.__proto__ = r;
    } || function (t, r) {
      for (var e in r) {
        if (Object.prototype.hasOwnProperty.call(r, e)) t[e] = r[e];
      }
    };
    return _extendStatics(t, r);
  };
  return function (t, r) {
    if (typeof r !== "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null");
    _extendStatics(t, r);
    function __() {
      this.constructor = t;
    }
    t.prototype = r === null ? Object.create(r) : (__.prototype = r.prototype, new __());
  };
}();
var __generator = void 0 && (void 0).i || function (t, r) {
  var e = {
      label: 0,
      sent: function sent() {
        if (s[0] & 1) throw s[1];
        return s[1];
      },
      trys: [],
      ops: []
    },
    n,
    i,
    s,
    a;
  return a = {
    next: verb(0),
    "throw": verb(1),
    "return": verb(2)
  }, typeof Symbol === "function" && (a[Symbol.iterator] = function () {
    return this;
  }), a;
  function verb(t) {
    return function (r) {
      return step([t, r]);
    };
  }
  function step(a) {
    if (n) throw new TypeError("Generator is already executing.");
    while (e) {
      try {
        if (n = 1, i && (s = a[0] & 2 ? i["return"] : a[0] ? i["throw"] || ((s = i["return"]) && s.call(i), 0) : i.next) && !(s = s.call(i, a[1])).done) return s;
        if (i = 0, s) a = [a[0] & 2, s.value];
        switch (a[0]) {
          case 0:
          case 1:
            s = a;
            break;
          case 4:
            e.label++;
            return {
              value: a[1],
              done: false
            };
          case 5:
            e.label++;
            i = a[1];
            a = [0];
            continue;
          case 7:
            a = e.ops.pop();
            e.trys.pop();
            continue;
          default:
            if (!(s = e.trys, s = s.length > 0 && s[s.length - 1]) && (a[0] === 6 || a[0] === 2)) {
              e = 0;
              continue;
            }
            if (a[0] === 3 && (!s || a[1] > s[0] && a[1] < s[3])) {
              e.label = a[1];
              break;
            }
            if (a[0] === 6 && e.label < s[1]) {
              e.label = s[1];
              s = a;
              break;
            }
            if (s && e.label < s[2]) {
              e.label = s[2];
              e.ops.push(a);
              break;
            }
            if (s[2]) e.ops.pop();
            e.trys.pop();
            continue;
        }
        a = r.call(t, e);
      } catch (t) {
        a = [6, t];
        i = 0;
      } finally {
        n = s = 0;
      }
    }
    if (a[0] & 5) throw a[1];
    return {
      value: a[0] ? a[1] : void 0,
      done: true
    };
  }
};
var HashSetIterator = function (t) {
  __extends(HashSetIterator, t);
  function HashSetIterator(r, e, n, i) {
    var s = t.call(this, r, e, i) || this;
    s.container = n;
    return s;
  }
  Object.defineProperty(HashSetIterator.prototype, "pointer", {
    get: function get() {
      if (this.o === this.h) {
        (0, _throwError.throwIteratorAccessError)();
      }
      return this.o.u;
    },
    enumerable: false,
    configurable: true
  });
  HashSetIterator.prototype.copy = function () {
    return new HashSetIterator(this.o, this.h, this.container, this.iteratorType);
  };
  return HashSetIterator;
}(_Base.HashContainerIterator);
var HashSet = function (t) {
  __extends(HashSet, t);
  function HashSet(r) {
    if (r === void 0) {
      r = [];
    }
    var e = t.call(this) || this;
    var n = e;
    r.forEach(function (t) {
      n.insert(t);
    });
    return e;
  }
  HashSet.prototype.begin = function () {
    return new HashSetIterator(this.H, this.h, this);
  };
  HashSet.prototype.end = function () {
    return new HashSetIterator(this.h, this.h, this);
  };
  HashSet.prototype.rBegin = function () {
    return new HashSetIterator(this.l, this.h, this, 1);
  };
  HashSet.prototype.rEnd = function () {
    return new HashSetIterator(this.h, this.h, this, 1);
  };
  HashSet.prototype.front = function () {
    return this.H.u;
  };
  HashSet.prototype.back = function () {
    return this.l.u;
  };
  HashSet.prototype.insert = function (t, r) {
    return this.v(t, undefined, r);
  };
  HashSet.prototype.getElementByPos = function (t) {
    if (t < 0 || t > this.M - 1) {
      throw new RangeError();
    }
    var r = this.H;
    while (t--) {
      r = r.m;
    }
    return r.u;
  };
  HashSet.prototype.find = function (t, r) {
    var e = this.g(t, r);
    return new HashSetIterator(e, this.h, this);
  };
  HashSet.prototype.forEach = function (t) {
    var r = 0;
    var e = this.H;
    while (e !== this.h) {
      t(e.u, r++, this);
      e = e.m;
    }
  };
  HashSet.prototype[Symbol.iterator] = function () {
    return function () {
      var t;
      return __generator(this, function (r) {
        switch (r.label) {
          case 0:
            t = this.H;
            r.label = 1;
          case 1:
            if (!(t !== this.h)) return [3, 3];
            return [4, t.u];
          case 2:
            r.sent();
            t = t.m;
            return [3, 1];
          case 3:
            return [2];
        }
      });
    }.bind(this)();
  };
  return HashSet;
}(_Base.HashContainer);
var _default = HashSet;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ContainerBase = __webpack_require__(86625);
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(i, r) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (i, r) {
      i.__proto__ = r;
    } || function (i, r) {
      for (var t in r) {
        if (Object.prototype.hasOwnProperty.call(r, t)) i[t] = r[t];
      }
    };
    return _extendStatics(i, r);
  };
  return function (i, r) {
    if (typeof r !== "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null");
    _extendStatics(i, r);
    function __() {
      this.constructor = i;
    }
    i.prototype = r === null ? Object.create(r) : (__.prototype = r.prototype, new __());
  };
}();
var __read = void 0 && (void 0).q || function (i, r) {
  var t = typeof Symbol === "function" && i[Symbol.iterator];
  if (!t) return i;
  var e = t.call(i),
    n,
    u = [],
    s;
  try {
    while ((r === void 0 || r-- > 0) && !(n = e.next()).done) {
      u.push(n.value);
    }
  } catch (i) {
    s = {
      error: i
    };
  } finally {
    try {
      if (n && !n.done && (t = e["return"])) t.call(e);
    } finally {
      if (s) throw s.error;
    }
  }
  return u;
};
var __spreadArray = void 0 && (void 0).D || function (i, r, t) {
  if (t || arguments.length === 2) for (var e = 0, n = r.length, u; e < n; e++) {
    if (u || !(e in r)) {
      if (!u) u = Array.prototype.slice.call(r, 0, e);
      u[e] = r[e];
    }
  }
  return i.concat(u || Array.prototype.slice.call(r));
};
var PriorityQueue = function (i) {
  __extends(PriorityQueue, i);
  function PriorityQueue(r, t, e) {
    if (r === void 0) {
      r = [];
    }
    if (t === void 0) {
      t = function t(i, r) {
        if (i > r) return -1;
        if (i < r) return 1;
        return 0;
      };
    }
    if (e === void 0) {
      e = true;
    }
    var n = i.call(this) || this;
    n.$ = t;
    if (Array.isArray(r)) {
      n.ii = e ? __spreadArray([], __read(r), false) : r;
    } else {
      n.ii = [];
      var u = n;
      r.forEach(function (i) {
        u.ii.push(i);
      });
    }
    n.M = n.ii.length;
    var s = n.M >> 1;
    for (var o = n.M - 1 >> 1; o >= 0; --o) {
      n.ri(o, s);
    }
    return n;
  }
  PriorityQueue.prototype.ti = function (i) {
    var r = this.ii[i];
    while (i > 0) {
      var t = i - 1 >> 1;
      var e = this.ii[t];
      if (this.$(e, r) <= 0) break;
      this.ii[i] = e;
      i = t;
    }
    this.ii[i] = r;
  };
  PriorityQueue.prototype.ri = function (i, r) {
    var t = this.ii[i];
    while (i < r) {
      var e = i << 1 | 1;
      var n = e + 1;
      var u = this.ii[e];
      if (n < this.M && this.$(u, this.ii[n]) > 0) {
        e = n;
        u = this.ii[n];
      }
      if (this.$(u, t) >= 0) break;
      this.ii[i] = u;
      i = e;
    }
    this.ii[i] = t;
  };
  PriorityQueue.prototype.clear = function () {
    this.M = 0;
    this.ii.length = 0;
  };
  PriorityQueue.prototype.push = function (i) {
    this.ii.push(i);
    this.ti(this.M);
    this.M += 1;
  };
  PriorityQueue.prototype.pop = function () {
    if (this.M === 0) return;
    var i = this.ii[0];
    var r = this.ii.pop();
    this.M -= 1;
    if (this.M) {
      this.ii[0] = r;
      this.ri(0, this.M >> 1);
    }
    return i;
  };
  PriorityQueue.prototype.top = function () {
    return this.ii[0];
  };
  PriorityQueue.prototype.find = function (i) {
    return this.ii.indexOf(i) >= 0;
  };
  PriorityQueue.prototype.remove = function (i) {
    var r = this.ii.indexOf(i);
    if (r < 0) return false;
    if (r === 0) {
      this.pop();
    } else if (r === this.M - 1) {
      this.ii.pop();
      this.M -= 1;
    } else {
      this.ii.splice(r, 1, this.ii.pop());
      this.M -= 1;
      this.ti(r);
      this.ri(r, this.M >> 1);
    }
    return true;
  };
  PriorityQueue.prototype.updateItem = function (i) {
    var r = this.ii.indexOf(i);
    if (r < 0) return false;
    this.ti(r);
    this.ri(r, this.M >> 1);
    return true;
  };
  PriorityQueue.prototype.toArray = function () {
    return __spreadArray([], __read(this.ii), false);
  };
  return PriorityQueue;
}(_ContainerBase.Base);
var _default = PriorityQueue;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ContainerBase = __webpack_require__(86625);
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(t, i) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (t, i) {
      t.__proto__ = i;
    } || function (t, i) {
      for (var n in i) {
        if (Object.prototype.hasOwnProperty.call(i, n)) t[n] = i[n];
      }
    };
    return _extendStatics(t, i);
  };
  return function (t, i) {
    if (typeof i !== "function" && i !== null) throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");
    _extendStatics(t, i);
    function __() {
      this.constructor = t;
    }
    t.prototype = i === null ? Object.create(i) : (__.prototype = i.prototype, new __());
  };
}();
var Queue = function (t) {
  __extends(Queue, t);
  function Queue(i) {
    if (i === void 0) {
      i = [];
    }
    var n = t.call(this) || this;
    n.A = 0;
    n.tt = [];
    var e = n;
    i.forEach(function (t) {
      e.push(t);
    });
    return n;
  }
  Queue.prototype.clear = function () {
    this.tt = [];
    this.M = this.A = 0;
  };
  Queue.prototype.push = function (t) {
    var i = this.tt.length;
    if (this.A / i > .5 && this.A + this.M >= i && i > 4096) {
      var n = this.M;
      for (var e = 0; e < n; ++e) {
        this.tt[e] = this.tt[this.A + e];
      }
      this.A = 0;
      this.tt[this.M] = t;
    } else this.tt[this.A + this.M] = t;
    return ++this.M;
  };
  Queue.prototype.pop = function () {
    if (this.M === 0) return;
    var t = this.tt[this.A++];
    this.M -= 1;
    return t;
  };
  Queue.prototype.front = function () {
    if (this.M === 0) return;
    return this.tt[this.A];
  };
  return Queue;
}(_ContainerBase.Base);
var _default = Queue;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ContainerBase = __webpack_require__(86625);
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(t, n) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (t, n) {
      t.__proto__ = n;
    } || function (t, n) {
      for (var i in n) {
        if (Object.prototype.hasOwnProperty.call(n, i)) t[i] = n[i];
      }
    };
    return _extendStatics(t, n);
  };
  return function (t, n) {
    if (typeof n !== "function" && n !== null) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");
    _extendStatics(t, n);
    function __() {
      this.constructor = t;
    }
    t.prototype = n === null ? Object.create(n) : (__.prototype = n.prototype, new __());
  };
}();
var Stack = function (t) {
  __extends(Stack, t);
  function Stack(n) {
    if (n === void 0) {
      n = [];
    }
    var i = t.call(this) || this;
    i.nt = [];
    var r = i;
    n.forEach(function (t) {
      r.push(t);
    });
    return i;
  }
  Stack.prototype.clear = function () {
    this.M = 0;
    this.nt = [];
  };
  Stack.prototype.push = function (t) {
    this.nt.push(t);
    this.M += 1;
    return this.M;
  };
  Stack.prototype.pop = function () {
    if (this.M === 0) return;
    this.M -= 1;
    return this.nt.pop();
  };
  Stack.prototype.top = function () {
    return this.nt[this.M - 1];
  };
  return Stack;
}(_ContainerBase.Base);
var _default = Stack;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.RandomIterator = void 0;
var _ContainerBase = __webpack_require__(86625);
var _throwError = __webpack_require__(31162);
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(t, r) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (t, r) {
      t.__proto__ = r;
    } || function (t, r) {
      for (var n in r) {
        if (Object.prototype.hasOwnProperty.call(r, n)) t[n] = r[n];
      }
    };
    return _extendStatics(t, r);
  };
  return function (t, r) {
    if (typeof r !== "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null");
    _extendStatics(t, r);
    function __() {
      this.constructor = t;
    }
    t.prototype = r === null ? Object.create(r) : (__.prototype = r.prototype, new __());
  };
}();
var RandomIterator = function (t) {
  __extends(RandomIterator, t);
  function RandomIterator(r, n) {
    var o = t.call(this, n) || this;
    o.o = r;
    if (o.iteratorType === 0) {
      o.pre = function () {
        if (this.o === 0) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o -= 1;
        return this;
      };
      o.next = function () {
        if (this.o === this.container.size()) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o += 1;
        return this;
      };
    } else {
      o.pre = function () {
        if (this.o === this.container.size() - 1) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o += 1;
        return this;
      };
      o.next = function () {
        if (this.o === -1) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o -= 1;
        return this;
      };
    }
    return o;
  }
  Object.defineProperty(RandomIterator.prototype, "pointer", {
    get: function get() {
      return this.container.getElementByPos(this.o);
    },
    set: function set(t) {
      this.container.setElementByPos(this.o, t);
    },
    enumerable: false,
    configurable: true
  });
  return RandomIterator;
}(_ContainerBase.ContainerIterator);
exports.RandomIterator = RandomIterator;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ContainerBase = __webpack_require__(86625);
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(n, t) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (n, t) {
      n.__proto__ = t;
    } || function (n, t) {
      for (var e in t) {
        if (Object.prototype.hasOwnProperty.call(t, e)) n[e] = t[e];
      }
    };
    return _extendStatics(n, t);
  };
  return function (n, t) {
    if (typeof t !== "function" && t !== null) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
    _extendStatics(n, t);
    function __() {
      this.constructor = n;
    }
    n.prototype = t === null ? Object.create(t) : (__.prototype = t.prototype, new __());
  };
}();
var SequentialContainer = function (n) {
  __extends(SequentialContainer, n);
  function SequentialContainer() {
    return n !== null && n.apply(this, arguments) || this;
  }
  return SequentialContainer;
}(_ContainerBase.Container);
var _default = SequentialContainer;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Base = _interopRequireDefault(__webpack_require__(32261));
var _RandomIterator = __webpack_require__(93548);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(t, i) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (t, i) {
      t.__proto__ = i;
    } || function (t, i) {
      for (var r in i) {
        if (Object.prototype.hasOwnProperty.call(i, r)) t[r] = i[r];
      }
    };
    return _extendStatics(t, i);
  };
  return function (t, i) {
    if (typeof i !== "function" && i !== null) throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");
    _extendStatics(t, i);
    function __() {
      this.constructor = t;
    }
    t.prototype = i === null ? Object.create(i) : (__.prototype = i.prototype, new __());
  };
}();
var __generator = void 0 && (void 0).i || function (t, i) {
  var r = {
      label: 0,
      sent: function sent() {
        if (h[0] & 1) throw h[1];
        return h[1];
      },
      trys: [],
      ops: []
    },
    e,
    s,
    h,
    n;
  return n = {
    next: verb(0),
    "throw": verb(1),
    "return": verb(2)
  }, typeof Symbol === "function" && (n[Symbol.iterator] = function () {
    return this;
  }), n;
  function verb(t) {
    return function (i) {
      return step([t, i]);
    };
  }
  function step(n) {
    if (e) throw new TypeError("Generator is already executing.");
    while (r) {
      try {
        if (e = 1, s && (h = n[0] & 2 ? s["return"] : n[0] ? s["throw"] || ((h = s["return"]) && h.call(s), 0) : s.next) && !(h = h.call(s, n[1])).done) return h;
        if (s = 0, h) n = [n[0] & 2, h.value];
        switch (n[0]) {
          case 0:
          case 1:
            h = n;
            break;
          case 4:
            r.label++;
            return {
              value: n[1],
              done: false
            };
          case 5:
            r.label++;
            s = n[1];
            n = [0];
            continue;
          case 7:
            n = r.ops.pop();
            r.trys.pop();
            continue;
          default:
            if (!(h = r.trys, h = h.length > 0 && h[h.length - 1]) && (n[0] === 6 || n[0] === 2)) {
              r = 0;
              continue;
            }
            if (n[0] === 3 && (!h || n[1] > h[0] && n[1] < h[3])) {
              r.label = n[1];
              break;
            }
            if (n[0] === 6 && r.label < h[1]) {
              r.label = h[1];
              h = n;
              break;
            }
            if (h && r.label < h[2]) {
              r.label = h[2];
              r.ops.push(n);
              break;
            }
            if (h[2]) r.ops.pop();
            r.trys.pop();
            continue;
        }
        n = i.call(t, r);
      } catch (t) {
        n = [6, t];
        s = 0;
      } finally {
        e = h = 0;
      }
    }
    if (n[0] & 5) throw n[1];
    return {
      value: n[0] ? n[1] : void 0,
      done: true
    };
  }
};
var __read = void 0 && (void 0).q || function (t, i) {
  var r = typeof Symbol === "function" && t[Symbol.iterator];
  if (!r) return t;
  var e = r.call(t),
    s,
    h = [],
    n;
  try {
    while ((i === void 0 || i-- > 0) && !(s = e.next()).done) {
      h.push(s.value);
    }
  } catch (t) {
    n = {
      error: t
    };
  } finally {
    try {
      if (s && !s.done && (r = e["return"])) r.call(e);
    } finally {
      if (n) throw n.error;
    }
  }
  return h;
};
var __spreadArray = void 0 && (void 0).D || function (t, i, r) {
  if (r || arguments.length === 2) for (var e = 0, s = i.length, h; e < s; e++) {
    if (h || !(e in i)) {
      if (!h) h = Array.prototype.slice.call(i, 0, e);
      h[e] = i[e];
    }
  }
  return t.concat(h || Array.prototype.slice.call(i));
};
var DequeIterator = function (t) {
  __extends(DequeIterator, t);
  function DequeIterator(i, r, e) {
    var s = t.call(this, i, e) || this;
    s.container = r;
    return s;
  }
  DequeIterator.prototype.copy = function () {
    return new DequeIterator(this.o, this.container, this.iteratorType);
  };
  return DequeIterator;
}(_RandomIterator.RandomIterator);
var Deque = function (t) {
  __extends(Deque, t);
  function Deque(i, r) {
    if (i === void 0) {
      i = [];
    }
    if (r === void 0) {
      r = 1 << 12;
    }
    var e = t.call(this) || this;
    e.A = 0;
    e.S = 0;
    e.R = 0;
    e.k = 0;
    e.C = 0;
    e.j = [];
    var s = function () {
      if (typeof i.length === "number") return i.length;
      if (typeof i.size === "number") return i.size;
      if (typeof i.size === "function") return i.size();
      throw new TypeError("Cannot get the length or size of the container");
    }();
    e.B = r;
    e.C = Math.max(Math.ceil(s / e.B), 1);
    for (var h = 0; h < e.C; ++h) {
      e.j.push(new Array(e.B));
    }
    var n = Math.ceil(s / e.B);
    e.A = e.R = (e.C >> 1) - (n >> 1);
    e.S = e.k = e.B - s % e.B >> 1;
    var u = e;
    i.forEach(function (t) {
      u.pushBack(t);
    });
    return e;
  }
  Deque.prototype.O = function () {
    var t = [];
    var i = Math.max(this.C >> 1, 1);
    for (var r = 0; r < i; ++r) {
      t[r] = new Array(this.B);
    }
    for (var r = this.A; r < this.C; ++r) {
      t[t.length] = this.j[r];
    }
    for (var r = 0; r < this.R; ++r) {
      t[t.length] = this.j[r];
    }
    t[t.length] = __spreadArray([], __read(this.j[this.R]), false);
    this.A = i;
    this.R = t.length - 1;
    for (var r = 0; r < i; ++r) {
      t[t.length] = new Array(this.B);
    }
    this.j = t;
    this.C = t.length;
  };
  Deque.prototype.T = function (t) {
    var i = this.S + t + 1;
    var r = i % this.B;
    var e = r - 1;
    var s = this.A + (i - r) / this.B;
    if (r === 0) s -= 1;
    s %= this.C;
    if (e < 0) e += this.B;
    return {
      curNodeBucketIndex: s,
      curNodePointerIndex: e
    };
  };
  Deque.prototype.clear = function () {
    this.j = [new Array(this.B)];
    this.C = 1;
    this.A = this.R = this.M = 0;
    this.S = this.k = this.B >> 1;
  };
  Deque.prototype.begin = function () {
    return new DequeIterator(0, this);
  };
  Deque.prototype.end = function () {
    return new DequeIterator(this.M, this);
  };
  Deque.prototype.rBegin = function () {
    return new DequeIterator(this.M - 1, this, 1);
  };
  Deque.prototype.rEnd = function () {
    return new DequeIterator(-1, this, 1);
  };
  Deque.prototype.front = function () {
    if (this.M === 0) return;
    return this.j[this.A][this.S];
  };
  Deque.prototype.back = function () {
    if (this.M === 0) return;
    return this.j[this.R][this.k];
  };
  Deque.prototype.pushBack = function (t) {
    if (this.M) {
      if (this.k < this.B - 1) {
        this.k += 1;
      } else if (this.R < this.C - 1) {
        this.R += 1;
        this.k = 0;
      } else {
        this.R = 0;
        this.k = 0;
      }
      if (this.R === this.A && this.k === this.S) this.O();
    }
    this.M += 1;
    this.j[this.R][this.k] = t;
    return this.M;
  };
  Deque.prototype.popBack = function () {
    if (this.M === 0) return;
    var t = this.j[this.R][this.k];
    if (this.M !== 1) {
      if (this.k > 0) {
        this.k -= 1;
      } else if (this.R > 0) {
        this.R -= 1;
        this.k = this.B - 1;
      } else {
        this.R = this.C - 1;
        this.k = this.B - 1;
      }
    }
    this.M -= 1;
    return t;
  };
  Deque.prototype.pushFront = function (t) {
    if (this.M) {
      if (this.S > 0) {
        this.S -= 1;
      } else if (this.A > 0) {
        this.A -= 1;
        this.S = this.B - 1;
      } else {
        this.A = this.C - 1;
        this.S = this.B - 1;
      }
      if (this.A === this.R && this.S === this.k) this.O();
    }
    this.M += 1;
    this.j[this.A][this.S] = t;
    return this.M;
  };
  Deque.prototype.popFront = function () {
    if (this.M === 0) return;
    var t = this.j[this.A][this.S];
    if (this.M !== 1) {
      if (this.S < this.B - 1) {
        this.S += 1;
      } else if (this.A < this.C - 1) {
        this.A += 1;
        this.S = 0;
      } else {
        this.A = 0;
        this.S = 0;
      }
    }
    this.M -= 1;
    return t;
  };
  Deque.prototype.getElementByPos = function (t) {
    if (t < 0 || t > this.M - 1) {
      throw new RangeError();
    }
    var i = this.T(t),
      r = i.curNodeBucketIndex,
      e = i.curNodePointerIndex;
    return this.j[r][e];
  };
  Deque.prototype.setElementByPos = function (t, i) {
    if (t < 0 || t > this.M - 1) {
      throw new RangeError();
    }
    var r = this.T(t),
      e = r.curNodeBucketIndex,
      s = r.curNodePointerIndex;
    this.j[e][s] = i;
  };
  Deque.prototype.insert = function (t, i, r) {
    if (r === void 0) {
      r = 1;
    }
    if (t < 0 || t > this.M) {
      throw new RangeError();
    }
    if (t === 0) {
      while (r--) {
        this.pushFront(i);
      }
    } else if (t === this.M) {
      while (r--) {
        this.pushBack(i);
      }
    } else {
      var e = [];
      for (var s = t; s < this.M; ++s) {
        e.push(this.getElementByPos(s));
      }
      this.cut(t - 1);
      for (var s = 0; s < r; ++s) {
        this.pushBack(i);
      }
      for (var s = 0; s < e.length; ++s) {
        this.pushBack(e[s]);
      }
    }
    return this.M;
  };
  Deque.prototype.cut = function (t) {
    if (t < 0) {
      this.clear();
      return 0;
    }
    var i = this.T(t),
      r = i.curNodeBucketIndex,
      e = i.curNodePointerIndex;
    this.R = r;
    this.k = e;
    this.M = t + 1;
    return this.M;
  };
  Deque.prototype.eraseElementByPos = function (t) {
    if (t < 0 || t > this.M - 1) {
      throw new RangeError();
    }
    if (t === 0) this.popFront();else if (t === this.M - 1) this.popBack();else {
      var i = [];
      for (var r = t + 1; r < this.M; ++r) {
        i.push(this.getElementByPos(r));
      }
      this.cut(t);
      this.popBack();
      var e = this;
      i.forEach(function (t) {
        e.pushBack(t);
      });
    }
    return this.M;
  };
  Deque.prototype.eraseElementByValue = function (t) {
    if (this.M === 0) return 0;
    var i = [];
    for (var r = 0; r < this.M; ++r) {
      var e = this.getElementByPos(r);
      if (e !== t) i.push(e);
    }
    var s = i.length;
    for (var r = 0; r < s; ++r) {
      this.setElementByPos(r, i[r]);
    }
    return this.cut(s - 1);
  };
  Deque.prototype.eraseElementByIterator = function (t) {
    var i = t.o;
    this.eraseElementByPos(i);
    t = t.next();
    return t;
  };
  Deque.prototype.find = function (t) {
    for (var i = 0; i < this.M; ++i) {
      if (this.getElementByPos(i) === t) {
        return new DequeIterator(i, this);
      }
    }
    return this.end();
  };
  Deque.prototype.reverse = function () {
    var t = 0;
    var i = this.M - 1;
    while (t < i) {
      var r = this.getElementByPos(t);
      this.setElementByPos(t, this.getElementByPos(i));
      this.setElementByPos(i, r);
      t += 1;
      i -= 1;
    }
  };
  Deque.prototype.unique = function () {
    if (this.M <= 1) {
      return this.M;
    }
    var t = 1;
    var i = this.getElementByPos(0);
    for (var r = 1; r < this.M; ++r) {
      var e = this.getElementByPos(r);
      if (e !== i) {
        i = e;
        this.setElementByPos(t++, e);
      }
    }
    while (this.M > t) {
      this.popBack();
    }
    return this.M;
  };
  Deque.prototype.sort = function (t) {
    var i = [];
    for (var r = 0; r < this.M; ++r) {
      i.push(this.getElementByPos(r));
    }
    i.sort(t);
    for (var r = 0; r < this.M; ++r) {
      this.setElementByPos(r, i[r]);
    }
  };
  Deque.prototype.shrinkToFit = function () {
    if (this.M === 0) return;
    var t = [];
    this.forEach(function (i) {
      t.push(i);
    });
    this.C = Math.max(Math.ceil(this.M / this.B), 1);
    this.M = this.A = this.R = this.S = this.k = 0;
    this.j = [];
    for (var i = 0; i < this.C; ++i) {
      this.j.push(new Array(this.B));
    }
    for (var i = 0; i < t.length; ++i) {
      this.pushBack(t[i]);
    }
  };
  Deque.prototype.forEach = function (t) {
    for (var i = 0; i < this.M; ++i) {
      t(this.getElementByPos(i), i, this);
    }
  };
  Deque.prototype[Symbol.iterator] = function () {
    return function () {
      var t;
      return __generator(this, function (i) {
        switch (i.label) {
          case 0:
            t = 0;
            i.label = 1;
          case 1:
            if (!(t < this.M)) return [3, 4];
            return [4, this.getElementByPos(t)];
          case 2:
            i.sent();
            i.label = 3;
          case 3:
            ++t;
            return [3, 1];
          case 4:
            return [2];
        }
      });
    }.bind(this)();
  };
  return Deque;
}(_Base["default"]);
var _default = Deque;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Base = _interopRequireDefault(__webpack_require__(32261));
var _ContainerBase = __webpack_require__(86625);
var _throwError = __webpack_require__(31162);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(t, i) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (t, i) {
      t.__proto__ = i;
    } || function (t, i) {
      for (var r in i) {
        if (Object.prototype.hasOwnProperty.call(i, r)) t[r] = i[r];
      }
    };
    return _extendStatics(t, i);
  };
  return function (t, i) {
    if (typeof i !== "function" && i !== null) throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");
    _extendStatics(t, i);
    function __() {
      this.constructor = t;
    }
    t.prototype = i === null ? Object.create(i) : (__.prototype = i.prototype, new __());
  };
}();
var __generator = void 0 && (void 0).i || function (t, i) {
  var r = {
      label: 0,
      sent: function sent() {
        if (e[0] & 1) throw e[1];
        return e[1];
      },
      trys: [],
      ops: []
    },
    n,
    s,
    e,
    h;
  return h = {
    next: verb(0),
    "throw": verb(1),
    "return": verb(2)
  }, typeof Symbol === "function" && (h[Symbol.iterator] = function () {
    return this;
  }), h;
  function verb(t) {
    return function (i) {
      return step([t, i]);
    };
  }
  function step(h) {
    if (n) throw new TypeError("Generator is already executing.");
    while (r) {
      try {
        if (n = 1, s && (e = h[0] & 2 ? s["return"] : h[0] ? s["throw"] || ((e = s["return"]) && e.call(s), 0) : s.next) && !(e = e.call(s, h[1])).done) return e;
        if (s = 0, e) h = [h[0] & 2, e.value];
        switch (h[0]) {
          case 0:
          case 1:
            e = h;
            break;
          case 4:
            r.label++;
            return {
              value: h[1],
              done: false
            };
          case 5:
            r.label++;
            s = h[1];
            h = [0];
            continue;
          case 7:
            h = r.ops.pop();
            r.trys.pop();
            continue;
          default:
            if (!(e = r.trys, e = e.length > 0 && e[e.length - 1]) && (h[0] === 6 || h[0] === 2)) {
              r = 0;
              continue;
            }
            if (h[0] === 3 && (!e || h[1] > e[0] && h[1] < e[3])) {
              r.label = h[1];
              break;
            }
            if (h[0] === 6 && r.label < e[1]) {
              r.label = e[1];
              e = h;
              break;
            }
            if (e && r.label < e[2]) {
              r.label = e[2];
              r.ops.push(h);
              break;
            }
            if (e[2]) r.ops.pop();
            r.trys.pop();
            continue;
        }
        h = i.call(t, r);
      } catch (t) {
        h = [6, t];
        s = 0;
      } finally {
        n = e = 0;
      }
    }
    if (h[0] & 5) throw h[1];
    return {
      value: h[0] ? h[1] : void 0,
      done: true
    };
  }
};
var LinkListIterator = function (t) {
  __extends(LinkListIterator, t);
  function LinkListIterator(i, r, n, s) {
    var e = t.call(this, s) || this;
    e.o = i;
    e.h = r;
    e.container = n;
    if (e.iteratorType === 0) {
      e.pre = function () {
        if (this.o.L === this.h) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o = this.o.L;
        return this;
      };
      e.next = function () {
        if (this.o === this.h) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o = this.o.m;
        return this;
      };
    } else {
      e.pre = function () {
        if (this.o.m === this.h) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o = this.o.m;
        return this;
      };
      e.next = function () {
        if (this.o === this.h) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o = this.o.L;
        return this;
      };
    }
    return e;
  }
  Object.defineProperty(LinkListIterator.prototype, "pointer", {
    get: function get() {
      if (this.o === this.h) {
        (0, _throwError.throwIteratorAccessError)();
      }
      return this.o.p;
    },
    set: function set(t) {
      if (this.o === this.h) {
        (0, _throwError.throwIteratorAccessError)();
      }
      this.o.p = t;
    },
    enumerable: false,
    configurable: true
  });
  LinkListIterator.prototype.copy = function () {
    return new LinkListIterator(this.o, this.h, this.container, this.iteratorType);
  };
  return LinkListIterator;
}(_ContainerBase.ContainerIterator);
var LinkList = function (t) {
  __extends(LinkList, t);
  function LinkList(i) {
    if (i === void 0) {
      i = [];
    }
    var r = t.call(this) || this;
    r.h = {};
    r.H = r.l = r.h.L = r.h.m = r.h;
    var n = r;
    i.forEach(function (t) {
      n.pushBack(t);
    });
    return r;
  }
  LinkList.prototype.G = function (t) {
    var i = t.L,
      r = t.m;
    i.m = r;
    r.L = i;
    if (t === this.H) {
      this.H = r;
    }
    if (t === this.l) {
      this.l = i;
    }
    this.M -= 1;
  };
  LinkList.prototype.F = function (t, i) {
    var r = i.m;
    var n = {
      p: t,
      L: i,
      m: r
    };
    i.m = n;
    r.L = n;
    if (i === this.h) {
      this.H = n;
    }
    if (r === this.h) {
      this.l = n;
    }
    this.M += 1;
  };
  LinkList.prototype.clear = function () {
    this.M = 0;
    this.H = this.l = this.h.L = this.h.m = this.h;
  };
  LinkList.prototype.begin = function () {
    return new LinkListIterator(this.H, this.h, this);
  };
  LinkList.prototype.end = function () {
    return new LinkListIterator(this.h, this.h, this);
  };
  LinkList.prototype.rBegin = function () {
    return new LinkListIterator(this.l, this.h, this, 1);
  };
  LinkList.prototype.rEnd = function () {
    return new LinkListIterator(this.h, this.h, this, 1);
  };
  LinkList.prototype.front = function () {
    return this.H.p;
  };
  LinkList.prototype.back = function () {
    return this.l.p;
  };
  LinkList.prototype.getElementByPos = function (t) {
    if (t < 0 || t > this.M - 1) {
      throw new RangeError();
    }
    var i = this.H;
    while (t--) {
      i = i.m;
    }
    return i.p;
  };
  LinkList.prototype.eraseElementByPos = function (t) {
    if (t < 0 || t > this.M - 1) {
      throw new RangeError();
    }
    var i = this.H;
    while (t--) {
      i = i.m;
    }
    this.G(i);
    return this.M;
  };
  LinkList.prototype.eraseElementByValue = function (t) {
    var i = this.H;
    while (i !== this.h) {
      if (i.p === t) {
        this.G(i);
      }
      i = i.m;
    }
    return this.M;
  };
  LinkList.prototype.eraseElementByIterator = function (t) {
    var i = t.o;
    if (i === this.h) {
      (0, _throwError.throwIteratorAccessError)();
    }
    t = t.next();
    this.G(i);
    return t;
  };
  LinkList.prototype.pushBack = function (t) {
    this.F(t, this.l);
    return this.M;
  };
  LinkList.prototype.popBack = function () {
    if (this.M === 0) return;
    var t = this.l.p;
    this.G(this.l);
    return t;
  };
  LinkList.prototype.pushFront = function (t) {
    this.F(t, this.h);
    return this.M;
  };
  LinkList.prototype.popFront = function () {
    if (this.M === 0) return;
    var t = this.H.p;
    this.G(this.H);
    return t;
  };
  LinkList.prototype.setElementByPos = function (t, i) {
    if (t < 0 || t > this.M - 1) {
      throw new RangeError();
    }
    var r = this.H;
    while (t--) {
      r = r.m;
    }
    r.p = i;
  };
  LinkList.prototype.insert = function (t, i, r) {
    if (r === void 0) {
      r = 1;
    }
    if (t < 0 || t > this.M) {
      throw new RangeError();
    }
    if (r <= 0) return this.M;
    if (t === 0) {
      while (r--) {
        this.pushFront(i);
      }
    } else if (t === this.M) {
      while (r--) {
        this.pushBack(i);
      }
    } else {
      var n = this.H;
      for (var s = 1; s < t; ++s) {
        n = n.m;
      }
      var e = n.m;
      this.M += r;
      while (r--) {
        n.m = {
          p: i,
          L: n
        };
        n.m.L = n;
        n = n.m;
      }
      n.m = e;
      e.L = n;
    }
    return this.M;
  };
  LinkList.prototype.find = function (t) {
    var i = this.H;
    while (i !== this.h) {
      if (i.p === t) {
        return new LinkListIterator(i, this.h, this);
      }
      i = i.m;
    }
    return this.end();
  };
  LinkList.prototype.reverse = function () {
    if (this.M <= 1) return;
    var t = this.H;
    var i = this.l;
    var r = 0;
    while (r << 1 < this.M) {
      var n = t.p;
      t.p = i.p;
      i.p = n;
      t = t.m;
      i = i.L;
      r += 1;
    }
  };
  LinkList.prototype.unique = function () {
    if (this.M <= 1) {
      return this.M;
    }
    var t = this.H;
    while (t !== this.h) {
      var i = t;
      while (i.m !== this.h && i.p === i.m.p) {
        i = i.m;
        this.M -= 1;
      }
      t.m = i.m;
      t.m.L = t;
      t = t.m;
    }
    return this.M;
  };
  LinkList.prototype.sort = function (t) {
    if (this.M <= 1) return;
    var i = [];
    this.forEach(function (t) {
      i.push(t);
    });
    i.sort(t);
    var r = this.H;
    i.forEach(function (t) {
      r.p = t;
      r = r.m;
    });
  };
  LinkList.prototype.merge = function (t) {
    var i = this;
    if (this.M === 0) {
      t.forEach(function (t) {
        i.pushBack(t);
      });
    } else {
      var r = this.H;
      t.forEach(function (t) {
        while (r !== i.h && r.p <= t) {
          r = r.m;
        }
        i.F(t, r.L);
      });
    }
    return this.M;
  };
  LinkList.prototype.forEach = function (t) {
    var i = this.H;
    var r = 0;
    while (i !== this.h) {
      t(i.p, r++, this);
      i = i.m;
    }
  };
  LinkList.prototype[Symbol.iterator] = function () {
    return function () {
      var t;
      return __generator(this, function (i) {
        switch (i.label) {
          case 0:
            if (this.M === 0) return [2];
            t = this.H;
            i.label = 1;
          case 1:
            if (!(t !== this.h)) return [3, 3];
            return [4, t.p];
          case 2:
            i.sent();
            t = t.m;
            return [3, 1];
          case 3:
            return [2];
        }
      });
    }.bind(this)();
  };
  return LinkList;
}(_Base["default"]);
var _default = LinkList;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Base = _interopRequireDefault(__webpack_require__(32261));
var _RandomIterator = __webpack_require__(93548);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(t, r) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (t, r) {
      t.__proto__ = r;
    } || function (t, r) {
      for (var e in r) {
        if (Object.prototype.hasOwnProperty.call(r, e)) t[e] = r[e];
      }
    };
    return _extendStatics(t, r);
  };
  return function (t, r) {
    if (typeof r !== "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null");
    _extendStatics(t, r);
    function __() {
      this.constructor = t;
    }
    t.prototype = r === null ? Object.create(r) : (__.prototype = r.prototype, new __());
  };
}();
var __generator = void 0 && (void 0).i || function (t, r) {
  var e = {
      label: 0,
      sent: function sent() {
        if (o[0] & 1) throw o[1];
        return o[1];
      },
      trys: [],
      ops: []
    },
    n,
    i,
    o,
    u;
  return u = {
    next: verb(0),
    "throw": verb(1),
    "return": verb(2)
  }, typeof Symbol === "function" && (u[Symbol.iterator] = function () {
    return this;
  }), u;
  function verb(t) {
    return function (r) {
      return step([t, r]);
    };
  }
  function step(u) {
    if (n) throw new TypeError("Generator is already executing.");
    while (e) {
      try {
        if (n = 1, i && (o = u[0] & 2 ? i["return"] : u[0] ? i["throw"] || ((o = i["return"]) && o.call(i), 0) : i.next) && !(o = o.call(i, u[1])).done) return o;
        if (i = 0, o) u = [u[0] & 2, o.value];
        switch (u[0]) {
          case 0:
          case 1:
            o = u;
            break;
          case 4:
            e.label++;
            return {
              value: u[1],
              done: false
            };
          case 5:
            e.label++;
            i = u[1];
            u = [0];
            continue;
          case 7:
            u = e.ops.pop();
            e.trys.pop();
            continue;
          default:
            if (!(o = e.trys, o = o.length > 0 && o[o.length - 1]) && (u[0] === 6 || u[0] === 2)) {
              e = 0;
              continue;
            }
            if (u[0] === 3 && (!o || u[1] > o[0] && u[1] < o[3])) {
              e.label = u[1];
              break;
            }
            if (u[0] === 6 && e.label < o[1]) {
              e.label = o[1];
              o = u;
              break;
            }
            if (o && e.label < o[2]) {
              e.label = o[2];
              e.ops.push(u);
              break;
            }
            if (o[2]) e.ops.pop();
            e.trys.pop();
            continue;
        }
        u = r.call(t, e);
      } catch (t) {
        u = [6, t];
        i = 0;
      } finally {
        n = o = 0;
      }
    }
    if (u[0] & 5) throw u[1];
    return {
      value: u[0] ? u[1] : void 0,
      done: true
    };
  }
};
var __read = void 0 && (void 0).q || function (t, r) {
  var e = typeof Symbol === "function" && t[Symbol.iterator];
  if (!e) return t;
  var n = e.call(t),
    i,
    o = [],
    u;
  try {
    while ((r === void 0 || r-- > 0) && !(i = n.next()).done) {
      o.push(i.value);
    }
  } catch (t) {
    u = {
      error: t
    };
  } finally {
    try {
      if (i && !i.done && (e = n["return"])) e.call(n);
    } finally {
      if (u) throw u.error;
    }
  }
  return o;
};
var __spreadArray = void 0 && (void 0).D || function (t, r, e) {
  if (e || arguments.length === 2) for (var n = 0, i = r.length, o; n < i; n++) {
    if (o || !(n in r)) {
      if (!o) o = Array.prototype.slice.call(r, 0, n);
      o[n] = r[n];
    }
  }
  return t.concat(o || Array.prototype.slice.call(r));
};
var __values = void 0 && (void 0).V || function (t) {
  var r = typeof Symbol === "function" && Symbol.iterator,
    e = r && t[r],
    n = 0;
  if (e) return e.call(t);
  if (t && typeof t.length === "number") return {
    next: function next() {
      if (t && n >= t.length) t = void 0;
      return {
        value: t && t[n++],
        done: !t
      };
    }
  };
  throw new TypeError(r ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var VectorIterator = function (t) {
  __extends(VectorIterator, t);
  function VectorIterator(r, e, n) {
    var i = t.call(this, r, n) || this;
    i.container = e;
    return i;
  }
  VectorIterator.prototype.copy = function () {
    return new VectorIterator(this.o, this.container, this.iteratorType);
  };
  return VectorIterator;
}(_RandomIterator.RandomIterator);
var Vector = function (t) {
  __extends(Vector, t);
  function Vector(r, e) {
    if (r === void 0) {
      r = [];
    }
    if (e === void 0) {
      e = true;
    }
    var n = t.call(this) || this;
    if (Array.isArray(r)) {
      n.J = e ? __spreadArray([], __read(r), false) : r;
      n.M = r.length;
    } else {
      n.J = [];
      var i = n;
      r.forEach(function (t) {
        i.pushBack(t);
      });
    }
    return n;
  }
  Vector.prototype.clear = function () {
    this.M = 0;
    this.J.length = 0;
  };
  Vector.prototype.begin = function () {
    return new VectorIterator(0, this);
  };
  Vector.prototype.end = function () {
    return new VectorIterator(this.M, this);
  };
  Vector.prototype.rBegin = function () {
    return new VectorIterator(this.M - 1, this, 1);
  };
  Vector.prototype.rEnd = function () {
    return new VectorIterator(-1, this, 1);
  };
  Vector.prototype.front = function () {
    return this.J[0];
  };
  Vector.prototype.back = function () {
    return this.J[this.M - 1];
  };
  Vector.prototype.getElementByPos = function (t) {
    if (t < 0 || t > this.M - 1) {
      throw new RangeError();
    }
    return this.J[t];
  };
  Vector.prototype.eraseElementByPos = function (t) {
    if (t < 0 || t > this.M - 1) {
      throw new RangeError();
    }
    this.J.splice(t, 1);
    this.M -= 1;
    return this.M;
  };
  Vector.prototype.eraseElementByValue = function (t) {
    var r = 0;
    for (var e = 0; e < this.M; ++e) {
      if (this.J[e] !== t) {
        this.J[r++] = this.J[e];
      }
    }
    this.M = this.J.length = r;
    return this.M;
  };
  Vector.prototype.eraseElementByIterator = function (t) {
    var r = t.o;
    t = t.next();
    this.eraseElementByPos(r);
    return t;
  };
  Vector.prototype.pushBack = function (t) {
    this.J.push(t);
    this.M += 1;
    return this.M;
  };
  Vector.prototype.popBack = function () {
    if (this.M === 0) return;
    this.M -= 1;
    return this.J.pop();
  };
  Vector.prototype.setElementByPos = function (t, r) {
    if (t < 0 || t > this.M - 1) {
      throw new RangeError();
    }
    this.J[t] = r;
  };
  Vector.prototype.insert = function (t, r, e) {
    var n;
    if (e === void 0) {
      e = 1;
    }
    if (t < 0 || t > this.M) {
      throw new RangeError();
    }
    (n = this.J).splice.apply(n, __spreadArray([t, 0], __read(new Array(e).fill(r)), false));
    this.M += e;
    return this.M;
  };
  Vector.prototype.find = function (t) {
    for (var r = 0; r < this.M; ++r) {
      if (this.J[r] === t) {
        return new VectorIterator(r, this);
      }
    }
    return this.end();
  };
  Vector.prototype.reverse = function () {
    this.J.reverse();
  };
  Vector.prototype.unique = function () {
    var t = 1;
    for (var r = 1; r < this.M; ++r) {
      if (this.J[r] !== this.J[r - 1]) {
        this.J[t++] = this.J[r];
      }
    }
    this.M = this.J.length = t;
    return this.M;
  };
  Vector.prototype.sort = function (t) {
    this.J.sort(t);
  };
  Vector.prototype.forEach = function (t) {
    for (var r = 0; r < this.M; ++r) {
      t(this.J[r], r, this);
    }
  };
  Vector.prototype[Symbol.iterator] = function () {
    return function () {
      return __generator(this, function (t) {
        switch (t.label) {
          case 0:
            return [5, __values(this.J)];
          case 1:
            t.sent();
            return [2];
        }
      });
    }.bind(this)();
  };
  return Vector;
}(_Base["default"]);
var _default = Vector;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _ContainerBase = __webpack_require__(86625);
var _throwError = __webpack_require__(31162);
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(r, t) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (r, t) {
      r.__proto__ = t;
    } || function (r, t) {
      for (var e in t) {
        if (Object.prototype.hasOwnProperty.call(t, e)) r[e] = t[e];
      }
    };
    return _extendStatics(r, t);
  };
  return function (r, t) {
    if (typeof t !== "function" && t !== null) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
    _extendStatics(r, t);
    function __() {
      this.constructor = r;
    }
    r.prototype = t === null ? Object.create(t) : (__.prototype = t.prototype, new __());
  };
}();
var TreeIterator = function (r) {
  __extends(TreeIterator, r);
  function TreeIterator(t, e, i) {
    var n = r.call(this, i) || this;
    n.o = t;
    n.h = e;
    if (n.iteratorType === 0) {
      n.pre = function () {
        if (this.o === this.h.K) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o = this.o.L();
        return this;
      };
      n.next = function () {
        if (this.o === this.h) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o = this.o.m();
        return this;
      };
    } else {
      n.pre = function () {
        if (this.o === this.h.N) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o = this.o.m();
        return this;
      };
      n.next = function () {
        if (this.o === this.h) {
          (0, _throwError.throwIteratorAccessError)();
        }
        this.o = this.o.L();
        return this;
      };
    }
    return n;
  }
  Object.defineProperty(TreeIterator.prototype, "index", {
    get: function get() {
      var r = this.o;
      var t = this.h.rr;
      if (r === this.h) {
        if (t) {
          return t.tr - 1;
        }
        return 0;
      }
      var e = 0;
      if (r.K) {
        e += r.K.tr;
      }
      while (r !== t) {
        var i = r.rr;
        if (r === i.N) {
          e += 1;
          if (i.K) {
            e += i.K.tr;
          }
        }
        r = i;
      }
      return e;
    },
    enumerable: false,
    configurable: true
  });
  return TreeIterator;
}(_ContainerBase.ContainerIterator);
var _default = TreeIterator;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.TreeNodeEnableIndex = exports.TreeNode = void 0;
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(e, n) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (e, n) {
      e.__proto__ = n;
    } || function (e, n) {
      for (var t in n) {
        if (Object.prototype.hasOwnProperty.call(n, t)) e[t] = n[t];
      }
    };
    return _extendStatics(e, n);
  };
  return function (e, n) {
    if (typeof n !== "function" && n !== null) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");
    _extendStatics(e, n);
    function __() {
      this.constructor = e;
    }
    e.prototype = n === null ? Object.create(n) : (__.prototype = n.prototype, new __());
  };
}();
var TreeNode = function () {
  function TreeNode(e, n) {
    this.ee = 1;
    this.u = undefined;
    this.p = undefined;
    this.K = undefined;
    this.N = undefined;
    this.rr = undefined;
    this.u = e;
    this.p = n;
  }
  TreeNode.prototype.L = function () {
    var e = this;
    if (e.ee === 1 && e.rr.rr === e) {
      e = e.N;
    } else if (e.K) {
      e = e.K;
      while (e.N) {
        e = e.N;
      }
    } else {
      var n = e.rr;
      while (n.K === e) {
        e = n;
        n = e.rr;
      }
      e = n;
    }
    return e;
  };
  TreeNode.prototype.m = function () {
    var e = this;
    if (e.N) {
      e = e.N;
      while (e.K) {
        e = e.K;
      }
      return e;
    } else {
      var n = e.rr;
      while (n.N === e) {
        e = n;
        n = e.rr;
      }
      if (e.N !== n) {
        return n;
      } else return e;
    }
  };
  TreeNode.prototype.ne = function () {
    var e = this.rr;
    var n = this.N;
    var t = n.K;
    if (e.rr === this) e.rr = n;else if (e.K === this) e.K = n;else e.N = n;
    n.rr = e;
    n.K = this;
    this.rr = n;
    this.N = t;
    if (t) t.rr = this;
    return n;
  };
  TreeNode.prototype.te = function () {
    var e = this.rr;
    var n = this.K;
    var t = n.N;
    if (e.rr === this) e.rr = n;else if (e.K === this) e.K = n;else e.N = n;
    n.rr = e;
    n.N = this;
    this.rr = n;
    this.K = t;
    if (t) t.rr = this;
    return n;
  };
  return TreeNode;
}();
exports.TreeNode = TreeNode;
var TreeNodeEnableIndex = function (e) {
  __extends(TreeNodeEnableIndex, e);
  function TreeNodeEnableIndex() {
    var n = e !== null && e.apply(this, arguments) || this;
    n.tr = 1;
    return n;
  }
  TreeNodeEnableIndex.prototype.ne = function () {
    var n = e.prototype.ne.call(this);
    this.ie();
    n.ie();
    return n;
  };
  TreeNodeEnableIndex.prototype.te = function () {
    var n = e.prototype.te.call(this);
    this.ie();
    n.ie();
    return n;
  };
  TreeNodeEnableIndex.prototype.ie = function () {
    this.tr = 1;
    if (this.K) {
      this.tr += this.K.tr;
    }
    if (this.N) {
      this.tr += this.N.tr;
    }
  };
  return TreeNodeEnableIndex;
}(TreeNode);
exports.TreeNodeEnableIndex = TreeNodeEnableIndex;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _TreeNode = __webpack_require__(33703);
var _ContainerBase = __webpack_require__(86625);
var _throwError = __webpack_require__(31162);
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(e, r) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (e, r) {
      e.__proto__ = r;
    } || function (e, r) {
      for (var i in r) {
        if (Object.prototype.hasOwnProperty.call(r, i)) e[i] = r[i];
      }
    };
    return _extendStatics(e, r);
  };
  return function (e, r) {
    if (typeof r !== "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null");
    _extendStatics(e, r);
    function __() {
      this.constructor = e;
    }
    e.prototype = r === null ? Object.create(r) : (__.prototype = r.prototype, new __());
  };
}();
var __read = void 0 && (void 0).q || function (e, r) {
  var i = typeof Symbol === "function" && e[Symbol.iterator];
  if (!i) return e;
  var t = i.call(e),
    n,
    s = [],
    f;
  try {
    while ((r === void 0 || r-- > 0) && !(n = t.next()).done) {
      s.push(n.value);
    }
  } catch (e) {
    f = {
      error: e
    };
  } finally {
    try {
      if (n && !n.done && (i = t["return"])) i.call(t);
    } finally {
      if (f) throw f.error;
    }
  }
  return s;
};
var __values = void 0 && (void 0).V || function (e) {
  var r = typeof Symbol === "function" && Symbol.iterator,
    i = r && e[r],
    t = 0;
  if (i) return i.call(e);
  if (e && typeof e.length === "number") return {
    next: function next() {
      if (e && t >= e.length) e = void 0;
      return {
        value: e && e[t++],
        done: !e
      };
    }
  };
  throw new TypeError(r ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var TreeContainer = function (e) {
  __extends(TreeContainer, e);
  function TreeContainer(r, i) {
    if (r === void 0) {
      r = function r(e, _r) {
        if (e < _r) return -1;
        if (e > _r) return 1;
        return 0;
      };
    }
    if (i === void 0) {
      i = false;
    }
    var t = e.call(this) || this;
    t.W = undefined;
    t.$ = r;
    if (i) {
      t.re = _TreeNode.TreeNodeEnableIndex;
      t.v = function (e, r, i) {
        var t = this.se(e, r, i);
        if (t) {
          var n = t.rr;
          while (n !== this.h) {
            n.tr += 1;
            n = n.rr;
          }
          var s = this.fe(t);
          if (s) {
            var f = s,
              h = f.parentNode,
              u = f.grandParent,
              a = f.curNode;
            h.ie();
            u.ie();
            a.ie();
          }
        }
        return this.M;
      };
      t.G = function (e) {
        var r = this.he(e);
        while (r !== this.h) {
          r.tr -= 1;
          r = r.rr;
        }
      };
    } else {
      t.re = _TreeNode.TreeNode;
      t.v = function (e, r, i) {
        var t = this.se(e, r, i);
        if (t) this.fe(t);
        return this.M;
      };
      t.G = t.he;
    }
    t.h = new t.re();
    return t;
  }
  TreeContainer.prototype.U = function (e, r) {
    var i = this.h;
    while (e) {
      var t = this.$(e.u, r);
      if (t < 0) {
        e = e.N;
      } else if (t > 0) {
        i = e;
        e = e.K;
      } else return e;
    }
    return i;
  };
  TreeContainer.prototype.X = function (e, r) {
    var i = this.h;
    while (e) {
      var t = this.$(e.u, r);
      if (t <= 0) {
        e = e.N;
      } else {
        i = e;
        e = e.K;
      }
    }
    return i;
  };
  TreeContainer.prototype.Y = function (e, r) {
    var i = this.h;
    while (e) {
      var t = this.$(e.u, r);
      if (t < 0) {
        i = e;
        e = e.N;
      } else if (t > 0) {
        e = e.K;
      } else return e;
    }
    return i;
  };
  TreeContainer.prototype.Z = function (e, r) {
    var i = this.h;
    while (e) {
      var t = this.$(e.u, r);
      if (t < 0) {
        i = e;
        e = e.N;
      } else {
        e = e.K;
      }
    }
    return i;
  };
  TreeContainer.prototype.ue = function (e) {
    while (true) {
      var r = e.rr;
      if (r === this.h) return;
      if (e.ee === 1) {
        e.ee = 0;
        return;
      }
      if (e === r.K) {
        var i = r.N;
        if (i.ee === 1) {
          i.ee = 0;
          r.ee = 1;
          if (r === this.W) {
            this.W = r.ne();
          } else r.ne();
        } else {
          if (i.N && i.N.ee === 1) {
            i.ee = r.ee;
            r.ee = 0;
            i.N.ee = 0;
            if (r === this.W) {
              this.W = r.ne();
            } else r.ne();
            return;
          } else if (i.K && i.K.ee === 1) {
            i.ee = 1;
            i.K.ee = 0;
            i.te();
          } else {
            i.ee = 1;
            e = r;
          }
        }
      } else {
        var i = r.K;
        if (i.ee === 1) {
          i.ee = 0;
          r.ee = 1;
          if (r === this.W) {
            this.W = r.te();
          } else r.te();
        } else {
          if (i.K && i.K.ee === 1) {
            i.ee = r.ee;
            r.ee = 0;
            i.K.ee = 0;
            if (r === this.W) {
              this.W = r.te();
            } else r.te();
            return;
          } else if (i.N && i.N.ee === 1) {
            i.ee = 1;
            i.N.ee = 0;
            i.ne();
          } else {
            i.ee = 1;
            e = r;
          }
        }
      }
    }
  };
  TreeContainer.prototype.he = function (e) {
    var r, i;
    if (this.M === 1) {
      this.clear();
      return this.h;
    }
    var t = e;
    while (t.K || t.N) {
      if (t.N) {
        t = t.N;
        while (t.K) {
          t = t.K;
        }
      } else {
        t = t.K;
      }
      r = __read([t.u, e.u], 2), e.u = r[0], t.u = r[1];
      i = __read([t.p, e.p], 2), e.p = i[0], t.p = i[1];
      e = t;
    }
    if (this.h.K === t) {
      this.h.K = t.rr;
    } else if (this.h.N === t) {
      this.h.N = t.rr;
    }
    this.ue(t);
    var n = t.rr;
    if (t === n.K) {
      n.K = undefined;
    } else n.N = undefined;
    this.M -= 1;
    this.W.ee = 0;
    return n;
  };
  TreeContainer.prototype.ae = function (e, r) {
    if (e === undefined) return false;
    var i = this.ae(e.K, r);
    if (i) return true;
    if (r(e)) return true;
    return this.ae(e.N, r);
  };
  TreeContainer.prototype.fe = function (e) {
    while (true) {
      var r = e.rr;
      if (r.ee === 0) return;
      var i = r.rr;
      if (r === i.K) {
        var t = i.N;
        if (t && t.ee === 1) {
          t.ee = r.ee = 0;
          if (i === this.W) return;
          i.ee = 1;
          e = i;
          continue;
        } else if (e === r.N) {
          e.ee = 0;
          if (e.K) e.K.rr = r;
          if (e.N) e.N.rr = i;
          r.N = e.K;
          i.K = e.N;
          e.K = r;
          e.N = i;
          if (i === this.W) {
            this.W = e;
            this.h.rr = e;
          } else {
            var n = i.rr;
            if (n.K === i) {
              n.K = e;
            } else n.N = e;
          }
          e.rr = i.rr;
          r.rr = e;
          i.rr = e;
          i.ee = 1;
          return {
            parentNode: r,
            grandParent: i,
            curNode: e
          };
        } else {
          r.ee = 0;
          if (i === this.W) {
            this.W = i.te();
          } else i.te();
          i.ee = 1;
        }
      } else {
        var t = i.K;
        if (t && t.ee === 1) {
          t.ee = r.ee = 0;
          if (i === this.W) return;
          i.ee = 1;
          e = i;
          continue;
        } else if (e === r.K) {
          e.ee = 0;
          if (e.K) e.K.rr = i;
          if (e.N) e.N.rr = r;
          i.N = e.K;
          r.K = e.N;
          e.K = i;
          e.N = r;
          if (i === this.W) {
            this.W = e;
            this.h.rr = e;
          } else {
            var n = i.rr;
            if (n.K === i) {
              n.K = e;
            } else n.N = e;
          }
          e.rr = i.rr;
          r.rr = e;
          i.rr = e;
          i.ee = 1;
          return {
            parentNode: r,
            grandParent: i,
            curNode: e
          };
        } else {
          r.ee = 0;
          if (i === this.W) {
            this.W = i.ne();
          } else i.ne();
          i.ee = 1;
        }
      }
      return;
    }
  };
  TreeContainer.prototype.se = function (e, r, i) {
    if (this.W === undefined) {
      this.M += 1;
      this.W = new this.re(e, r);
      this.W.ee = 0;
      this.W.rr = this.h;
      this.h.rr = this.W;
      this.h.K = this.W;
      this.h.N = this.W;
      return;
    }
    var t;
    var n = this.h.K;
    var s = this.$(n.u, e);
    if (s === 0) {
      n.p = r;
      return;
    } else if (s > 0) {
      n.K = new this.re(e, r);
      n.K.rr = n;
      t = n.K;
      this.h.K = t;
    } else {
      var f = this.h.N;
      var h = this.$(f.u, e);
      if (h === 0) {
        f.p = r;
        return;
      } else if (h < 0) {
        f.N = new this.re(e, r);
        f.N.rr = f;
        t = f.N;
        this.h.N = t;
      } else {
        if (i !== undefined) {
          var u = i.o;
          if (u !== this.h) {
            var a = this.$(u.u, e);
            if (a === 0) {
              u.p = r;
              return;
            } else if (a > 0) {
              var o = u.L();
              var l = this.$(o.u, e);
              if (l === 0) {
                o.p = r;
                return;
              } else if (l < 0) {
                t = new this.re(e, r);
                if (o.N === undefined) {
                  o.N = t;
                  t.rr = o;
                } else {
                  u.K = t;
                  t.rr = u;
                }
              }
            }
          }
        }
        if (t === undefined) {
          t = this.W;
          while (true) {
            var v = this.$(t.u, e);
            if (v > 0) {
              if (t.K === undefined) {
                t.K = new this.re(e, r);
                t.K.rr = t;
                t = t.K;
                break;
              }
              t = t.K;
            } else if (v < 0) {
              if (t.N === undefined) {
                t.N = new this.re(e, r);
                t.N.rr = t;
                t = t.N;
                break;
              }
              t = t.N;
            } else {
              t.p = r;
              return;
            }
          }
        }
      }
    }
    this.M += 1;
    return t;
  };
  TreeContainer.prototype.g = function (e, r) {
    while (e) {
      var i = this.$(e.u, r);
      if (i < 0) {
        e = e.N;
      } else if (i > 0) {
        e = e.K;
      } else return e;
    }
    return e || this.h;
  };
  TreeContainer.prototype.clear = function () {
    this.M = 0;
    this.W = undefined;
    this.h.rr = undefined;
    this.h.K = this.h.N = undefined;
  };
  TreeContainer.prototype.updateKeyByIterator = function (e, r) {
    var i = e.o;
    if (i === this.h) {
      (0, _throwError.throwIteratorAccessError)();
    }
    if (this.M === 1) {
      i.u = r;
      return true;
    }
    if (i === this.h.K) {
      if (this.$(i.m().u, r) > 0) {
        i.u = r;
        return true;
      }
      return false;
    }
    if (i === this.h.N) {
      if (this.$(i.L().u, r) < 0) {
        i.u = r;
        return true;
      }
      return false;
    }
    var t = i.L().u;
    if (this.$(t, r) >= 0) return false;
    var n = i.m().u;
    if (this.$(n, r) <= 0) return false;
    i.u = r;
    return true;
  };
  TreeContainer.prototype.eraseElementByPos = function (e) {
    if (e < 0 || e > this.M - 1) {
      throw new RangeError();
    }
    var r = 0;
    var i = this;
    this.ae(this.W, function (t) {
      if (e === r) {
        i.G(t);
        return true;
      }
      r += 1;
      return false;
    });
    return this.M;
  };
  TreeContainer.prototype.eraseElementByKey = function (e) {
    if (this.M === 0) return false;
    var r = this.g(this.W, e);
    if (r === this.h) return false;
    this.G(r);
    return true;
  };
  TreeContainer.prototype.eraseElementByIterator = function (e) {
    var r = e.o;
    if (r === this.h) {
      (0, _throwError.throwIteratorAccessError)();
    }
    var i = r.N === undefined;
    var t = e.iteratorType === 0;
    if (t) {
      if (i) e.next();
    } else {
      if (!i || r.K === undefined) e.next();
    }
    this.G(r);
    return e;
  };
  TreeContainer.prototype.forEach = function (e) {
    var r, i;
    var t = 0;
    try {
      for (var n = __values(this), s = n.next(); !s.done; s = n.next()) {
        var f = s.value;
        e(f, t++, this);
      }
    } catch (e) {
      r = {
        error: e
      };
    } finally {
      try {
        if (s && !s.done && (i = n["return"])) i.call(n);
      } finally {
        if (r) throw r.error;
      }
    }
  };
  TreeContainer.prototype.getElementByPos = function (e) {
    var r, i;
    if (e < 0 || e > this.M - 1) {
      throw new RangeError();
    }
    var t;
    var n = 0;
    try {
      for (var s = __values(this), f = s.next(); !f.done; f = s.next()) {
        var h = f.value;
        if (n === e) {
          t = h;
          break;
        }
        n += 1;
      }
    } catch (e) {
      r = {
        error: e
      };
    } finally {
      try {
        if (f && !f.done && (i = s["return"])) i.call(s);
      } finally {
        if (r) throw r.error;
      }
    }
    return t;
  };
  TreeContainer.prototype.getHeight = function () {
    if (this.M === 0) return 0;
    var traversal = function traversal(e) {
      if (!e) return 0;
      return Math.max(traversal(e.K), traversal(e.N)) + 1;
    };
    return traversal(this.W);
  };
  return TreeContainer;
}(_ContainerBase.Container);
var _default = TreeContainer;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Base = _interopRequireDefault(__webpack_require__(71855));
var _TreeIterator = _interopRequireDefault(__webpack_require__(71743));
var _throwError = __webpack_require__(31162);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(r, e) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (r, e) {
      r.__proto__ = e;
    } || function (r, e) {
      for (var t in e) {
        if (Object.prototype.hasOwnProperty.call(e, t)) r[t] = e[t];
      }
    };
    return _extendStatics(r, e);
  };
  return function (r, e) {
    if (typeof e !== "function" && e !== null) throw new TypeError("Class extends value " + String(e) + " is not a constructor or null");
    _extendStatics(r, e);
    function __() {
      this.constructor = r;
    }
    r.prototype = e === null ? Object.create(e) : (__.prototype = e.prototype, new __());
  };
}();
var __generator = void 0 && (void 0).i || function (r, e) {
  var t = {
      label: 0,
      sent: function sent() {
        if (o[0] & 1) throw o[1];
        return o[1];
      },
      trys: [],
      ops: []
    },
    n,
    i,
    o,
    a;
  return a = {
    next: verb(0),
    "throw": verb(1),
    "return": verb(2)
  }, typeof Symbol === "function" && (a[Symbol.iterator] = function () {
    return this;
  }), a;
  function verb(r) {
    return function (e) {
      return step([r, e]);
    };
  }
  function step(a) {
    if (n) throw new TypeError("Generator is already executing.");
    while (t) {
      try {
        if (n = 1, i && (o = a[0] & 2 ? i["return"] : a[0] ? i["throw"] || ((o = i["return"]) && o.call(i), 0) : i.next) && !(o = o.call(i, a[1])).done) return o;
        if (i = 0, o) a = [a[0] & 2, o.value];
        switch (a[0]) {
          case 0:
          case 1:
            o = a;
            break;
          case 4:
            t.label++;
            return {
              value: a[1],
              done: false
            };
          case 5:
            t.label++;
            i = a[1];
            a = [0];
            continue;
          case 7:
            a = t.ops.pop();
            t.trys.pop();
            continue;
          default:
            if (!(o = t.trys, o = o.length > 0 && o[o.length - 1]) && (a[0] === 6 || a[0] === 2)) {
              t = 0;
              continue;
            }
            if (a[0] === 3 && (!o || a[1] > o[0] && a[1] < o[3])) {
              t.label = a[1];
              break;
            }
            if (a[0] === 6 && t.label < o[1]) {
              t.label = o[1];
              o = a;
              break;
            }
            if (o && t.label < o[2]) {
              t.label = o[2];
              t.ops.push(a);
              break;
            }
            if (o[2]) t.ops.pop();
            t.trys.pop();
            continue;
        }
        a = e.call(r, t);
      } catch (r) {
        a = [6, r];
        i = 0;
      } finally {
        n = o = 0;
      }
    }
    if (a[0] & 5) throw a[1];
    return {
      value: a[0] ? a[1] : void 0,
      done: true
    };
  }
};
var __values = void 0 && (void 0).V || function (r) {
  var e = typeof Symbol === "function" && Symbol.iterator,
    t = e && r[e],
    n = 0;
  if (t) return t.call(r);
  if (r && typeof r.length === "number") return {
    next: function next() {
      if (r && n >= r.length) r = void 0;
      return {
        value: r && r[n++],
        done: !r
      };
    }
  };
  throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var OrderedMapIterator = function (r) {
  __extends(OrderedMapIterator, r);
  function OrderedMapIterator(e, t, n, i) {
    var o = r.call(this, e, t, i) || this;
    o.container = n;
    return o;
  }
  Object.defineProperty(OrderedMapIterator.prototype, "pointer", {
    get: function get() {
      if (this.o === this.h) {
        (0, _throwError.throwIteratorAccessError)();
      }
      var r = this;
      return new Proxy([], {
        get: function get(e, t) {
          if (t === "0") return r.o.u;else if (t === "1") return r.o.p;
        },
        set: function set(e, t, n) {
          if (t !== "1") {
            throw new TypeError("props must be 1");
          }
          r.o.p = n;
          return true;
        }
      });
    },
    enumerable: false,
    configurable: true
  });
  OrderedMapIterator.prototype.copy = function () {
    return new OrderedMapIterator(this.o, this.h, this.container, this.iteratorType);
  };
  return OrderedMapIterator;
}(_TreeIterator["default"]);
var OrderedMap = function (r) {
  __extends(OrderedMap, r);
  function OrderedMap(e, t, n) {
    if (e === void 0) {
      e = [];
    }
    var i = r.call(this, t, n) || this;
    var o = i;
    e.forEach(function (r) {
      o.setElement(r[0], r[1]);
    });
    return i;
  }
  OrderedMap.prototype.P = function (r) {
    return __generator(this, function (e) {
      switch (e.label) {
        case 0:
          if (r === undefined) return [2];
          return [5, __values(this.P(r.K))];
        case 1:
          e.sent();
          return [4, [r.u, r.p]];
        case 2:
          e.sent();
          return [5, __values(this.P(r.N))];
        case 3:
          e.sent();
          return [2];
      }
    });
  };
  OrderedMap.prototype.begin = function () {
    return new OrderedMapIterator(this.h.K || this.h, this.h, this);
  };
  OrderedMap.prototype.end = function () {
    return new OrderedMapIterator(this.h, this.h, this);
  };
  OrderedMap.prototype.rBegin = function () {
    return new OrderedMapIterator(this.h.N || this.h, this.h, this, 1);
  };
  OrderedMap.prototype.rEnd = function () {
    return new OrderedMapIterator(this.h, this.h, this, 1);
  };
  OrderedMap.prototype.front = function () {
    if (this.M === 0) return;
    var r = this.h.K;
    return [r.u, r.p];
  };
  OrderedMap.prototype.back = function () {
    if (this.M === 0) return;
    var r = this.h.N;
    return [r.u, r.p];
  };
  OrderedMap.prototype.lowerBound = function (r) {
    var e = this.U(this.W, r);
    return new OrderedMapIterator(e, this.h, this);
  };
  OrderedMap.prototype.upperBound = function (r) {
    var e = this.X(this.W, r);
    return new OrderedMapIterator(e, this.h, this);
  };
  OrderedMap.prototype.reverseLowerBound = function (r) {
    var e = this.Y(this.W, r);
    return new OrderedMapIterator(e, this.h, this);
  };
  OrderedMap.prototype.reverseUpperBound = function (r) {
    var e = this.Z(this.W, r);
    return new OrderedMapIterator(e, this.h, this);
  };
  OrderedMap.prototype.setElement = function (r, e, t) {
    return this.v(r, e, t);
  };
  OrderedMap.prototype.find = function (r) {
    var e = this.g(this.W, r);
    return new OrderedMapIterator(e, this.h, this);
  };
  OrderedMap.prototype.getElementByKey = function (r) {
    var e = this.g(this.W, r);
    return e.p;
  };
  OrderedMap.prototype.union = function (r) {
    var e = this;
    r.forEach(function (r) {
      e.setElement(r[0], r[1]);
    });
    return this.M;
  };
  OrderedMap.prototype[Symbol.iterator] = function () {
    return this.P(this.W);
  };
  return OrderedMap;
}(_Base["default"]);
var _default = OrderedMap;
exports["default"] = _default;

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = void 0;
var _Base = _interopRequireDefault(__webpack_require__(71855));
var _TreeIterator = _interopRequireDefault(__webpack_require__(71743));
var _throwError = __webpack_require__(31162);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var __extends = void 0 && (void 0).t || function () {
  var _extendStatics = function extendStatics(e, t) {
    _extendStatics = Object.setPrototypeOf || {
      __proto__: []
    } instanceof Array && function (e, t) {
      e.__proto__ = t;
    } || function (e, t) {
      for (var r in t) {
        if (Object.prototype.hasOwnProperty.call(t, r)) e[r] = t[r];
      }
    };
    return _extendStatics(e, t);
  };
  return function (e, t) {
    if (typeof t !== "function" && t !== null) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
    _extendStatics(e, t);
    function __() {
      this.constructor = e;
    }
    e.prototype = t === null ? Object.create(t) : (__.prototype = t.prototype, new __());
  };
}();
var __generator = void 0 && (void 0).i || function (e, t) {
  var r = {
      label: 0,
      sent: function sent() {
        if (o[0] & 1) throw o[1];
        return o[1];
      },
      trys: [],
      ops: []
    },
    n,
    i,
    o,
    u;
  return u = {
    next: verb(0),
    "throw": verb(1),
    "return": verb(2)
  }, typeof Symbol === "function" && (u[Symbol.iterator] = function () {
    return this;
  }), u;
  function verb(e) {
    return function (t) {
      return step([e, t]);
    };
  }
  function step(u) {
    if (n) throw new TypeError("Generator is already executing.");
    while (r) {
      try {
        if (n = 1, i && (o = u[0] & 2 ? i["return"] : u[0] ? i["throw"] || ((o = i["return"]) && o.call(i), 0) : i.next) && !(o = o.call(i, u[1])).done) return o;
        if (i = 0, o) u = [u[0] & 2, o.value];
        switch (u[0]) {
          case 0:
          case 1:
            o = u;
            break;
          case 4:
            r.label++;
            return {
              value: u[1],
              done: false
            };
          case 5:
            r.label++;
            i = u[1];
            u = [0];
            continue;
          case 7:
            u = r.ops.pop();
            r.trys.pop();
            continue;
          default:
            if (!(o = r.trys, o = o.length > 0 && o[o.length - 1]) && (u[0] === 6 || u[0] === 2)) {
              r = 0;
              continue;
            }
            if (u[0] === 3 && (!o || u[1] > o[0] && u[1] < o[3])) {
              r.label = u[1];
              break;
            }
            if (u[0] === 6 && r.label < o[1]) {
              r.label = o[1];
              o = u;
              break;
            }
            if (o && r.label < o[2]) {
              r.label = o[2];
              r.ops.push(u);
              break;
            }
            if (o[2]) r.ops.pop();
            r.trys.pop();
            continue;
        }
        u = t.call(e, r);
      } catch (e) {
        u = [6, e];
        i = 0;
      } finally {
        n = o = 0;
      }
    }
    if (u[0] & 5) throw u[1];
    return {
      value: u[0] ? u[1] : void 0,
      done: true
    };
  }
};
var __values = void 0 && (void 0).V || function (e) {
  var t = typeof Symbol === "function" && Symbol.iterator,
    r = t && e[t],
    n = 0;
  if (r) return r.call(e);
  if (e && typeof e.length === "number") return {
    next: function next() {
      if (e && n >= e.length) e = void 0;
      return {
        value: e && e[n++],
        done: !e
      };
    }
  };
  throw new TypeError(t ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var OrderedSetIterator = function (e) {
  __extends(OrderedSetIterator, e);
  function OrderedSetIterator(t, r, n, i) {
    var o = e.call(this, t, r, i) || this;
    o.container = n;
    return o;
  }
  Object.defineProperty(OrderedSetIterator.prototype, "pointer", {
    get: function get() {
      if (this.o === this.h) {
        (0, _throwError.throwIteratorAccessError)();
      }
      return this.o.u;
    },
    enumerable: false,
    configurable: true
  });
  OrderedSetIterator.prototype.copy = function () {
    return new OrderedSetIterator(this.o, this.h, this.container, this.iteratorType);
  };
  return OrderedSetIterator;
}(_TreeIterator["default"]);
var OrderedSet = function (e) {
  __extends(OrderedSet, e);
  function OrderedSet(t, r, n) {
    if (t === void 0) {
      t = [];
    }
    var i = e.call(this, r, n) || this;
    var o = i;
    t.forEach(function (e) {
      o.insert(e);
    });
    return i;
  }
  OrderedSet.prototype.P = function (e) {
    return __generator(this, function (t) {
      switch (t.label) {
        case 0:
          if (e === undefined) return [2];
          return [5, __values(this.P(e.K))];
        case 1:
          t.sent();
          return [4, e.u];
        case 2:
          t.sent();
          return [5, __values(this.P(e.N))];
        case 3:
          t.sent();
          return [2];
      }
    });
  };
  OrderedSet.prototype.begin = function () {
    return new OrderedSetIterator(this.h.K || this.h, this.h, this);
  };
  OrderedSet.prototype.end = function () {
    return new OrderedSetIterator(this.h, this.h, this);
  };
  OrderedSet.prototype.rBegin = function () {
    return new OrderedSetIterator(this.h.N || this.h, this.h, this, 1);
  };
  OrderedSet.prototype.rEnd = function () {
    return new OrderedSetIterator(this.h, this.h, this, 1);
  };
  OrderedSet.prototype.front = function () {
    return this.h.K ? this.h.K.u : undefined;
  };
  OrderedSet.prototype.back = function () {
    return this.h.N ? this.h.N.u : undefined;
  };
  OrderedSet.prototype.insert = function (e, t) {
    return this.v(e, undefined, t);
  };
  OrderedSet.prototype.find = function (e) {
    var t = this.g(this.W, e);
    return new OrderedSetIterator(t, this.h, this);
  };
  OrderedSet.prototype.lowerBound = function (e) {
    var t = this.U(this.W, e);
    return new OrderedSetIterator(t, this.h, this);
  };
  OrderedSet.prototype.upperBound = function (e) {
    var t = this.X(this.W, e);
    return new OrderedSetIterator(t, this.h, this);
  };
  OrderedSet.prototype.reverseLowerBound = function (e) {
    var t = this.Y(this.W, e);
    return new OrderedSetIterator(t, this.h, this);
  };
  OrderedSet.prototype.reverseUpperBound = function (e) {
    var t = this.Z(this.W, e);
    return new OrderedSetIterator(t, this.h, this);
  };
  OrderedSet.prototype.union = function (e) {
    var t = this;
    e.forEach(function (e) {
      t.insert(e);
    });
    return this.M;
  };
  OrderedSet.prototype[Symbol.iterator] = function () {
    return this.P(this.W);
  };
  return OrderedSet;
}(_Base["default"]);
var _default = OrderedSet;
exports["default"] = _default;

/***/ }),

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

"use strict";
var __webpack_unused_export__;


__webpack_unused_export__ = ({
  value: true
});
__webpack_unused_export__ = ({
  enumerable: true,
  get: function get() {
    return _Deque["default"];
  }
});
__webpack_unused_export__ = ({
  enumerable: true,
  get: function get() {
    return _HashMap["default"];
  }
});
__webpack_unused_export__ = ({
  enumerable: true,
  get: function get() {
    return _HashSet["default"];
  }
});
__webpack_unused_export__ = ({
  enumerable: true,
  get: function get() {
    return _LinkList["default"];
  }
});
__webpack_unused_export__ = ({
  enumerable: true,
  get: function get() {
    return _OrderedMap["default"];
  }
});
Object.defineProperty(exports, "hU", ({
  enumerable: true,
  get: function get() {
    return _OrderedSet["default"];
  }
}));
__webpack_unused_export__ = ({
  enumerable: true,
  get: function get() {
    return _PriorityQueue["default"];
  }
});
__webpack_unused_export__ = ({
  enumerable: true,
  get: function get() {
    return _Queue["default"];
  }
});
__webpack_unused_export__ = ({
  enumerable: true,
  get: function get() {
    return _Stack["default"];
  }
});
__webpack_unused_export__ = ({
  enumerable: true,
  get: function get() {
    return _Vector["default"];
  }
});
var _Stack = _interopRequireDefault(__webpack_require__(15019));
var _Queue = _interopRequireDefault(__webpack_require__(9830));
var _PriorityQueue = _interopRequireDefault(__webpack_require__(7720));
var _Vector = _interopRequireDefault(__webpack_require__(70292));
var _LinkList = _interopRequireDefault(__webpack_require__(33954));
var _Deque = _interopRequireDefault(__webpack_require__(86528));
var _OrderedSet = _interopRequireDefault(__webpack_require__(49523));
var _OrderedMap = _interopRequireDefault(__webpack_require__(10018));
var _HashSet = _interopRequireDefault(__webpack_require__(68893));
var _HashMap = _interopRequireDefault(__webpack_require__(82808));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports["default"] = checkObject;
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 checkObject(t) {
  var e = _typeof(t);
  return e === "object" && t !== null || e === "function";
}

/***/ }),

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

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.throwIteratorAccessError = throwIteratorAccessError;
function throwIteratorAccessError() {
  throw new RangeError("Iterator access denied!");
}

/***/ }),

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

"use strict";


// A linked list to keep track of recently-used-ness
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 Yallist = __webpack_require__(30923);
var MAX = Symbol('max');
var LENGTH = Symbol('length');
var LENGTH_CALCULATOR = Symbol('lengthCalculator');
var ALLOW_STALE = Symbol('allowStale');
var MAX_AGE = Symbol('maxAge');
var DISPOSE = Symbol('dispose');
var NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');
var LRU_LIST = Symbol('lruList');
var CACHE = Symbol('cache');
var UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');
var naiveLength = function naiveLength() {
  return 1;
};

// lruList is a yallist where the head is the youngest
// item, and the tail is the oldest.  the list contains the Hit
// objects as the entries.
// Each Hit object has a reference to its Yallist.Node.  This
// never changes.
//
// cache is a Map (or PseudoMap) that matches the keys to
// the Yallist.Node object.
var LRUCache = /*#__PURE__*/function () {
  function LRUCache(options) {
    _classCallCheck(this, LRUCache);
    if (typeof options === 'number') options = {
      max: options
    };
    if (!options) options = {};
    if (options.max && (typeof options.max !== 'number' || options.max < 0)) throw new TypeError('max must be a non-negative number');
    // Kind of weird to have a default max of Infinity, but oh well.
    var max = this[MAX] = options.max || Infinity;
    var lc = options.length || naiveLength;
    this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc;
    this[ALLOW_STALE] = options.stale || false;
    if (options.maxAge && typeof options.maxAge !== 'number') throw new TypeError('maxAge must be a number');
    this[MAX_AGE] = options.maxAge || 0;
    this[DISPOSE] = options.dispose;
    this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;
    this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;
    this.reset();
  }

  // resize the cache when the max changes.
  _createClass(LRUCache, [{
    key: "max",
    get: function get() {
      return this[MAX];
    },
    set: function set(mL) {
      if (typeof mL !== 'number' || mL < 0) throw new TypeError('max must be a non-negative number');
      this[MAX] = mL || Infinity;
      trim(this);
    }
  }, {
    key: "allowStale",
    get: function get() {
      return this[ALLOW_STALE];
    },
    set: function set(allowStale) {
      this[ALLOW_STALE] = !!allowStale;
    }
  }, {
    key: "maxAge",
    get: function get() {
      return this[MAX_AGE];
    }

    // resize the cache when the lengthCalculator changes.
    ,
    set: function set(mA) {
      if (typeof mA !== 'number') throw new TypeError('maxAge must be a non-negative number');
      this[MAX_AGE] = mA;
      trim(this);
    }
  }, {
    key: "lengthCalculator",
    get: function get() {
      return this[LENGTH_CALCULATOR];
    },
    set: function set(lC) {
      var _this = this;
      if (typeof lC !== 'function') lC = naiveLength;
      if (lC !== this[LENGTH_CALCULATOR]) {
        this[LENGTH_CALCULATOR] = lC;
        this[LENGTH] = 0;
        this[LRU_LIST].forEach(function (hit) {
          hit.length = _this[LENGTH_CALCULATOR](hit.value, hit.key);
          _this[LENGTH] += hit.length;
        });
      }
      trim(this);
    }
  }, {
    key: "length",
    get: function get() {
      return this[LENGTH];
    }
  }, {
    key: "itemCount",
    get: function get() {
      return this[LRU_LIST].length;
    }
  }, {
    key: "rforEach",
    value: function rforEach(fn, thisp) {
      thisp = thisp || this;
      for (var walker = this[LRU_LIST].tail; walker !== null;) {
        var prev = walker.prev;
        forEachStep(this, fn, walker, thisp);
        walker = prev;
      }
    }
  }, {
    key: "forEach",
    value: function forEach(fn, thisp) {
      thisp = thisp || this;
      for (var walker = this[LRU_LIST].head; walker !== null;) {
        var next = walker.next;
        forEachStep(this, fn, walker, thisp);
        walker = next;
      }
    }
  }, {
    key: "keys",
    value: function keys() {
      return this[LRU_LIST].toArray().map(function (k) {
        return k.key;
      });
    }
  }, {
    key: "values",
    value: function values() {
      return this[LRU_LIST].toArray().map(function (k) {
        return k.value;
      });
    }
  }, {
    key: "reset",
    value: function reset() {
      var _this2 = this;
      if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {
        this[LRU_LIST].forEach(function (hit) {
          return _this2[DISPOSE](hit.key, hit.value);
        });
      }
      this[CACHE] = new Map(); // hash of items by key
      this[LRU_LIST] = new Yallist(); // list of items in order of use recency
      this[LENGTH] = 0; // length of items in the list
    }
  }, {
    key: "dump",
    value: function dump() {
      var _this3 = this;
      return this[LRU_LIST].map(function (hit) {
        return isStale(_this3, hit) ? false : {
          k: hit.key,
          v: hit.value,
          e: hit.now + (hit.maxAge || 0)
        };
      }).toArray().filter(function (h) {
        return h;
      });
    }
  }, {
    key: "dumpLru",
    value: function dumpLru() {
      return this[LRU_LIST];
    }
  }, {
    key: "set",
    value: function set(key, value, maxAge) {
      maxAge = maxAge || this[MAX_AGE];
      if (maxAge && typeof maxAge !== 'number') throw new TypeError('maxAge must be a number');
      var now = maxAge ? Date.now() : 0;
      var len = this[LENGTH_CALCULATOR](value, key);
      if (this[CACHE].has(key)) {
        if (len > this[MAX]) {
          _del(this, this[CACHE].get(key));
          return false;
        }
        var node = this[CACHE].get(key);
        var item = node.value;

        // dispose of the old one before overwriting
        // split out into 2 ifs for better coverage tracking
        if (this[DISPOSE]) {
          if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value);
        }
        item.now = now;
        item.maxAge = maxAge;
        item.value = value;
        this[LENGTH] += len - item.length;
        item.length = len;
        this.get(key);
        trim(this);
        return true;
      }
      var hit = new Entry(key, value, len, now, maxAge);

      // oversized objects fall out of cache automatically.
      if (hit.length > this[MAX]) {
        if (this[DISPOSE]) this[DISPOSE](key, value);
        return false;
      }
      this[LENGTH] += hit.length;
      this[LRU_LIST].unshift(hit);
      this[CACHE].set(key, this[LRU_LIST].head);
      trim(this);
      return true;
    }
  }, {
    key: "has",
    value: function has(key) {
      if (!this[CACHE].has(key)) return false;
      var hit = this[CACHE].get(key).value;
      return !isStale(this, hit);
    }
  }, {
    key: "get",
    value: function get(key) {
      return _get(this, key, true);
    }
  }, {
    key: "peek",
    value: function peek(key) {
      return _get(this, key, false);
    }
  }, {
    key: "pop",
    value: function pop() {
      var node = this[LRU_LIST].tail;
      if (!node) return null;
      _del(this, node);
      return node.value;
    }
  }, {
    key: "del",
    value: function del(key) {
      _del(this, this[CACHE].get(key));
    }
  }, {
    key: "load",
    value: function load(arr) {
      // reset the cache
      this.reset();
      var now = Date.now();
      // A previous serialized cache has the most recent items first
      for (var l = arr.length - 1; l >= 0; l--) {
        var hit = arr[l];
        var expiresAt = hit.e || 0;
        if (expiresAt === 0)
          // the item was created without expiration in a non aged cache
          this.set(hit.k, hit.v);else {
          var maxAge = expiresAt - now;
          // dont add already expired items
          if (maxAge > 0) {
            this.set(hit.k, hit.v, maxAge);
          }
        }
      }
    }
  }, {
    key: "prune",
    value: function prune() {
      var _this4 = this;
      this[CACHE].forEach(function (value, key) {
        return _get(_this4, key, false);
      });
    }
  }]);
  return LRUCache;
}();
var _get = function _get(self, key, doUse) {
  var node = self[CACHE].get(key);
  if (node) {
    var hit = node.value;
    if (isStale(self, hit)) {
      _del(self, node);
      if (!self[ALLOW_STALE]) return undefined;
    } else {
      if (doUse) {
        if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now();
        self[LRU_LIST].unshiftNode(node);
      }
    }
    return hit.value;
  }
};
var isStale = function isStale(self, hit) {
  if (!hit || !hit.maxAge && !self[MAX_AGE]) return false;
  var diff = Date.now() - hit.now;
  return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE];
};
var trim = function trim(self) {
  if (self[LENGTH] > self[MAX]) {
    for (var walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {
      // We know that we're about to delete this one, and also
      // what the next least recently used key will be, so just
      // go ahead and set it now.
      var prev = walker.prev;
      _del(self, walker);
      walker = prev;
    }
  }
};
var _del = function _del(self, node) {
  if (node) {
    var hit = node.value;
    if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value);
    self[LENGTH] -= hit.length;
    self[CACHE]["delete"](hit.key);
    self[LRU_LIST].removeNode(node);
  }
};
var Entry = function Entry(key, value, length, now, maxAge) {
  _classCallCheck(this, Entry);
  this.key = key;
  this.value = value;
  this.length = length;
  this.now = now;
  this.maxAge = maxAge || 0;
};
var forEachStep = function forEachStep(self, fn, node, thisp) {
  var hit = node.value;
  if (isStale(self, hit)) {
    _del(self, node);
    if (!self[ALLOW_STALE]) hit = undefined;
  }
  if (hit) fn.call(thisp, hit.value, hit.key, self);
};
module.exports = LRUCache;

/***/ }),

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

"use strict";
/* provided dependency */ var Buffer = __webpack_require__(80365)["Buffer"];


/* Protocol - protocol constants */
var protocol = module.exports;

/* Command code => mnemonic */
protocol.types = {
  0: 'reserved',
  1: 'connect',
  2: 'connack',
  3: 'publish',
  4: 'puback',
  5: 'pubrec',
  6: 'pubrel',
  7: 'pubcomp',
  8: 'subscribe',
  9: 'suback',
  10: 'unsubscribe',
  11: 'unsuback',
  12: 'pingreq',
  13: 'pingresp',
  14: 'disconnect',
  15: 'auth'
};

/* Mnemonic => Command code */
protocol.codes = {};
for (var k in protocol.types) {
  var v = protocol.types[k];
  protocol.codes[v] = k;
}

/* Header */
protocol.CMD_SHIFT = 4;
protocol.CMD_MASK = 0xF0;
protocol.DUP_MASK = 0x08;
protocol.QOS_MASK = 0x03;
protocol.QOS_SHIFT = 1;
protocol.RETAIN_MASK = 0x01;

/* Length */
protocol.VARBYTEINT_MASK = 0x7F;
protocol.VARBYTEINT_FIN_MASK = 0x80;
protocol.VARBYTEINT_MAX = 268435455;

/* Connack */
protocol.SESSIONPRESENT_MASK = 0x01;
protocol.SESSIONPRESENT_HEADER = Buffer.from([protocol.SESSIONPRESENT_MASK]);
protocol.CONNACK_HEADER = Buffer.from([protocol.codes.connack << protocol.CMD_SHIFT]);

/* Connect */
protocol.USERNAME_MASK = 0x80;
protocol.PASSWORD_MASK = 0x40;
protocol.WILL_RETAIN_MASK = 0x20;
protocol.WILL_QOS_MASK = 0x18;
protocol.WILL_QOS_SHIFT = 3;
protocol.WILL_FLAG_MASK = 0x04;
protocol.CLEAN_SESSION_MASK = 0x02;
protocol.CONNECT_HEADER = Buffer.from([protocol.codes.connect << protocol.CMD_SHIFT]);

/* Properties */
protocol.properties = {
  sessionExpiryInterval: 17,
  willDelayInterval: 24,
  receiveMaximum: 33,
  maximumPacketSize: 39,
  topicAliasMaximum: 34,
  requestResponseInformation: 25,
  requestProblemInformation: 23,
  userProperties: 38,
  authenticationMethod: 21,
  authenticationData: 22,
  payloadFormatIndicator: 1,
  messageExpiryInterval: 2,
  contentType: 3,
  responseTopic: 8,
  correlationData: 9,
  maximumQoS: 36,
  retainAvailable: 37,
  assignedClientIdentifier: 18,
  reasonString: 31,
  wildcardSubscriptionAvailable: 40,
  subscriptionIdentifiersAvailable: 41,
  sharedSubscriptionAvailable: 42,
  serverKeepAlive: 19,
  responseInformation: 26,
  serverReference: 28,
  topicAlias: 35,
  subscriptionIdentifier: 11
};
protocol.propertiesCodes = {};
for (var prop in protocol.properties) {
  var id = protocol.properties[prop];
  protocol.propertiesCodes[id] = prop;
}
protocol.propertiesTypes = {
  sessionExpiryInterval: 'int32',
  willDelayInterval: 'int32',
  receiveMaximum: 'int16',
  maximumPacketSize: 'int32',
  topicAliasMaximum: 'int16',
  requestResponseInformation: 'byte',
  requestProblemInformation: 'byte',
  userProperties: 'pair',
  authenticationMethod: 'string',
  authenticationData: 'binary',
  payloadFormatIndicator: 'byte',
  messageExpiryInterval: 'int32',
  contentType: 'string',
  responseTopic: 'string',
  correlationData: 'binary',
  maximumQoS: 'int8',
  retainAvailable: 'byte',
  assignedClientIdentifier: 'string',
  reasonString: 'string',
  wildcardSubscriptionAvailable: 'byte',
  subscriptionIdentifiersAvailable: 'byte',
  sharedSubscriptionAvailable: 'byte',
  serverKeepAlive: 'int16',
  responseInformation: 'string',
  serverReference: 'string',
  topicAlias: 'int16',
  subscriptionIdentifier: 'var'
};
function genHeader(type) {
  return [0, 1, 2].map(function (qos) {
    return [0, 1].map(function (dup) {
      return [0, 1].map(function (retain) {
        var buf = Buffer.alloc(1);
        buf.writeUInt8(protocol.codes[type] << protocol.CMD_SHIFT | (dup ? protocol.DUP_MASK : 0) | qos << protocol.QOS_SHIFT | retain, 0, true);
        return buf;
      });
    });
  });
}

/* Publish */
protocol.PUBLISH_HEADER = genHeader('publish');

/* Subscribe */
protocol.SUBSCRIBE_HEADER = genHeader('subscribe');
protocol.SUBSCRIBE_OPTIONS_QOS_MASK = 0x03;
protocol.SUBSCRIBE_OPTIONS_NL_MASK = 0x01;
protocol.SUBSCRIBE_OPTIONS_NL_SHIFT = 2;
protocol.SUBSCRIBE_OPTIONS_RAP_MASK = 0x01;
protocol.SUBSCRIBE_OPTIONS_RAP_SHIFT = 3;
protocol.SUBSCRIBE_OPTIONS_RH_MASK = 0x03;
protocol.SUBSCRIBE_OPTIONS_RH_SHIFT = 4;
protocol.SUBSCRIBE_OPTIONS_RH = [0x00, 0x10, 0x20];
protocol.SUBSCRIBE_OPTIONS_NL = 0x04;
protocol.SUBSCRIBE_OPTIONS_RAP = 0x08;
protocol.SUBSCRIBE_OPTIONS_QOS = [0x00, 0x01, 0x02];

/* Unsubscribe */
protocol.UNSUBSCRIBE_HEADER = genHeader('unsubscribe');

/* Confirmations */
protocol.ACKS = {
  unsuback: genHeader('unsuback'),
  puback: genHeader('puback'),
  pubcomp: genHeader('pubcomp'),
  pubrel: genHeader('pubrel'),
  pubrec: genHeader('pubrec')
};
protocol.SUBACK_HEADER = Buffer.from([protocol.codes.suback << protocol.CMD_SHIFT]);

/* Protocol versions */
protocol.VERSION3 = Buffer.from([3]);
protocol.VERSION4 = Buffer.from([4]);
protocol.VERSION5 = Buffer.from([5]);
protocol.VERSION131 = Buffer.from([131]);
protocol.VERSION132 = Buffer.from([132]);

/* QoS */
protocol.QOS = [0, 1, 2].map(function (qos) {
  return Buffer.from([qos]);
});

/* Empty packets */
protocol.EMPTY = {
  pingreq: Buffer.from([protocol.codes.pingreq << 4, 0]),
  pingresp: Buffer.from([protocol.codes.pingresp << 4, 0]),
  disconnect: Buffer.from([protocol.codes.disconnect << 4, 0])
};

/***/ }),

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

"use strict";
/* provided dependency */ var Buffer = __webpack_require__(80365)["Buffer"];


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; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
var writeToStream = __webpack_require__(33048);
var EventEmitter = __webpack_require__(19620);
function generate(packet, opts) {
  var stream = new Accumulator();
  writeToStream(packet, stream, opts);
  return stream.concat();
}
var Accumulator = /*#__PURE__*/function (_EventEmitter) {
  _inherits(Accumulator, _EventEmitter);
  var _super = _createSuper(Accumulator);
  function Accumulator() {
    var _this;
    _classCallCheck(this, Accumulator);
    _this = _super.call(this);
    _this._array = new Array(20);
    _this._i = 0;
    return _this;
  }
  _createClass(Accumulator, [{
    key: "write",
    value: function write(chunk) {
      this._array[this._i++] = chunk;
      return true;
    }
  }, {
    key: "concat",
    value: function concat() {
      var length = 0;
      var lengths = new Array(this._array.length);
      var list = this._array;
      var pos = 0;
      var i;
      for (i = 0; i < list.length && list[i] !== undefined; i++) {
        if (typeof list[i] !== 'string') lengths[i] = list[i].length;else lengths[i] = Buffer.byteLength(list[i]);
        length += lengths[i];
      }
      var result = Buffer.allocUnsafe(length);
      for (i = 0; i < list.length && list[i] !== undefined; i++) {
        if (typeof list[i] !== 'string') {
          list[i].copy(result, pos);
          pos += lengths[i];
        } else {
          result.write(list[i], pos);
          pos += lengths[i];
        }
      }
      return result;
    }
  }]);
  return Accumulator;
}(EventEmitter);
module.exports = generate;

/***/ }),

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

"use strict";


exports.parser = __webpack_require__(26890).parser;
exports.generate = __webpack_require__(58473);
exports.writeToStream = __webpack_require__(33048);

/***/ }),

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

"use strict";
/* provided dependency */ var Buffer = __webpack_require__(80365)["Buffer"];


var max = 65536;
var cache = {};

// in node 6 Buffer.subarray returns a Uint8Array instead of a Buffer
// later versions return a Buffer
// alternative is Buffer.slice but that creates a new buffer
// creating new buffers takes time
// SubOk is only false on node < 8
var SubOk = Buffer.isBuffer(Buffer.from([1, 2]).subarray(0, 1));
function generateBuffer(i) {
  var buffer = Buffer.allocUnsafe(2);
  buffer.writeUInt8(i >> 8, 0);
  buffer.writeUInt8(i & 0x00FF, 0 + 1);
  return buffer;
}
function generateCache() {
  for (var i = 0; i < max; i++) {
    cache[i] = generateBuffer(i);
  }
}
function genBufVariableByteInt(num) {
  var maxLength = 4; // max 4 bytes
  var digit = 0;
  var pos = 0;
  var buffer = Buffer.allocUnsafe(maxLength);
  do {
    digit = num % 128 | 0;
    num = num / 128 | 0;
    if (num > 0) digit = digit | 0x80;
    buffer.writeUInt8(digit, pos++);
  } while (num > 0 && pos < maxLength);
  if (num > 0) {
    pos = 0;
  }
  return SubOk ? buffer.subarray(0, pos) : buffer.slice(0, pos);
}
function generate4ByteBuffer(num) {
  var buffer = Buffer.allocUnsafe(4);
  buffer.writeUInt32BE(num, 0);
  return buffer;
}
module.exports = {
  cache: cache,
  generateCache: generateCache,
  generateNumber: generateBuffer,
  genBufVariableByteInt: genBufVariableByteInt,
  generate4ByteBuffer: generate4ByteBuffer
};

/***/ }),

/***/ 10911:
/***/ ((module) => {

"use strict";


function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Packet = function Packet() {
  _classCallCheck(this, Packet);
  this.cmd = null;
  this.retain = false;
  this.qos = 0;
  this.dup = false;
  this.length = -1;
  this.topic = null;
  this.payload = null;
};
module.exports = Packet;

/***/ }),

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

"use strict";


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; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
var bl = __webpack_require__(69531);
var EventEmitter = __webpack_require__(19620);
var Packet = __webpack_require__(10911);
var constants = __webpack_require__(94051);
var debug = __webpack_require__(38801)('mqtt-packet:parser');
var Parser = /*#__PURE__*/function (_EventEmitter) {
  _inherits(Parser, _EventEmitter);
  var _super = _createSuper(Parser);
  function Parser() {
    var _this;
    _classCallCheck(this, Parser);
    _this = _super.call(this);
    _this.parser = _this.constructor.parser;
    return _this;
  }
  _createClass(Parser, [{
    key: "_resetState",
    value: function _resetState() {
      debug('_resetState: resetting packet, error, _list, and _stateCounter');
      this.packet = new Packet();
      this.error = null;
      this._list = bl();
      this._stateCounter = 0;
    }
  }, {
    key: "parse",
    value: function parse(buf) {
      if (this.error) this._resetState();
      this._list.append(buf);
      debug('parse: current state: %s', this._states[this._stateCounter]);
      while ((this.packet.length !== -1 || this._list.length > 0) && this[this._states[this._stateCounter]]() && !this.error) {
        this._stateCounter++;
        debug('parse: state complete. _stateCounter is now: %d', this._stateCounter);
        debug('parse: packet.length: %d, buffer list length: %d', this.packet.length, this._list.length);
        if (this._stateCounter >= this._states.length) this._stateCounter = 0;
      }
      debug('parse: exited while loop. packet: %d, buffer list length: %d', this.packet.length, this._list.length);
      return this._list.length;
    }
  }, {
    key: "_parseHeader",
    value: function _parseHeader() {
      // There is at least one byte in the buffer
      var zero = this._list.readUInt8(0);
      this.packet.cmd = constants.types[zero >> constants.CMD_SHIFT];
      this.packet.retain = (zero & constants.RETAIN_MASK) !== 0;
      this.packet.qos = zero >> constants.QOS_SHIFT & constants.QOS_MASK;
      this.packet.dup = (zero & constants.DUP_MASK) !== 0;
      debug('_parseHeader: packet: %o', this.packet);
      this._list.consume(1);
      return true;
    }
  }, {
    key: "_parseLength",
    value: function _parseLength() {
      // There is at least one byte in the list
      var result = this._parseVarByteNum(true);
      if (result) {
        this.packet.length = result.value;
        this._list.consume(result.bytes);
      }
      debug('_parseLength %d', result.value);
      return !!result;
    }
  }, {
    key: "_parsePayload",
    value: function _parsePayload() {
      debug('_parsePayload: payload %O', this._list);
      var result = false;

      // Do we have a payload? Do we have enough data to complete the payload?
      // PINGs have no payload
      if (this.packet.length === 0 || this._list.length >= this.packet.length) {
        this._pos = 0;
        switch (this.packet.cmd) {
          case 'connect':
            this._parseConnect();
            break;
          case 'connack':
            this._parseConnack();
            break;
          case 'publish':
            this._parsePublish();
            break;
          case 'puback':
          case 'pubrec':
          case 'pubrel':
          case 'pubcomp':
            this._parseConfirmation();
            break;
          case 'subscribe':
            this._parseSubscribe();
            break;
          case 'suback':
            this._parseSuback();
            break;
          case 'unsubscribe':
            this._parseUnsubscribe();
            break;
          case 'unsuback':
            this._parseUnsuback();
            break;
          case 'pingreq':
          case 'pingresp':
            // These are empty, nothing to do
            break;
          case 'disconnect':
            this._parseDisconnect();
            break;
          case 'auth':
            this._parseAuth();
            break;
          default:
            this._emitError(new Error('Not supported'));
        }
        result = true;
      }
      debug('_parsePayload complete result: %s', result);
      return result;
    }
  }, {
    key: "_parseConnect",
    value: function _parseConnect() {
      debug('_parseConnect');
      var topic; // Will topic
      var payload; // Will payload
      var password; // Password
      var username; // Username
      var flags = {};
      var packet = this.packet;

      // Parse protocolId
      var protocolId = this._parseString();
      if (protocolId === null) return this._emitError(new Error('Cannot parse protocolId'));
      if (protocolId !== 'MQTT' && protocolId !== 'MQIsdp') {
        return this._emitError(new Error('Invalid protocolId'));
      }
      packet.protocolId = protocolId;

      // Parse constants version number
      if (this._pos >= this._list.length) return this._emitError(new Error('Packet too short'));
      packet.protocolVersion = this._list.readUInt8(this._pos);
      if (packet.protocolVersion >= 128) {
        packet.bridgeMode = true;
        packet.protocolVersion = packet.protocolVersion - 128;
      }
      if (packet.protocolVersion !== 3 && packet.protocolVersion !== 4 && packet.protocolVersion !== 5) {
        return this._emitError(new Error('Invalid protocol version'));
      }
      this._pos++;
      if (this._pos >= this._list.length) {
        return this._emitError(new Error('Packet too short'));
      }

      // Parse connect flags
      flags.username = this._list.readUInt8(this._pos) & constants.USERNAME_MASK;
      flags.password = this._list.readUInt8(this._pos) & constants.PASSWORD_MASK;
      flags.will = this._list.readUInt8(this._pos) & constants.WILL_FLAG_MASK;
      if (flags.will) {
        packet.will = {};
        packet.will.retain = (this._list.readUInt8(this._pos) & constants.WILL_RETAIN_MASK) !== 0;
        packet.will.qos = (this._list.readUInt8(this._pos) & constants.WILL_QOS_MASK) >> constants.WILL_QOS_SHIFT;
      }
      packet.clean = (this._list.readUInt8(this._pos) & constants.CLEAN_SESSION_MASK) !== 0;
      this._pos++;

      // Parse keepalive
      packet.keepalive = this._parseNum();
      if (packet.keepalive === -1) return this._emitError(new Error('Packet too short'));

      // parse properties
      if (packet.protocolVersion === 5) {
        var properties = this._parseProperties();
        if (Object.getOwnPropertyNames(properties).length) {
          packet.properties = properties;
        }
      }
      // Parse clientId
      var clientId = this._parseString();
      if (clientId === null) return this._emitError(new Error('Packet too short'));
      packet.clientId = clientId;
      debug('_parseConnect: packet.clientId: %s', packet.clientId);
      if (flags.will) {
        if (packet.protocolVersion === 5) {
          var willProperties = this._parseProperties();
          if (Object.getOwnPropertyNames(willProperties).length) {
            packet.will.properties = willProperties;
          }
        }
        // Parse will topic
        topic = this._parseString();
        if (topic === null) return this._emitError(new Error('Cannot parse will topic'));
        packet.will.topic = topic;
        debug('_parseConnect: packet.will.topic: %s', packet.will.topic);

        // Parse will payload
        payload = this._parseBuffer();
        if (payload === null) return this._emitError(new Error('Cannot parse will payload'));
        packet.will.payload = payload;
        debug('_parseConnect: packet.will.paylaod: %s', packet.will.payload);
      }

      // Parse username
      if (flags.username) {
        username = this._parseString();
        if (username === null) return this._emitError(new Error('Cannot parse username'));
        packet.username = username;
        debug('_parseConnect: packet.username: %s', packet.username);
      }

      // Parse password
      if (flags.password) {
        password = this._parseBuffer();
        if (password === null) return this._emitError(new Error('Cannot parse password'));
        packet.password = password;
      }
      // need for right parse auth packet and self set up
      this.settings = packet;
      debug('_parseConnect: complete');
      return packet;
    }
  }, {
    key: "_parseConnack",
    value: function _parseConnack() {
      debug('_parseConnack');
      var packet = this.packet;
      if (this._list.length < 1) return null;
      packet.sessionPresent = !!(this._list.readUInt8(this._pos++) & constants.SESSIONPRESENT_MASK);
      if (this.settings.protocolVersion === 5) {
        if (this._list.length >= 2) {
          packet.reasonCode = this._list.readUInt8(this._pos++);
        } else {
          packet.reasonCode = 0;
        }
      } else {
        if (this._list.length < 2) return null;
        packet.returnCode = this._list.readUInt8(this._pos++);
      }
      if (packet.returnCode === -1 || packet.reasonCode === -1) return this._emitError(new Error('Cannot parse return code'));
      // mqtt 5 properties
      if (this.settings.protocolVersion === 5) {
        var properties = this._parseProperties();
        if (Object.getOwnPropertyNames(properties).length) {
          packet.properties = properties;
        }
      }
      debug('_parseConnack: complete');
    }
  }, {
    key: "_parsePublish",
    value: function _parsePublish() {
      debug('_parsePublish');
      var packet = this.packet;
      packet.topic = this._parseString();
      if (packet.topic === null) return this._emitError(new Error('Cannot parse topic'));

      // Parse messageId
      if (packet.qos > 0) if (!this._parseMessageId()) {
        return;
      }

      // Properties mqtt 5
      if (this.settings.protocolVersion === 5) {
        var properties = this._parseProperties();
        if (Object.getOwnPropertyNames(properties).length) {
          packet.properties = properties;
        }
      }
      packet.payload = this._list.slice(this._pos, packet.length);
      debug('_parsePublish: payload from buffer list: %o', packet.payload);
    }
  }, {
    key: "_parseSubscribe",
    value: function _parseSubscribe() {
      debug('_parseSubscribe');
      var packet = this.packet;
      var topic;
      var options;
      var qos;
      var rh;
      var rap;
      var nl;
      var subscription;
      if (packet.qos !== 1) {
        return this._emitError(new Error('Wrong subscribe header'));
      }
      packet.subscriptions = [];
      if (!this._parseMessageId()) {
        return;
      }

      // Properties mqtt 5
      if (this.settings.protocolVersion === 5) {
        var properties = this._parseProperties();
        if (Object.getOwnPropertyNames(properties).length) {
          packet.properties = properties;
        }
      }
      while (this._pos < packet.length) {
        // Parse topic
        topic = this._parseString();
        if (topic === null) return this._emitError(new Error('Cannot parse topic'));
        if (this._pos >= packet.length) return this._emitError(new Error('Malformed Subscribe Payload'));
        options = this._parseByte();
        qos = options & constants.SUBSCRIBE_OPTIONS_QOS_MASK;
        nl = (options >> constants.SUBSCRIBE_OPTIONS_NL_SHIFT & constants.SUBSCRIBE_OPTIONS_NL_MASK) !== 0;
        rap = (options >> constants.SUBSCRIBE_OPTIONS_RAP_SHIFT & constants.SUBSCRIBE_OPTIONS_RAP_MASK) !== 0;
        rh = options >> constants.SUBSCRIBE_OPTIONS_RH_SHIFT & constants.SUBSCRIBE_OPTIONS_RH_MASK;
        subscription = {
          topic: topic,
          qos: qos
        };

        // mqtt 5 options
        if (this.settings.protocolVersion === 5) {
          subscription.nl = nl;
          subscription.rap = rap;
          subscription.rh = rh;
        } else if (this.settings.bridgeMode) {
          subscription.rh = 0;
          subscription.rap = true;
          subscription.nl = true;
        }

        // Push pair to subscriptions
        debug('_parseSubscribe: push subscription `%s` to subscription', subscription);
        packet.subscriptions.push(subscription);
      }
    }
  }, {
    key: "_parseSuback",
    value: function _parseSuback() {
      debug('_parseSuback');
      var packet = this.packet;
      this.packet.granted = [];
      if (!this._parseMessageId()) {
        return;
      }

      // Properties mqtt 5
      if (this.settings.protocolVersion === 5) {
        var properties = this._parseProperties();
        if (Object.getOwnPropertyNames(properties).length) {
          packet.properties = properties;
        }
      }

      // Parse granted QoSes
      while (this._pos < this.packet.length) {
        this.packet.granted.push(this._list.readUInt8(this._pos++));
      }
    }
  }, {
    key: "_parseUnsubscribe",
    value: function _parseUnsubscribe() {
      debug('_parseUnsubscribe');
      var packet = this.packet;
      packet.unsubscriptions = [];

      // Parse messageId
      if (!this._parseMessageId()) {
        return;
      }

      // Properties mqtt 5
      if (this.settings.protocolVersion === 5) {
        var properties = this._parseProperties();
        if (Object.getOwnPropertyNames(properties).length) {
          packet.properties = properties;
        }
      }
      while (this._pos < packet.length) {
        // Parse topic
        var topic = this._parseString();
        if (topic === null) return this._emitError(new Error('Cannot parse topic'));

        // Push topic to unsubscriptions
        debug('_parseUnsubscribe: push topic `%s` to unsubscriptions', topic);
        packet.unsubscriptions.push(topic);
      }
    }
  }, {
    key: "_parseUnsuback",
    value: function _parseUnsuback() {
      debug('_parseUnsuback');
      var packet = this.packet;
      if (!this._parseMessageId()) return this._emitError(new Error('Cannot parse messageId'));
      // Properties mqtt 5
      if (this.settings.protocolVersion === 5) {
        var properties = this._parseProperties();
        if (Object.getOwnPropertyNames(properties).length) {
          packet.properties = properties;
        }
        // Parse granted QoSes
        packet.granted = [];
        while (this._pos < this.packet.length) {
          this.packet.granted.push(this._list.readUInt8(this._pos++));
        }
      }
    }

    // parse packets like puback, pubrec, pubrel, pubcomp
  }, {
    key: "_parseConfirmation",
    value: function _parseConfirmation() {
      debug('_parseConfirmation: packet.cmd: `%s`', this.packet.cmd);
      var packet = this.packet;
      this._parseMessageId();
      if (this.settings.protocolVersion === 5) {
        if (packet.length > 2) {
          // response code
          packet.reasonCode = this._parseByte();
          debug('_parseConfirmation: packet.reasonCode `%d`', packet.reasonCode);
        } else {
          packet.reasonCode = 0;
        }
        if (packet.length > 3) {
          // properies mqtt 5
          var properties = this._parseProperties();
          if (Object.getOwnPropertyNames(properties).length) {
            packet.properties = properties;
          }
        }
      }
      return true;
    }

    // parse disconnect packet
  }, {
    key: "_parseDisconnect",
    value: function _parseDisconnect() {
      var packet = this.packet;
      debug('_parseDisconnect');
      if (this.settings.protocolVersion === 5) {
        // response code
        if (this._list.length > 0) {
          packet.reasonCode = this._parseByte();
        } else {
          packet.reasonCode = 0;
        }
        // properies mqtt 5
        var properties = this._parseProperties();
        if (Object.getOwnPropertyNames(properties).length) {
          packet.properties = properties;
        }
      }
      debug('_parseDisconnect result: true');
      return true;
    }

    // parse auth packet
  }, {
    key: "_parseAuth",
    value: function _parseAuth() {
      debug('_parseAuth');
      var packet = this.packet;
      if (this.settings.protocolVersion !== 5) {
        return this._emitError(new Error('Not supported auth packet for this version MQTT'));
      }

      // response code
      packet.reasonCode = this._parseByte();
      // properies mqtt 5
      var properties = this._parseProperties();
      if (Object.getOwnPropertyNames(properties).length) {
        packet.properties = properties;
      }
      debug('_parseAuth: result: true');
      return true;
    }
  }, {
    key: "_parseMessageId",
    value: function _parseMessageId() {
      var packet = this.packet;
      packet.messageId = this._parseNum();
      if (packet.messageId === null) {
        this._emitError(new Error('Cannot parse messageId'));
        return false;
      }
      debug('_parseMessageId: packet.messageId %d', packet.messageId);
      return true;
    }
  }, {
    key: "_parseString",
    value: function _parseString(maybeBuffer) {
      var length = this._parseNum();
      var end = length + this._pos;
      if (length === -1 || end > this._list.length || end > this.packet.length) return null;
      var result = this._list.toString('utf8', this._pos, end);
      this._pos += length;
      debug('_parseString: result: %s', result);
      return result;
    }
  }, {
    key: "_parseStringPair",
    value: function _parseStringPair() {
      debug('_parseStringPair');
      return {
        name: this._parseString(),
        value: this._parseString()
      };
    }
  }, {
    key: "_parseBuffer",
    value: function _parseBuffer() {
      var length = this._parseNum();
      var end = length + this._pos;
      if (length === -1 || end > this._list.length || end > this.packet.length) return null;
      var result = this._list.slice(this._pos, end);
      this._pos += length;
      debug('_parseBuffer: result: %o', result);
      return result;
    }
  }, {
    key: "_parseNum",
    value: function _parseNum() {
      if (this._list.length - this._pos < 2) return -1;
      var result = this._list.readUInt16BE(this._pos);
      this._pos += 2;
      debug('_parseNum: result: %s', result);
      return result;
    }
  }, {
    key: "_parse4ByteNum",
    value: function _parse4ByteNum() {
      if (this._list.length - this._pos < 4) return -1;
      var result = this._list.readUInt32BE(this._pos);
      this._pos += 4;
      debug('_parse4ByteNum: result: %s', result);
      return result;
    }
  }, {
    key: "_parseVarByteNum",
    value: function _parseVarByteNum(fullInfoFlag) {
      debug('_parseVarByteNum');
      var maxBytes = 4;
      var bytes = 0;
      var mul = 1;
      var value = 0;
      var result = false;
      var current;
      var padding = this._pos ? this._pos : 0;
      while (bytes < maxBytes && padding + bytes < this._list.length) {
        current = this._list.readUInt8(padding + bytes++);
        value += mul * (current & constants.VARBYTEINT_MASK);
        mul *= 0x80;
        if ((current & constants.VARBYTEINT_FIN_MASK) === 0) {
          result = true;
          break;
        }
        if (this._list.length <= bytes) {
          break;
        }
      }
      if (!result && bytes === maxBytes && this._list.length >= bytes) {
        this._emitError(new Error('Invalid variable byte integer'));
      }
      if (padding) {
        this._pos += bytes;
      }
      result = result ? fullInfoFlag ? {
        bytes: bytes,
        value: value
      } : value : false;
      debug('_parseVarByteNum: result: %o', result);
      return result;
    }
  }, {
    key: "_parseByte",
    value: function _parseByte() {
      var result;
      if (this._pos < this._list.length) {
        result = this._list.readUInt8(this._pos);
        this._pos++;
      }
      debug('_parseByte: result: %o', result);
      return result;
    }
  }, {
    key: "_parseByType",
    value: function _parseByType(type) {
      debug('_parseByType: type: %s', type);
      switch (type) {
        case 'byte':
          {
            return this._parseByte() !== 0;
          }
        case 'int8':
          {
            return this._parseByte();
          }
        case 'int16':
          {
            return this._parseNum();
          }
        case 'int32':
          {
            return this._parse4ByteNum();
          }
        case 'var':
          {
            return this._parseVarByteNum();
          }
        case 'string':
          {
            return this._parseString();
          }
        case 'pair':
          {
            return this._parseStringPair();
          }
        case 'binary':
          {
            return this._parseBuffer();
          }
      }
    }
  }, {
    key: "_parseProperties",
    value: function _parseProperties() {
      debug('_parseProperties');
      var length = this._parseVarByteNum();
      var start = this._pos;
      var end = start + length;
      var result = {};
      while (this._pos < end) {
        var type = this._parseByte();
        if (!type) {
          this._emitError(new Error('Cannot parse property code type'));
          return false;
        }
        var name = constants.propertiesCodes[type];
        if (!name) {
          this._emitError(new Error('Unknown property'));
          return false;
        }
        // user properties process
        if (name === 'userProperties') {
          if (!result[name]) {
            result[name] = Object.create(null);
          }
          var currentUserProperty = this._parseByType(constants.propertiesTypes[name]);
          if (result[name][currentUserProperty.name]) {
            if (Array.isArray(result[name][currentUserProperty.name])) {
              result[name][currentUserProperty.name].push(currentUserProperty.value);
            } else {
              var currentValue = result[name][currentUserProperty.name];
              result[name][currentUserProperty.name] = [currentValue];
              result[name][currentUserProperty.name].push(currentUserProperty.value);
            }
          } else {
            result[name][currentUserProperty.name] = currentUserProperty.value;
          }
          continue;
        }
        if (result[name]) {
          if (Array.isArray(result[name])) {
            result[name].push(this._parseByType(constants.propertiesTypes[name]));
          } else {
            result[name] = [result[name]];
            result[name].push(this._parseByType(constants.propertiesTypes[name]));
          }
        } else {
          result[name] = this._parseByType(constants.propertiesTypes[name]);
        }
      }
      return result;
    }
  }, {
    key: "_newPacket",
    value: function _newPacket() {
      debug('_newPacket');
      if (this.packet) {
        this._list.consume(this.packet.length);
        debug('_newPacket: parser emit packet: packet.cmd: %s, packet.payload: %s, packet.length: %d', this.packet.cmd, this.packet.payload, this.packet.length);
        this.emit('packet', this.packet);
      }
      debug('_newPacket: new packet');
      this.packet = new Packet();
      this._pos = 0;
      return true;
    }
  }, {
    key: "_emitError",
    value: function _emitError(err) {
      debug('_emitError');
      this.error = err;
      this.emit('error', err);
    }
  }], [{
    key: "parser",
    value: function parser(opt) {
      if (!(this instanceof Parser)) return new Parser().parser(opt);
      this.settings = opt || {};
      this._states = ['_parseHeader', '_parseLength', '_parsePayload', '_newPacket'];
      this._resetState();
      return this;
    }
  }]);
  return Parser;
}(EventEmitter);
module.exports = Parser;

/***/ }),

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

"use strict";
/* provided dependency */ var Buffer = __webpack_require__(80365)["Buffer"];


function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var protocol = __webpack_require__(94051);
var empty = Buffer.allocUnsafe(0);
var zeroBuf = Buffer.from([0]);
var numbers = __webpack_require__(56300);
var nextTick = (__webpack_require__(48927).nextTick);
var debug = __webpack_require__(38801)('mqtt-packet:writeToStream');
var numCache = numbers.cache;
var generateNumber = numbers.generateNumber;
var generateCache = numbers.generateCache;
var genBufVariableByteInt = numbers.genBufVariableByteInt;
var generate4ByteBuffer = numbers.generate4ByteBuffer;
var writeNumber = writeNumberCached;
var toGenerate = true;
function generate(packet, stream, opts) {
  debug('generate called');
  if (stream.cork) {
    stream.cork();
    nextTick(uncork, stream);
  }
  if (toGenerate) {
    toGenerate = false;
    generateCache();
  }
  debug('generate: packet.cmd: %s', packet.cmd);
  switch (packet.cmd) {
    case 'connect':
      return connect(packet, stream, opts);
    case 'connack':
      return connack(packet, stream, opts);
    case 'publish':
      return publish(packet, stream, opts);
    case 'puback':
    case 'pubrec':
    case 'pubrel':
    case 'pubcomp':
      return confirmation(packet, stream, opts);
    case 'subscribe':
      return subscribe(packet, stream, opts);
    case 'suback':
      return suback(packet, stream, opts);
    case 'unsubscribe':
      return unsubscribe(packet, stream, opts);
    case 'unsuback':
      return unsuback(packet, stream, opts);
    case 'pingreq':
    case 'pingresp':
      return emptyPacket(packet, stream, opts);
    case 'disconnect':
      return disconnect(packet, stream, opts);
    case 'auth':
      return auth(packet, stream, opts);
    default:
      stream.emit('error', new Error('Unknown command'));
      return false;
  }
}
/**
 * Controls numbers cache.
 * Set to "false" to allocate buffers on-the-flight instead of pre-generated cache
 */
Object.defineProperty(generate, 'cacheNumbers', {
  get: function get() {
    return writeNumber === writeNumberCached;
  },
  set: function set(value) {
    if (value) {
      if (!numCache || Object.keys(numCache).length === 0) toGenerate = true;
      writeNumber = writeNumberCached;
    } else {
      toGenerate = false;
      writeNumber = writeNumberGenerated;
    }
  }
});
function uncork(stream) {
  stream.uncork();
}
function connect(packet, stream, opts) {
  var settings = packet || {};
  var protocolId = settings.protocolId || 'MQTT';
  var protocolVersion = settings.protocolVersion || 4;
  var will = settings.will;
  var clean = settings.clean;
  var keepalive = settings.keepalive || 0;
  var clientId = settings.clientId || '';
  var username = settings.username;
  var password = settings.password;
  /* mqtt5 new oprions */
  var properties = settings.properties;
  if (clean === undefined) clean = true;
  var length = 0;

  // Must be a string and non-falsy
  if (!protocolId || typeof protocolId !== 'string' && !Buffer.isBuffer(protocolId)) {
    stream.emit('error', new Error('Invalid protocolId'));
    return false;
  } else length += protocolId.length + 2;

  // Must be 3 or 4 or 5
  if (protocolVersion !== 3 && protocolVersion !== 4 && protocolVersion !== 5) {
    stream.emit('error', new Error('Invalid protocol version'));
    return false;
  } else length += 1;

  // ClientId might be omitted in 3.1.1 and 5, but only if cleanSession is set to 1
  if ((typeof clientId === 'string' || Buffer.isBuffer(clientId)) && (clientId || protocolVersion >= 4) && (clientId || clean)) {
    length += Buffer.byteLength(clientId) + 2;
  } else {
    if (protocolVersion < 4) {
      stream.emit('error', new Error('clientId must be supplied before 3.1.1'));
      return false;
    }
    if (clean * 1 === 0) {
      stream.emit('error', new Error('clientId must be given if cleanSession set to 0'));
      return false;
    }
  }

  // Must be a two byte number
  if (typeof keepalive !== 'number' || keepalive < 0 || keepalive > 65535 || keepalive % 1 !== 0) {
    stream.emit('error', new Error('Invalid keepalive'));
    return false;
  } else length += 2;

  // Connect flags
  length += 1;

  // Properties
  if (protocolVersion === 5) {
    var propertiesData = getProperties(stream, properties);
    if (!propertiesData) {
      return false;
    }
    length += propertiesData.length;
  }

  // If will exists...
  if (will) {
    // It must be an object
    if (_typeof(will) !== 'object') {
      stream.emit('error', new Error('Invalid will'));
      return false;
    }
    // It must have topic typeof string
    if (!will.topic || typeof will.topic !== 'string') {
      stream.emit('error', new Error('Invalid will topic'));
      return false;
    } else {
      length += Buffer.byteLength(will.topic) + 2;
    }

    // Payload
    length += 2; // payload length
    if (will.payload) {
      if (will.payload.length >= 0) {
        if (typeof will.payload === 'string') {
          length += Buffer.byteLength(will.payload);
        } else {
          length += will.payload.length;
        }
      } else {
        stream.emit('error', new Error('Invalid will payload'));
        return false;
      }
    }
    // will properties
    var willProperties = {};
    if (protocolVersion === 5) {
      willProperties = getProperties(stream, will.properties);
      if (!willProperties) {
        return false;
      }
      length += willProperties.length;
    }
  }

  // Username
  var providedUsername = false;
  if (username != null) {
    if (isStringOrBuffer(username)) {
      providedUsername = true;
      length += Buffer.byteLength(username) + 2;
    } else {
      stream.emit('error', new Error('Invalid username'));
      return false;
    }
  }

  // Password
  if (password != null) {
    if (!providedUsername) {
      stream.emit('error', new Error('Username is required to use password'));
      return false;
    }
    if (isStringOrBuffer(password)) {
      length += byteLength(password) + 2;
    } else {
      stream.emit('error', new Error('Invalid password'));
      return false;
    }
  }

  // Generate header
  stream.write(protocol.CONNECT_HEADER);

  // Generate length
  writeVarByteInt(stream, length);

  // Generate protocol ID
  writeStringOrBuffer(stream, protocolId);
  if (settings.bridgeMode) {
    protocolVersion += 128;
  }
  stream.write(protocolVersion === 131 ? protocol.VERSION131 : protocolVersion === 132 ? protocol.VERSION132 : protocolVersion === 4 ? protocol.VERSION4 : protocolVersion === 5 ? protocol.VERSION5 : protocol.VERSION3);

  // Connect flags
  var flags = 0;
  flags |= username != null ? protocol.USERNAME_MASK : 0;
  flags |= password != null ? protocol.PASSWORD_MASK : 0;
  flags |= will && will.retain ? protocol.WILL_RETAIN_MASK : 0;
  flags |= will && will.qos ? will.qos << protocol.WILL_QOS_SHIFT : 0;
  flags |= will ? protocol.WILL_FLAG_MASK : 0;
  flags |= clean ? protocol.CLEAN_SESSION_MASK : 0;
  stream.write(Buffer.from([flags]));

  // Keepalive
  writeNumber(stream, keepalive);

  // Properties
  if (protocolVersion === 5) {
    propertiesData.write();
  }

  // Client ID
  writeStringOrBuffer(stream, clientId);

  // Will
  if (will) {
    if (protocolVersion === 5) {
      willProperties.write();
    }
    writeString(stream, will.topic);
    writeStringOrBuffer(stream, will.payload);
  }

  // Username and password
  if (username != null) {
    writeStringOrBuffer(stream, username);
  }
  if (password != null) {
    writeStringOrBuffer(stream, password);
  }
  // This is a small packet that happens only once on a stream
  // We assume the stream is always free to receive more data after this
  return true;
}
function connack(packet, stream, opts) {
  var version = opts ? opts.protocolVersion : 4;
  var settings = packet || {};
  var rc = version === 5 ? settings.reasonCode : settings.returnCode;
  var properties = settings.properties;
  var length = 2; // length of rc and sessionHeader

  // Check return code
  if (typeof rc !== 'number') {
    stream.emit('error', new Error('Invalid return code'));
    return false;
  }
  // mqtt5 properties
  var propertiesData = null;
  if (version === 5) {
    propertiesData = getProperties(stream, properties);
    if (!propertiesData) {
      return false;
    }
    length += propertiesData.length;
  }
  stream.write(protocol.CONNACK_HEADER);
  // length
  writeVarByteInt(stream, length);
  stream.write(settings.sessionPresent ? protocol.SESSIONPRESENT_HEADER : zeroBuf);
  stream.write(Buffer.from([rc]));
  if (propertiesData != null) {
    propertiesData.write();
  }
  return true;
}
function publish(packet, stream, opts) {
  debug('publish: packet: %o', packet);
  var version = opts ? opts.protocolVersion : 4;
  var settings = packet || {};
  var qos = settings.qos || 0;
  var retain = settings.retain ? protocol.RETAIN_MASK : 0;
  var topic = settings.topic;
  var payload = settings.payload || empty;
  var id = settings.messageId;
  var properties = settings.properties;
  var length = 0;

  // Topic must be a non-empty string or Buffer
  if (typeof topic === 'string') length += Buffer.byteLength(topic) + 2;else if (Buffer.isBuffer(topic)) length += topic.length + 2;else {
    stream.emit('error', new Error('Invalid topic'));
    return false;
  }

  // Get the payload length
  if (!Buffer.isBuffer(payload)) length += Buffer.byteLength(payload);else length += payload.length;

  // Message ID must a number if qos > 0
  if (qos && typeof id !== 'number') {
    stream.emit('error', new Error('Invalid messageId'));
    return false;
  } else if (qos) length += 2;

  // mqtt5 properties
  var propertiesData = null;
  if (version === 5) {
    propertiesData = getProperties(stream, properties);
    if (!propertiesData) {
      return false;
    }
    length += propertiesData.length;
  }

  // Header
  stream.write(protocol.PUBLISH_HEADER[qos][settings.dup ? 1 : 0][retain ? 1 : 0]);

  // Remaining length
  writeVarByteInt(stream, length);

  // Topic
  writeNumber(stream, byteLength(topic));
  stream.write(topic);

  // Message ID
  if (qos > 0) writeNumber(stream, id);

  // Properties
  if (propertiesData != null) {
    propertiesData.write();
  }

  // Payload
  debug('publish: payload: %o', payload);
  return stream.write(payload);
}

/* Puback, pubrec, pubrel and pubcomp */
function confirmation(packet, stream, opts) {
  var version = opts ? opts.protocolVersion : 4;
  var settings = packet || {};
  var type = settings.cmd || 'puback';
  var id = settings.messageId;
  var dup = settings.dup && type === 'pubrel' ? protocol.DUP_MASK : 0;
  var qos = 0;
  var reasonCode = settings.reasonCode;
  var properties = settings.properties;
  var length = version === 5 ? 3 : 2;
  if (type === 'pubrel') qos = 1;

  // Check message ID
  if (typeof id !== 'number') {
    stream.emit('error', new Error('Invalid messageId'));
    return false;
  }

  // properies mqtt 5
  var propertiesData = null;
  if (version === 5) {
    // Confirm should not add empty property length with no properties (rfc 3.4.2.2.1)
    if (_typeof(properties) === 'object') {
      propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length);
      if (!propertiesData) {
        return false;
      }
      length += propertiesData.length;
    }
  }

  // Header
  stream.write(protocol.ACKS[type][qos][dup][0]);

  // Length
  writeVarByteInt(stream, length);

  // Message ID
  writeNumber(stream, id);

  // reason code in header
  if (version === 5) {
    stream.write(Buffer.from([reasonCode]));
  }

  // properies mqtt 5
  if (propertiesData !== null) {
    propertiesData.write();
  }
  return true;
}
function subscribe(packet, stream, opts) {
  debug('subscribe: packet: ');
  var version = opts ? opts.protocolVersion : 4;
  var settings = packet || {};
  var dup = settings.dup ? protocol.DUP_MASK : 0;
  var id = settings.messageId;
  var subs = settings.subscriptions;
  var properties = settings.properties;
  var length = 0;

  // Check message ID
  if (typeof id !== 'number') {
    stream.emit('error', new Error('Invalid messageId'));
    return false;
  } else length += 2;

  // properies mqtt 5
  var propertiesData = null;
  if (version === 5) {
    propertiesData = getProperties(stream, properties);
    if (!propertiesData) {
      return false;
    }
    length += propertiesData.length;
  }

  // Check subscriptions
  if (_typeof(subs) === 'object' && subs.length) {
    for (var i = 0; i < subs.length; i += 1) {
      var itopic = subs[i].topic;
      var iqos = subs[i].qos;
      if (typeof itopic !== 'string') {
        stream.emit('error', new Error('Invalid subscriptions - invalid topic'));
        return false;
      }
      if (typeof iqos !== 'number') {
        stream.emit('error', new Error('Invalid subscriptions - invalid qos'));
        return false;
      }
      if (version === 5) {
        var nl = subs[i].nl || false;
        if (typeof nl !== 'boolean') {
          stream.emit('error', new Error('Invalid subscriptions - invalid No Local'));
          return false;
        }
        var rap = subs[i].rap || false;
        if (typeof rap !== 'boolean') {
          stream.emit('error', new Error('Invalid subscriptions - invalid Retain as Published'));
          return false;
        }
        var rh = subs[i].rh || 0;
        if (typeof rh !== 'number' || rh > 2) {
          stream.emit('error', new Error('Invalid subscriptions - invalid Retain Handling'));
          return false;
        }
      }
      length += Buffer.byteLength(itopic) + 2 + 1;
    }
  } else {
    stream.emit('error', new Error('Invalid subscriptions'));
    return false;
  }

  // Generate header
  debug('subscribe: writing to stream: %o', protocol.SUBSCRIBE_HEADER);
  stream.write(protocol.SUBSCRIBE_HEADER[1][dup ? 1 : 0][0]);

  // Generate length
  writeVarByteInt(stream, length);

  // Generate message ID
  writeNumber(stream, id);

  // properies mqtt 5
  if (propertiesData !== null) {
    propertiesData.write();
  }
  var result = true;

  // Generate subs
  var _iterator = _createForOfIteratorHelper(subs),
    _step;
  try {
    for (_iterator.s(); !(_step = _iterator.n()).done;) {
      var sub = _step.value;
      var jtopic = sub.topic;
      var jqos = sub.qos;
      var jnl = +sub.nl;
      var jrap = +sub.rap;
      var jrh = sub.rh;
      var joptions = void 0;

      // Write topic string
      writeString(stream, jtopic);

      // options process
      joptions = protocol.SUBSCRIBE_OPTIONS_QOS[jqos];
      if (version === 5) {
        joptions |= jnl ? protocol.SUBSCRIBE_OPTIONS_NL : 0;
        joptions |= jrap ? protocol.SUBSCRIBE_OPTIONS_RAP : 0;
        joptions |= jrh ? protocol.SUBSCRIBE_OPTIONS_RH[jrh] : 0;
      }
      // Write options
      result = stream.write(Buffer.from([joptions]));
    }
  } catch (err) {
    _iterator.e(err);
  } finally {
    _iterator.f();
  }
  return result;
}
function suback(packet, stream, opts) {
  var version = opts ? opts.protocolVersion : 4;
  var settings = packet || {};
  var id = settings.messageId;
  var granted = settings.granted;
  var properties = settings.properties;
  var length = 0;

  // Check message ID
  if (typeof id !== 'number') {
    stream.emit('error', new Error('Invalid messageId'));
    return false;
  } else length += 2;

  // Check granted qos vector
  if (_typeof(granted) === 'object' && granted.length) {
    for (var i = 0; i < granted.length; i += 1) {
      if (typeof granted[i] !== 'number') {
        stream.emit('error', new Error('Invalid qos vector'));
        return false;
      }
      length += 1;
    }
  } else {
    stream.emit('error', new Error('Invalid qos vector'));
    return false;
  }

  // properies mqtt 5
  var propertiesData = null;
  if (version === 5) {
    propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length);
    if (!propertiesData) {
      return false;
    }
    length += propertiesData.length;
  }

  // header
  stream.write(protocol.SUBACK_HEADER);

  // Length
  writeVarByteInt(stream, length);

  // Message ID
  writeNumber(stream, id);

  // properies mqtt 5
  if (propertiesData !== null) {
    propertiesData.write();
  }
  return stream.write(Buffer.from(granted));
}
function unsubscribe(packet, stream, opts) {
  var version = opts ? opts.protocolVersion : 4;
  var settings = packet || {};
  var id = settings.messageId;
  var dup = settings.dup ? protocol.DUP_MASK : 0;
  var unsubs = settings.unsubscriptions;
  var properties = settings.properties;
  var length = 0;

  // Check message ID
  if (typeof id !== 'number') {
    stream.emit('error', new Error('Invalid messageId'));
    return false;
  } else {
    length += 2;
  }
  // Check unsubs
  if (_typeof(unsubs) === 'object' && unsubs.length) {
    for (var i = 0; i < unsubs.length; i += 1) {
      if (typeof unsubs[i] !== 'string') {
        stream.emit('error', new Error('Invalid unsubscriptions'));
        return false;
      }
      length += Buffer.byteLength(unsubs[i]) + 2;
    }
  } else {
    stream.emit('error', new Error('Invalid unsubscriptions'));
    return false;
  }
  // properies mqtt 5
  var propertiesData = null;
  if (version === 5) {
    propertiesData = getProperties(stream, properties);
    if (!propertiesData) {
      return false;
    }
    length += propertiesData.length;
  }

  // Header
  stream.write(protocol.UNSUBSCRIBE_HEADER[1][dup ? 1 : 0][0]);

  // Length
  writeVarByteInt(stream, length);

  // Message ID
  writeNumber(stream, id);

  // properies mqtt 5
  if (propertiesData !== null) {
    propertiesData.write();
  }

  // Unsubs
  var result = true;
  for (var j = 0; j < unsubs.length; j++) {
    result = writeString(stream, unsubs[j]);
  }
  return result;
}
function unsuback(packet, stream, opts) {
  var version = opts ? opts.protocolVersion : 4;
  var settings = packet || {};
  var id = settings.messageId;
  var dup = settings.dup ? protocol.DUP_MASK : 0;
  var granted = settings.granted;
  var properties = settings.properties;
  var type = settings.cmd;
  var qos = 0;
  var length = 2;

  // Check message ID
  if (typeof id !== 'number') {
    stream.emit('error', new Error('Invalid messageId'));
    return false;
  }

  // Check granted
  if (version === 5) {
    if (_typeof(granted) === 'object' && granted.length) {
      for (var i = 0; i < granted.length; i += 1) {
        if (typeof granted[i] !== 'number') {
          stream.emit('error', new Error('Invalid qos vector'));
          return false;
        }
        length += 1;
      }
    } else {
      stream.emit('error', new Error('Invalid qos vector'));
      return false;
    }
  }

  // properies mqtt 5
  var propertiesData = null;
  if (version === 5) {
    propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length);
    if (!propertiesData) {
      return false;
    }
    length += propertiesData.length;
  }

  // Header
  stream.write(protocol.ACKS[type][qos][dup][0]);

  // Length
  writeVarByteInt(stream, length);

  // Message ID
  writeNumber(stream, id);

  // properies mqtt 5
  if (propertiesData !== null) {
    propertiesData.write();
  }

  // payload
  if (version === 5) {
    stream.write(Buffer.from(granted));
  }
  return true;
}
function emptyPacket(packet, stream, opts) {
  return stream.write(protocol.EMPTY[packet.cmd]);
}
function disconnect(packet, stream, opts) {
  var version = opts ? opts.protocolVersion : 4;
  var settings = packet || {};
  var reasonCode = settings.reasonCode;
  var properties = settings.properties;
  var length = version === 5 ? 1 : 0;

  // properies mqtt 5
  var propertiesData = null;
  if (version === 5) {
    propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length);
    if (!propertiesData) {
      return false;
    }
    length += propertiesData.length;
  }

  // Header
  stream.write(Buffer.from([protocol.codes.disconnect << 4]));

  // Length
  writeVarByteInt(stream, length);

  // reason code in header
  if (version === 5) {
    stream.write(Buffer.from([reasonCode]));
  }

  // properies mqtt 5
  if (propertiesData !== null) {
    propertiesData.write();
  }
  return true;
}
function auth(packet, stream, opts) {
  var version = opts ? opts.protocolVersion : 4;
  var settings = packet || {};
  var reasonCode = settings.reasonCode;
  var properties = settings.properties;
  var length = version === 5 ? 1 : 0;
  if (version !== 5) stream.emit('error', new Error('Invalid mqtt version for auth packet'));

  // properies mqtt 5
  var propertiesData = getPropertiesByMaximumPacketSize(stream, properties, opts, length);
  if (!propertiesData) {
    return false;
  }
  length += propertiesData.length;

  // Header
  stream.write(Buffer.from([protocol.codes.auth << 4]));

  // Length
  writeVarByteInt(stream, length);

  // reason code in header
  stream.write(Buffer.from([reasonCode]));

  // properies mqtt 5
  if (propertiesData !== null) {
    propertiesData.write();
  }
  return true;
}

/**
 * writeVarByteInt - write an MQTT style variable byte integer to the buffer
 *
 * @param <Buffer> buffer - destination
 * @param <Number> pos - offset
 * @param <Number> length - length (>0)
 * @returns <Number> number of bytes written
 *
 * @api private
 */

var varByteIntCache = {};
function writeVarByteInt(stream, num) {
  if (num > protocol.VARBYTEINT_MAX) {
    stream.emit('error', new Error("Invalid variable byte integer: ".concat(num)));
    return false;
  }
  var buffer = varByteIntCache[num];
  if (!buffer) {
    buffer = genBufVariableByteInt(num);
    if (num < 16384) varByteIntCache[num] = buffer;
  }
  debug('writeVarByteInt: writing to stream: %o', buffer);
  return stream.write(buffer);
}

/**
 * writeString - write a utf8 string to the buffer
 *
 * @param <Buffer> buffer - destination
 * @param <Number> pos - offset
 * @param <String> string - string to write
 * @return <Number> number of bytes written
 *
 * @api private
 */

function writeString(stream, string) {
  var strlen = Buffer.byteLength(string);
  writeNumber(stream, strlen);
  debug('writeString: %s', string);
  return stream.write(string, 'utf8');
}

/**
 * writeStringPair - write a utf8 string pairs to the buffer
 *
 * @param <Buffer> buffer - destination
 * @param <String> name - string name to write
 * @param <String> value - string value to write
 * @return <Number> number of bytes written
 *
 * @api private
 */
function writeStringPair(stream, name, value) {
  writeString(stream, name);
  writeString(stream, value);
}

/**
 * writeNumber - write a two byte number to the buffer
 *
 * @param <Buffer> buffer - destination
 * @param <Number> pos - offset
 * @param <String> number - number to write
 * @return <Number> number of bytes written
 *
 * @api private
 */
function writeNumberCached(stream, number) {
  debug('writeNumberCached: number: %d', number);
  debug('writeNumberCached: %o', numCache[number]);
  return stream.write(numCache[number]);
}
function writeNumberGenerated(stream, number) {
  var generatedNumber = generateNumber(number);
  debug('writeNumberGenerated: %o', generatedNumber);
  return stream.write(generatedNumber);
}
function write4ByteNumber(stream, number) {
  var generated4ByteBuffer = generate4ByteBuffer(number);
  debug('write4ByteNumber: %o', generated4ByteBuffer);
  return stream.write(generated4ByteBuffer);
}
/**
 * writeStringOrBuffer - write a String or Buffer with the its length prefix
 *
 * @param <Buffer> buffer - destination
 * @param <Number> pos - offset
 * @param <String> toWrite - String or Buffer
 * @return <Number> number of bytes written
 */
function writeStringOrBuffer(stream, toWrite) {
  if (typeof toWrite === 'string') {
    writeString(stream, toWrite);
  } else if (toWrite) {
    writeNumber(stream, toWrite.length);
    stream.write(toWrite);
  } else writeNumber(stream, 0);
}
function getProperties(stream, properties) {
  /* connect properties */
  if (_typeof(properties) !== 'object' || properties.length != null) {
    return {
      length: 1,
      write: function write() {
        writeProperties(stream, {}, 0);
      }
    };
  }
  var propertiesLength = 0;
  function getLengthProperty(name, value) {
    var type = protocol.propertiesTypes[name];
    var length = 0;
    switch (type) {
      case 'byte':
        {
          if (typeof value !== 'boolean') {
            stream.emit('error', new Error("Invalid ".concat(name, ": ").concat(value)));
            return false;
          }
          length += 1 + 1;
          break;
        }
      case 'int8':
        {
          if (typeof value !== 'number' || value < 0 || value > 0xff) {
            stream.emit('error', new Error("Invalid ".concat(name, ": ").concat(value)));
            return false;
          }
          length += 1 + 1;
          break;
        }
      case 'binary':
        {
          if (value && value === null) {
            stream.emit('error', new Error("Invalid ".concat(name, ": ").concat(value)));
            return false;
          }
          length += 1 + Buffer.byteLength(value) + 2;
          break;
        }
      case 'int16':
        {
          if (typeof value !== 'number' || value < 0 || value > 0xffff) {
            stream.emit('error', new Error("Invalid ".concat(name, ": ").concat(value)));
            return false;
          }
          length += 1 + 2;
          break;
        }
      case 'int32':
        {
          if (typeof value !== 'number' || value < 0 || value > 0xffffffff) {
            stream.emit('error', new Error("Invalid ".concat(name, ": ").concat(value)));
            return false;
          }
          length += 1 + 4;
          break;
        }
      case 'var':
        {
          // var byte integer is max 24 bits packed in 32 bits
          if (typeof value !== 'number' || value < 0 || value > 0x0fffffff) {
            stream.emit('error', new Error("Invalid ".concat(name, ": ").concat(value)));
            return false;
          }
          length += 1 + Buffer.byteLength(genBufVariableByteInt(value));
          break;
        }
      case 'string':
        {
          if (typeof value !== 'string') {
            stream.emit('error', new Error("Invalid ".concat(name, ": ").concat(value)));
            return false;
          }
          length += 1 + 2 + Buffer.byteLength(value.toString());
          break;
        }
      case 'pair':
        {
          if (_typeof(value) !== 'object') {
            stream.emit('error', new Error("Invalid ".concat(name, ": ").concat(value)));
            return false;
          }
          length += Object.getOwnPropertyNames(value).reduce(function (result, name) {
            var currentValue = value[name];
            if (Array.isArray(currentValue)) {
              result += currentValue.reduce(function (currentLength, value) {
                currentLength += 1 + 2 + Buffer.byteLength(name.toString()) + 2 + Buffer.byteLength(value.toString());
                return currentLength;
              }, 0);
            } else {
              result += 1 + 2 + Buffer.byteLength(name.toString()) + 2 + Buffer.byteLength(value[name].toString());
            }
            return result;
          }, 0);
          break;
        }
      default:
        {
          stream.emit('error', new Error("Invalid property ".concat(name, ": ").concat(value)));
          return false;
        }
    }
    return length;
  }
  if (properties) {
    for (var propName in properties) {
      var propLength = 0;
      var propValueLength = 0;
      var propValue = properties[propName];
      if (Array.isArray(propValue)) {
        for (var valueIndex = 0; valueIndex < propValue.length; valueIndex++) {
          propValueLength = getLengthProperty(propName, propValue[valueIndex]);
          if (!propValueLength) {
            return false;
          }
          propLength += propValueLength;
        }
      } else {
        propValueLength = getLengthProperty(propName, propValue);
        if (!propValueLength) {
          return false;
        }
        propLength = propValueLength;
      }
      if (!propLength) return false;
      propertiesLength += propLength;
    }
  }
  var propertiesLengthLength = Buffer.byteLength(genBufVariableByteInt(propertiesLength));
  return {
    length: propertiesLengthLength + propertiesLength,
    write: function write() {
      writeProperties(stream, properties, propertiesLength);
    }
  };
}
function getPropertiesByMaximumPacketSize(stream, properties, opts, length) {
  var mayEmptyProps = ['reasonString', 'userProperties'];
  var maximumPacketSize = opts && opts.properties && opts.properties.maximumPacketSize ? opts.properties.maximumPacketSize : 0;
  var propertiesData = getProperties(stream, properties);
  if (maximumPacketSize) {
    while (length + propertiesData.length > maximumPacketSize) {
      var currentMayEmptyProp = mayEmptyProps.shift();
      if (currentMayEmptyProp && properties[currentMayEmptyProp]) {
        delete properties[currentMayEmptyProp];
        propertiesData = getProperties(stream, properties);
      } else {
        return false;
      }
    }
  }
  return propertiesData;
}
function writeProperty(stream, propName, value) {
  var type = protocol.propertiesTypes[propName];
  switch (type) {
    case 'byte':
      {
        stream.write(Buffer.from([protocol.properties[propName]]));
        stream.write(Buffer.from([+value]));
        break;
      }
    case 'int8':
      {
        stream.write(Buffer.from([protocol.properties[propName]]));
        stream.write(Buffer.from([value]));
        break;
      }
    case 'binary':
      {
        stream.write(Buffer.from([protocol.properties[propName]]));
        writeStringOrBuffer(stream, value);
        break;
      }
    case 'int16':
      {
        stream.write(Buffer.from([protocol.properties[propName]]));
        writeNumber(stream, value);
        break;
      }
    case 'int32':
      {
        stream.write(Buffer.from([protocol.properties[propName]]));
        write4ByteNumber(stream, value);
        break;
      }
    case 'var':
      {
        stream.write(Buffer.from([protocol.properties[propName]]));
        writeVarByteInt(stream, value);
        break;
      }
    case 'string':
      {
        stream.write(Buffer.from([protocol.properties[propName]]));
        writeString(stream, value);
        break;
      }
    case 'pair':
      {
        Object.getOwnPropertyNames(value).forEach(function (name) {
          var currentValue = value[name];
          if (Array.isArray(currentValue)) {
            currentValue.forEach(function (value) {
              stream.write(Buffer.from([protocol.properties[propName]]));
              writeStringPair(stream, name.toString(), value.toString());
            });
          } else {
            stream.write(Buffer.from([protocol.properties[propName]]));
            writeStringPair(stream, name.toString(), currentValue.toString());
          }
        });
        break;
      }
    default:
      {
        stream.emit('error', new Error("Invalid property ".concat(propName, " value: ").concat(value)));
        return false;
      }
  }
}
function writeProperties(stream, properties, propertiesLength) {
  /* write properties to stream */
  writeVarByteInt(stream, propertiesLength);
  for (var propName in properties) {
    if (Object.prototype.hasOwnProperty.call(properties, propName) && properties[propName] !== null) {
      var value = properties[propName];
      if (Array.isArray(value)) {
        for (var valueIndex = 0; valueIndex < value.length; valueIndex++) {
          writeProperty(stream, propName, value[valueIndex]);
        }
      } else {
        writeProperty(stream, propName, value);
      }
    }
  }
}
function byteLength(bufOrString) {
  if (!bufOrString) return 0;else if (bufOrString instanceof Buffer) return bufOrString.length;else return Buffer.byteLength(bufOrString);
}
function isStringOrBuffer(field) {
  return typeof field === 'string' || field instanceof Buffer;
}
module.exports = generate;

/***/ }),

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

"use strict";
/* provided dependency */ var process = __webpack_require__(554);


/**
 * Module dependencies
 */
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var EventEmitter = (__webpack_require__(19620).EventEmitter);
var Store = __webpack_require__(17932);
var TopicAliasRecv = __webpack_require__(96207);
var TopicAliasSend = __webpack_require__(77984);
var mqttPacket = __webpack_require__(56242);
var DefaultMessageIdProvider = __webpack_require__(33740);
var Writable = (__webpack_require__(8237).Writable);
var inherits = __webpack_require__(80376);
var reInterval = __webpack_require__(36012);
var clone = __webpack_require__(55297);
var validations = __webpack_require__(73767);
var xtend = __webpack_require__(84450);
var debug = __webpack_require__(38801)('mqttjs:client');
var nextTick = process ? process.nextTick : function (callback) {
  setTimeout(callback, 0);
};
var setImmediate = __webpack_require__.g.setImmediate || function (callback) {
  // works in node v0.8
  nextTick(callback);
};
var defaultConnectOptions = {
  keepalive: 60,
  reschedulePings: true,
  protocolId: 'MQTT',
  protocolVersion: 4,
  reconnectPeriod: 1000,
  connectTimeout: 30 * 1000,
  clean: true,
  resubscribe: true
};
var socketErrors = ['ECONNREFUSED', 'EADDRINUSE', 'ECONNRESET', 'ENOTFOUND'];

// Other Socket Errors: EADDRINUSE, ECONNRESET, ENOTFOUND.

var errors = {
  0: '',
  1: 'Unacceptable protocol version',
  2: 'Identifier rejected',
  3: 'Server unavailable',
  4: 'Bad username or password',
  5: 'Not authorized',
  16: 'No matching subscribers',
  17: 'No subscription existed',
  128: 'Unspecified error',
  129: 'Malformed Packet',
  130: 'Protocol Error',
  131: 'Implementation specific error',
  132: 'Unsupported Protocol Version',
  133: 'Client Identifier not valid',
  134: 'Bad User Name or Password',
  135: 'Not authorized',
  136: 'Server unavailable',
  137: 'Server busy',
  138: 'Banned',
  139: 'Server shutting down',
  140: 'Bad authentication method',
  141: 'Keep Alive timeout',
  142: 'Session taken over',
  143: 'Topic Filter invalid',
  144: 'Topic Name invalid',
  145: 'Packet identifier in use',
  146: 'Packet Identifier not found',
  147: 'Receive Maximum exceeded',
  148: 'Topic Alias invalid',
  149: 'Packet too large',
  150: 'Message rate too high',
  151: 'Quota exceeded',
  152: 'Administrative action',
  153: 'Payload format invalid',
  154: 'Retain not supported',
  155: 'QoS not supported',
  156: 'Use another server',
  157: 'Server moved',
  158: 'Shared Subscriptions not supported',
  159: 'Connection rate exceeded',
  160: 'Maximum connect time',
  161: 'Subscription Identifiers not supported',
  162: 'Wildcard Subscriptions not supported'
};
function defaultId() {
  return 'mqttjs_' + Math.random().toString(16).substr(2, 8);
}
function applyTopicAlias(client, packet) {
  if (client.options.protocolVersion === 5) {
    if (packet.cmd === 'publish') {
      var alias;
      if (packet.properties) {
        alias = packet.properties.topicAlias;
      }
      var topic = packet.topic.toString();
      if (client.topicAliasSend) {
        if (alias) {
          if (topic.length !== 0) {
            // register topic alias
            debug('applyTopicAlias :: register topic: %s - alias: %d', topic, alias);
            if (!client.topicAliasSend.put(topic, alias)) {
              debug('applyTopicAlias :: error out of range. topic: %s - alias: %d', topic, alias);
              return new Error('Sending Topic Alias out of range');
            }
          }
        } else {
          if (topic.length !== 0) {
            if (client.options.autoAssignTopicAlias) {
              alias = client.topicAliasSend.getAliasByTopic(topic);
              if (alias) {
                packet.topic = '';
                packet.properties = _objectSpread(_objectSpread({}, packet.properties), {}, {
                  topicAlias: alias
                });
                debug('applyTopicAlias :: auto assign(use) topic: %s - alias: %d', topic, alias);
              } else {
                alias = client.topicAliasSend.getLruAlias();
                client.topicAliasSend.put(topic, alias);
                packet.properties = _objectSpread(_objectSpread({}, packet.properties), {}, {
                  topicAlias: alias
                });
                debug('applyTopicAlias :: auto assign topic: %s - alias: %d', topic, alias);
              }
            } else if (client.options.autoUseTopicAlias) {
              alias = client.topicAliasSend.getAliasByTopic(topic);
              if (alias) {
                packet.topic = '';
                packet.properties = _objectSpread(_objectSpread({}, packet.properties), {}, {
                  topicAlias: alias
                });
                debug('applyTopicAlias :: auto use topic: %s - alias: %d', topic, alias);
              }
            }
          }
        }
      } else if (alias) {
        debug('applyTopicAlias :: error out of range. topic: %s - alias: %d', topic, alias);
        return new Error('Sending Topic Alias out of range');
      }
    }
  }
}
function removeTopicAliasAndRecoverTopicName(client, packet) {
  var alias;
  if (packet.properties) {
    alias = packet.properties.topicAlias;
  }
  var topic = packet.topic.toString();
  if (topic.length === 0) {
    // restore topic from alias
    if (typeof alias === 'undefined') {
      return new Error('Unregistered Topic Alias');
    } else {
      topic = client.topicAliasSend.getTopicByAlias(alias);
      if (typeof topic === 'undefined') {
        return new Error('Unregistered Topic Alias');
      } else {
        packet.topic = topic;
      }
    }
  }
  if (alias) {
    delete packet.properties.topicAlias;
  }
}
function sendPacket(client, packet, cb) {
  debug('sendPacket :: packet: %O', packet);
  debug('sendPacket :: emitting `packetsend`');
  client.emit('packetsend', packet);
  debug('sendPacket :: writing to stream');
  var result = mqttPacket.writeToStream(packet, client.stream, client.options);
  debug('sendPacket :: writeToStream result %s', result);
  if (!result && cb && cb !== nop) {
    debug('sendPacket :: handle events on `drain` once through callback.');
    client.stream.once('drain', cb);
  } else if (cb) {
    debug('sendPacket :: invoking cb');
    cb();
  }
}
function flush(queue) {
  if (queue) {
    debug('flush: queue exists? %b', !!queue);
    Object.keys(queue).forEach(function (messageId) {
      if (typeof queue[messageId].cb === 'function') {
        queue[messageId].cb(new Error('Connection closed'));
        // This is suspicious.  Why do we only delete this if we have a callbck?
        // If this is by-design, then adding no as callback would cause this to get deleted unintentionally.
        delete queue[messageId];
      }
    });
  }
}
function flushVolatile(queue) {
  if (queue) {
    debug('flushVolatile :: deleting volatile messages from the queue and setting their callbacks as error function');
    Object.keys(queue).forEach(function (messageId) {
      if (queue[messageId]["volatile"] && typeof queue[messageId].cb === 'function') {
        queue[messageId].cb(new Error('Connection closed'));
        delete queue[messageId];
      }
    });
  }
}
function storeAndSend(client, packet, cb, cbStorePut) {
  debug('storeAndSend :: store packet with cmd %s to outgoingStore', packet.cmd);
  var storePacket = packet;
  var err;
  if (storePacket.cmd === 'publish') {
    // The original packet is for sending.
    // The cloned storePacket is for storing to resend on reconnect.
    // Topic Alias must not be used after disconnected.
    storePacket = clone(packet);
    err = removeTopicAliasAndRecoverTopicName(client, storePacket);
    if (err) {
      return cb && cb(err);
    }
  }
  client.outgoingStore.put(storePacket, function storedPacket(err) {
    if (err) {
      return cb && cb(err);
    }
    cbStorePut();
    sendPacket(client, packet, cb);
  });
}
function nop(error) {
  debug('nop ::', error);
}

/**
 * MqttClient constructor
 *
 * @param {Stream} stream - stream
 * @param {Object} [options] - connection options
 * (see Connection#connect)
 */
function MqttClient(streamBuilder, options) {
  var k;
  var that = this;
  if (!(this instanceof MqttClient)) {
    return new MqttClient(streamBuilder, options);
  }
  this.options = options || {};

  // Defaults
  for (k in defaultConnectOptions) {
    if (typeof this.options[k] === 'undefined') {
      this.options[k] = defaultConnectOptions[k];
    } else {
      this.options[k] = options[k];
    }
  }
  debug('MqttClient :: options.protocol', options.protocol);
  debug('MqttClient :: options.protocolVersion', options.protocolVersion);
  debug('MqttClient :: options.username', options.username);
  debug('MqttClient :: options.keepalive', options.keepalive);
  debug('MqttClient :: options.reconnectPeriod', options.reconnectPeriod);
  debug('MqttClient :: options.rejectUnauthorized', options.rejectUnauthorized);
  debug('MqttClient :: options.topicAliasMaximum', options.topicAliasMaximum);
  this.options.clientId = typeof options.clientId === 'string' ? options.clientId : defaultId();
  debug('MqttClient :: clientId', this.options.clientId);
  this.options.customHandleAcks = options.protocolVersion === 5 && options.customHandleAcks ? options.customHandleAcks : function () {
    arguments[3](0);
  };
  this.streamBuilder = streamBuilder;
  this.messageIdProvider = typeof this.options.messageIdProvider === 'undefined' ? new DefaultMessageIdProvider() : this.options.messageIdProvider;

  // Inflight message storages
  this.outgoingStore = options.outgoingStore || new Store();
  this.incomingStore = options.incomingStore || new Store();

  // Should QoS zero messages be queued when the connection is broken?
  this.queueQoSZero = options.queueQoSZero === undefined ? true : options.queueQoSZero;

  // map of subscribed topics to support reconnection
  this._resubscribeTopics = {};

  // map of a subscribe messageId and a topic
  this.messageIdToTopic = {};

  // Ping timer, setup in _setupPingTimer
  this.pingTimer = null;
  // Is the client connected?
  this.connected = false;
  // Are we disconnecting?
  this.disconnecting = false;
  // Packet queue
  this.queue = [];
  // connack timer
  this.connackTimer = null;
  // Reconnect timer
  this.reconnectTimer = null;
  // Is processing store?
  this._storeProcessing = false;
  // Packet Ids are put into the store during store processing
  this._packetIdsDuringStoreProcessing = {};
  // Store processing queue
  this._storeProcessingQueue = [];

  // Inflight callbacks
  this.outgoing = {};

  // True if connection is first time.
  this._firstConnection = true;
  if (options.topicAliasMaximum > 0) {
    if (options.topicAliasMaximum > 0xffff) {
      debug('MqttClient :: options.topicAliasMaximum is out of range');
    } else {
      this.topicAliasRecv = new TopicAliasRecv(options.topicAliasMaximum);
    }
  }

  // Send queued packets
  this.on('connect', function () {
    var queue = this.queue;
    function deliver() {
      var entry = queue.shift();
      debug('deliver :: entry %o', entry);
      var packet = null;
      if (!entry) {
        that._resubscribe();
        return;
      }
      packet = entry.packet;
      debug('deliver :: call _sendPacket for %o', packet);
      var send = true;
      if (packet.messageId && packet.messageId !== 0) {
        if (!that.messageIdProvider.register(packet.messageId)) {
          send = false;
        }
      }
      if (send) {
        that._sendPacket(packet, function (err) {
          if (entry.cb) {
            entry.cb(err);
          }
          deliver();
        });
      } else {
        debug('messageId: %d has already used. The message is skipped and removed.', packet.messageId);
        deliver();
      }
    }
    debug('connect :: sending queued packets');
    deliver();
  });
  this.on('close', function () {
    debug('close :: connected set to `false`');
    this.connected = false;
    debug('close :: clearing connackTimer');
    clearTimeout(this.connackTimer);
    debug('close :: clearing ping timer');
    if (that.pingTimer !== null) {
      that.pingTimer.clear();
      that.pingTimer = null;
    }
    if (this.topicAliasRecv) {
      this.topicAliasRecv.clear();
    }
    debug('close :: calling _setupReconnect');
    this._setupReconnect();
  });
  EventEmitter.call(this);
  debug('MqttClient :: setting up stream');
  this._setupStream();
}
inherits(MqttClient, EventEmitter);

/**
 * setup the event handlers in the inner stream.
 *
 * @api private
 */
MqttClient.prototype._setupStream = function () {
  var _this = this;
  var that = this;
  var writable = new Writable();
  var parser = mqttPacket.parser(this.options);
  var completeParse = null;
  var packets = [];
  debug('_setupStream :: calling method to clear reconnect');
  this._clearReconnect();
  debug('_setupStream :: using streamBuilder provided to client to create stream');
  this.stream = this.streamBuilder(this);
  parser.on('packet', function (packet) {
    debug('parser :: on packet push to packets array.');
    packets.push(packet);
  });
  function nextTickWork() {
    if (packets.length) {
      nextTick(work);
    } else {
      var done = completeParse;
      completeParse = null;
      done();
    }
  }
  function work() {
    debug('work :: getting next packet in queue');
    var packet = packets.shift();
    if (packet) {
      debug('work :: packet pulled from queue');
      that._handlePacket(packet, nextTickWork);
    } else {
      debug('work :: no packets in queue');
      var done = completeParse;
      completeParse = null;
      debug('work :: done flag is %s', !!done);
      if (done) done();
    }
  }
  writable._write = function (buf, enc, done) {
    completeParse = done;
    debug('writable stream :: parsing buffer');
    parser.parse(buf);
    work();
  };
  function streamErrorHandler(error) {
    debug('streamErrorHandler :: error', error.message);
    if (socketErrors.includes(error.code)) {
      // handle error
      debug('streamErrorHandler :: emitting error');
      that.emit('error', error);
    } else {
      nop(error);
    }
  }
  debug('_setupStream :: pipe stream to writable stream');
  this.stream.pipe(writable);

  // Suppress connection errors
  this.stream.on('error', streamErrorHandler);

  // Echo stream close
  this.stream.on('close', function () {
    debug('(%s)stream :: on close', that.options.clientId);
    flushVolatile(that.outgoing);
    debug('stream: emit close to MqttClient');
    that.emit('close');
  });

  // Send a connect packet
  debug('_setupStream: sending packet `connect`');
  var connectPacket = Object.create(this.options);
  connectPacket.cmd = 'connect';
  if (this.topicAliasRecv) {
    if (!connectPacket.properties) {
      connectPacket.properties = {};
    }
    if (this.topicAliasRecv) {
      connectPacket.properties.topicAliasMaximum = this.topicAliasRecv.max;
    }
  }
  // avoid message queue
  sendPacket(this, connectPacket);

  // Echo connection errors
  parser.on('error', this.emit.bind(this, 'error'));

  // auth
  if (this.options.properties) {
    if (!this.options.properties.authenticationMethod && this.options.properties.authenticationData) {
      that.end(function () {
        return _this.emit('error', new Error('Packet has no Authentication Method'));
      });
      return this;
    }
    if (this.options.properties.authenticationMethod && this.options.authPacket && _typeof(this.options.authPacket) === 'object') {
      var authPacket = xtend({
        cmd: 'auth',
        reasonCode: 0
      }, this.options.authPacket);
      sendPacket(this, authPacket);
    }
  }

  // many drain listeners are needed for qos 1 callbacks if the connection is intermittent
  this.stream.setMaxListeners(1000);
  clearTimeout(this.connackTimer);
  this.connackTimer = setTimeout(function () {
    debug('!!connectTimeout hit!! Calling _cleanUp with force `true`');
    that._cleanUp(true);
  }, this.options.connectTimeout);
};
MqttClient.prototype._handlePacket = function (packet, done) {
  var options = this.options;
  if (options.protocolVersion === 5 && options.properties && options.properties.maximumPacketSize && options.properties.maximumPacketSize < packet.length) {
    this.emit('error', new Error('exceeding packets size ' + packet.cmd));
    this.end({
      reasonCode: 149,
      properties: {
        reasonString: 'Maximum packet size was exceeded'
      }
    });
    return this;
  }
  debug('_handlePacket :: emitting packetreceive');
  this.emit('packetreceive', packet);
  switch (packet.cmd) {
    case 'publish':
      this._handlePublish(packet, done);
      break;
    case 'puback':
    case 'pubrec':
    case 'pubcomp':
    case 'suback':
    case 'unsuback':
      this._handleAck(packet);
      done();
      break;
    case 'pubrel':
      this._handlePubrel(packet, done);
      break;
    case 'connack':
      this._handleConnack(packet);
      done();
      break;
    case 'auth':
      this._handleAuth(packet);
      done();
      break;
    case 'pingresp':
      this._handlePingresp(packet);
      done();
      break;
    case 'disconnect':
      this._handleDisconnect(packet);
      done();
      break;
    default:
      // do nothing
      // maybe we should do an error handling
      // or just log it
      break;
  }
};
MqttClient.prototype._checkDisconnecting = function (callback) {
  if (this.disconnecting) {
    if (callback && callback !== nop) {
      callback(new Error('client disconnecting'));
    } else {
      this.emit('error', new Error('client disconnecting'));
    }
  }
  return this.disconnecting;
};

/**
 * publish - publish <message> to <topic>
 *
 * @param {String} topic - topic to publish to
 * @param {String, Buffer} message - message to publish
 * @param {Object} [opts] - publish options, includes:
 *    {Number} qos - qos level to publish on
 *    {Boolean} retain - whether or not to retain the message
 *    {Boolean} dup - whether or not mark a message as duplicate
 *    {Function} cbStorePut - function(){} called when message is put into `outgoingStore`
 * @param {Function} [callback] - function(err){}
 *    called when publish succeeds or fails
 * @returns {MqttClient} this - for chaining
 * @api public
 *
 * @example client.publish('topic', 'message');
 * @example
 *     client.publish('topic', 'message', {qos: 1, retain: true, dup: true});
 * @example client.publish('topic', 'message', console.log);
 */
MqttClient.prototype.publish = function (topic, message, opts, callback) {
  debug('publish :: message `%s` to topic `%s`', message, topic);
  var options = this.options;

  // .publish(topic, payload, cb);
  if (typeof opts === 'function') {
    callback = opts;
    opts = null;
  }

  // default opts
  var defaultOpts = {
    qos: 0,
    retain: false,
    dup: false
  };
  opts = xtend(defaultOpts, opts);
  if (this._checkDisconnecting(callback)) {
    return this;
  }
  var that = this;
  var publishProc = function publishProc() {
    var messageId = 0;
    if (opts.qos === 1 || opts.qos === 2) {
      messageId = that._nextId();
      if (messageId === null) {
        debug('No messageId left');
        return false;
      }
    }
    var packet = {
      cmd: 'publish',
      topic: topic,
      payload: message,
      qos: opts.qos,
      retain: opts.retain,
      messageId: messageId,
      dup: opts.dup
    };
    if (options.protocolVersion === 5) {
      packet.properties = opts.properties;
    }
    debug('publish :: qos', opts.qos);
    switch (opts.qos) {
      case 1:
      case 2:
        // Add to callbacks
        that.outgoing[packet.messageId] = {
          "volatile": false,
          cb: callback || nop
        };
        debug('MqttClient:publish: packet cmd: %s', packet.cmd);
        that._sendPacket(packet, undefined, opts.cbStorePut);
        break;
      default:
        debug('MqttClient:publish: packet cmd: %s', packet.cmd);
        that._sendPacket(packet, callback, opts.cbStorePut);
        break;
    }
    return true;
  };
  if (this._storeProcessing || this._storeProcessingQueue.length > 0 || !publishProc()) {
    this._storeProcessingQueue.push({
      invoke: publishProc,
      cbStorePut: opts.cbStorePut,
      callback: callback
    });
  }
  return this;
};

/**
 * subscribe - subscribe to <topic>
 *
 * @param {String, Array, Object} topic - topic(s) to subscribe to, supports objects in the form {'topic': qos}
 * @param {Object} [opts] - optional subscription options, includes:
 *    {Number} qos - subscribe qos level
 * @param {Function} [callback] - function(err, granted){} where:
 *    {Error} err - subscription error (none at the moment!)
 *    {Array} granted - array of {topic: 't', qos: 0}
 * @returns {MqttClient} this - for chaining
 * @api public
 * @example client.subscribe('topic');
 * @example client.subscribe('topic', {qos: 1});
 * @example client.subscribe({'topic': {qos: 0}, 'topic2': {qos: 1}}, console.log);
 * @example client.subscribe('topic', console.log);
 */
MqttClient.prototype.subscribe = function () {
  var that = this;
  var args = new Array(arguments.length);
  for (var i = 0; i < arguments.length; i++) {
    args[i] = arguments[i];
  }
  var subs = [];
  var obj = args.shift();
  var resubscribe = obj.resubscribe;
  var callback = args.pop() || nop;
  var opts = args.pop();
  var version = this.options.protocolVersion;
  delete obj.resubscribe;
  if (typeof obj === 'string') {
    obj = [obj];
  }
  if (typeof callback !== 'function') {
    opts = callback;
    callback = nop;
  }
  var invalidTopic = validations.validateTopics(obj);
  if (invalidTopic !== null) {
    setImmediate(callback, new Error('Invalid topic ' + invalidTopic));
    return this;
  }
  if (this._checkDisconnecting(callback)) {
    debug('subscribe: discconecting true');
    return this;
  }
  var defaultOpts = {
    qos: 0
  };
  if (version === 5) {
    defaultOpts.nl = false;
    defaultOpts.rap = false;
    defaultOpts.rh = 0;
  }
  opts = xtend(defaultOpts, opts);
  if (Array.isArray(obj)) {
    obj.forEach(function (topic) {
      debug('subscribe: array topic %s', topic);
      if (!Object.prototype.hasOwnProperty.call(that._resubscribeTopics, topic) || that._resubscribeTopics[topic].qos < opts.qos || resubscribe) {
        var currentOpts = {
          topic: topic,
          qos: opts.qos
        };
        if (version === 5) {
          currentOpts.nl = opts.nl;
          currentOpts.rap = opts.rap;
          currentOpts.rh = opts.rh;
          currentOpts.properties = opts.properties;
        }
        debug('subscribe: pushing topic `%s` and qos `%s` to subs list', currentOpts.topic, currentOpts.qos);
        subs.push(currentOpts);
      }
    });
  } else {
    Object.keys(obj).forEach(function (k) {
      debug('subscribe: object topic %s', k);
      if (!Object.prototype.hasOwnProperty.call(that._resubscribeTopics, k) || that._resubscribeTopics[k].qos < obj[k].qos || resubscribe) {
        var currentOpts = {
          topic: k,
          qos: obj[k].qos
        };
        if (version === 5) {
          currentOpts.nl = obj[k].nl;
          currentOpts.rap = obj[k].rap;
          currentOpts.rh = obj[k].rh;
          currentOpts.properties = opts.properties;
        }
        debug('subscribe: pushing `%s` to subs list', currentOpts);
        subs.push(currentOpts);
      }
    });
  }
  if (!subs.length) {
    callback(null, []);
    return this;
  }
  var subscribeProc = function subscribeProc() {
    var messageId = that._nextId();
    if (messageId === null) {
      debug('No messageId left');
      return false;
    }
    var packet = {
      cmd: 'subscribe',
      subscriptions: subs,
      qos: 1,
      retain: false,
      dup: false,
      messageId: messageId
    };
    if (opts.properties) {
      packet.properties = opts.properties;
    }

    // subscriptions to resubscribe to in case of disconnect
    if (that.options.resubscribe) {
      debug('subscribe :: resubscribe true');
      var topics = [];
      subs.forEach(function (sub) {
        if (that.options.reconnectPeriod > 0) {
          var topic = {
            qos: sub.qos
          };
          if (version === 5) {
            topic.nl = sub.nl || false;
            topic.rap = sub.rap || false;
            topic.rh = sub.rh || 0;
            topic.properties = sub.properties;
          }
          that._resubscribeTopics[sub.topic] = topic;
          topics.push(sub.topic);
        }
      });
      that.messageIdToTopic[packet.messageId] = topics;
    }
    that.outgoing[packet.messageId] = {
      "volatile": true,
      cb: function cb(err, packet) {
        if (!err) {
          var granted = packet.granted;
          for (var _i = 0; _i < granted.length; _i += 1) {
            subs[_i].qos = granted[_i];
          }
        }
        callback(err, subs);
      }
    };
    debug('subscribe :: call _sendPacket');
    that._sendPacket(packet);
    return true;
  };
  if (this._storeProcessing || this._storeProcessingQueue.length > 0 || !subscribeProc()) {
    this._storeProcessingQueue.push({
      invoke: subscribeProc,
      callback: callback
    });
  }
  return this;
};

/**
 * unsubscribe - unsubscribe from topic(s)
 *
 * @param {String, Array} topic - topics to unsubscribe from
 * @param {Object} [opts] - optional subscription options, includes:
 *    {Object} properties - properties of unsubscribe packet
 * @param {Function} [callback] - callback fired on unsuback
 * @returns {MqttClient} this - for chaining
 * @api public
 * @example client.unsubscribe('topic');
 * @example client.unsubscribe('topic', console.log);
 */
MqttClient.prototype.unsubscribe = function () {
  var that = this;
  var args = new Array(arguments.length);
  for (var i = 0; i < arguments.length; i++) {
    args[i] = arguments[i];
  }
  var topic = args.shift();
  var callback = args.pop() || nop;
  var opts = args.pop();
  if (typeof topic === 'string') {
    topic = [topic];
  }
  if (typeof callback !== 'function') {
    opts = callback;
    callback = nop;
  }
  var invalidTopic = validations.validateTopics(topic);
  if (invalidTopic !== null) {
    setImmediate(callback, new Error('Invalid topic ' + invalidTopic));
    return this;
  }
  if (that._checkDisconnecting(callback)) {
    return this;
  }
  var unsubscribeProc = function unsubscribeProc() {
    var messageId = that._nextId();
    if (messageId === null) {
      debug('No messageId left');
      return false;
    }
    var packet = {
      cmd: 'unsubscribe',
      qos: 1,
      messageId: messageId
    };
    if (typeof topic === 'string') {
      packet.unsubscriptions = [topic];
    } else if (Array.isArray(topic)) {
      packet.unsubscriptions = topic;
    }
    if (that.options.resubscribe) {
      packet.unsubscriptions.forEach(function (topic) {
        delete that._resubscribeTopics[topic];
      });
    }
    if (_typeof(opts) === 'object' && opts.properties) {
      packet.properties = opts.properties;
    }
    that.outgoing[packet.messageId] = {
      "volatile": true,
      cb: callback
    };
    debug('unsubscribe: call _sendPacket');
    that._sendPacket(packet);
    return true;
  };
  if (this._storeProcessing || this._storeProcessingQueue.length > 0 || !unsubscribeProc()) {
    this._storeProcessingQueue.push({
      invoke: unsubscribeProc,
      callback: callback
    });
  }
  return this;
};

/**
 * end - close connection
 *
 * @returns {MqttClient} this - for chaining
 * @param {Boolean} force - do not wait for all in-flight messages to be acked
 * @param {Object} opts - added to the disconnect packet
 * @param {Function} cb - called when the client has been closed
 *
 * @api public
 */
MqttClient.prototype.end = function (force, opts, cb) {
  var that = this;
  debug('end :: (%s)', this.options.clientId);
  if (force == null || typeof force !== 'boolean') {
    cb = opts || nop;
    opts = force;
    force = false;
    if (_typeof(opts) !== 'object') {
      cb = opts;
      opts = null;
      if (typeof cb !== 'function') {
        cb = nop;
      }
    }
  }
  if (_typeof(opts) !== 'object') {
    cb = opts;
    opts = null;
  }
  debug('end :: cb? %s', !!cb);
  cb = cb || nop;
  function closeStores() {
    debug('end :: closeStores: closing incoming and outgoing stores');
    that.disconnected = true;
    that.incomingStore.close(function (e1) {
      that.outgoingStore.close(function (e2) {
        debug('end :: closeStores: emitting end');
        that.emit('end');
        if (cb) {
          var err = e1 || e2;
          debug('end :: closeStores: invoking callback with args');
          cb(err);
        }
      });
    });
    if (that._deferredReconnect) {
      that._deferredReconnect();
    }
  }
  function finish() {
    // defer closesStores of an I/O cycle,
    // just to make sure things are
    // ok for websockets
    debug('end :: (%s) :: finish :: calling _cleanUp with force %s', that.options.clientId, force);
    that._cleanUp(force, function () {
      debug('end :: finish :: calling process.nextTick on closeStores');
      // const boundProcess = nextTick.bind(null, closeStores)
      nextTick(closeStores.bind(that));
    }, opts);
  }
  if (this.disconnecting) {
    cb();
    return this;
  }
  this._clearReconnect();
  this.disconnecting = true;
  if (!force && Object.keys(this.outgoing).length > 0) {
    // wait 10ms, just to be sure we received all of it
    debug('end :: (%s) :: calling finish in 10ms once outgoing is empty', that.options.clientId);
    this.once('outgoingEmpty', setTimeout.bind(null, finish, 10));
  } else {
    debug('end :: (%s) :: immediately calling finish', that.options.clientId);
    finish();
  }
  return this;
};

/**
 * removeOutgoingMessage - remove a message in outgoing store
 * the outgoing callback will be called withe Error('Message removed') if the message is removed
 *
 * @param {Number} messageId - messageId to remove message
 * @returns {MqttClient} this - for chaining
 * @api public
 *
 * @example client.removeOutgoingMessage(client.getLastAllocated());
 */
MqttClient.prototype.removeOutgoingMessage = function (messageId) {
  var cb = this.outgoing[messageId] ? this.outgoing[messageId].cb : null;
  delete this.outgoing[messageId];
  this.outgoingStore.del({
    messageId: messageId
  }, function () {
    cb(new Error('Message removed'));
  });
  return this;
};

/**
 * reconnect - connect again using the same options as connect()
 *
 * @param {Object} [opts] - optional reconnect options, includes:
 *    {Store} incomingStore - a store for the incoming packets
 *    {Store} outgoingStore - a store for the outgoing packets
 *    if opts is not given, current stores are used
 * @returns {MqttClient} this - for chaining
 *
 * @api public
 */
MqttClient.prototype.reconnect = function (opts) {
  debug('client reconnect');
  var that = this;
  var f = function f() {
    if (opts) {
      that.options.incomingStore = opts.incomingStore;
      that.options.outgoingStore = opts.outgoingStore;
    } else {
      that.options.incomingStore = null;
      that.options.outgoingStore = null;
    }
    that.incomingStore = that.options.incomingStore || new Store();
    that.outgoingStore = that.options.outgoingStore || new Store();
    that.disconnecting = false;
    that.disconnected = false;
    that._deferredReconnect = null;
    that._reconnect();
  };
  if (this.disconnecting && !this.disconnected) {
    this._deferredReconnect = f;
  } else {
    f();
  }
  return this;
};

/**
 * _reconnect - implement reconnection
 * @api privateish
 */
MqttClient.prototype._reconnect = function () {
  var _this2 = this;
  debug('_reconnect: emitting reconnect to client');
  this.emit('reconnect');
  if (this.connected) {
    this.end(function () {
      _this2._setupStream();
    });
    debug('client already connected. disconnecting first.');
  } else {
    debug('_reconnect: calling _setupStream');
    this._setupStream();
  }
};

/**
 * _setupReconnect - setup reconnect timer
 */
MqttClient.prototype._setupReconnect = function () {
  var that = this;
  if (!that.disconnecting && !that.reconnectTimer && that.options.reconnectPeriod > 0) {
    if (!this.reconnecting) {
      debug('_setupReconnect :: emit `offline` state');
      this.emit('offline');
      debug('_setupReconnect :: set `reconnecting` to `true`');
      this.reconnecting = true;
    }
    debug('_setupReconnect :: setting reconnectTimer for %d ms', that.options.reconnectPeriod);
    that.reconnectTimer = setInterval(function () {
      debug('reconnectTimer :: reconnect triggered!');
      that._reconnect();
    }, that.options.reconnectPeriod);
  } else {
    debug('_setupReconnect :: doing nothing...');
  }
};

/**
 * _clearReconnect - clear the reconnect timer
 */
MqttClient.prototype._clearReconnect = function () {
  debug('_clearReconnect : clearing reconnect timer');
  if (this.reconnectTimer) {
    clearInterval(this.reconnectTimer);
    this.reconnectTimer = null;
  }
};

/**
 * _cleanUp - clean up on connection end
 * @api private
 */
MqttClient.prototype._cleanUp = function (forced, done) {
  var opts = arguments[2];
  if (done) {
    debug('_cleanUp :: done callback provided for on stream close');
    this.stream.on('close', done);
  }
  debug('_cleanUp :: forced? %s', forced);
  if (forced) {
    if (this.options.reconnectPeriod === 0 && this.options.clean) {
      flush(this.outgoing);
    }
    debug('_cleanUp :: (%s) :: destroying stream', this.options.clientId);
    this.stream.destroy();
  } else {
    var packet = xtend({
      cmd: 'disconnect'
    }, opts);
    debug('_cleanUp :: (%s) :: call _sendPacket with disconnect packet', this.options.clientId);
    this._sendPacket(packet, setImmediate.bind(null, this.stream.end.bind(this.stream)));
  }
  if (!this.disconnecting) {
    debug('_cleanUp :: client not disconnecting. Clearing and resetting reconnect.');
    this._clearReconnect();
    this._setupReconnect();
  }
  if (this.pingTimer !== null) {
    debug('_cleanUp :: clearing pingTimer');
    this.pingTimer.clear();
    this.pingTimer = null;
  }
  if (done && !this.connected) {
    debug('_cleanUp :: (%s) :: removing stream `done` callback `close` listener', this.options.clientId);
    this.stream.removeListener('close', done);
    done();
  }
};

/**
 * _sendPacket - send or queue a packet
 * @param {Object} packet - packet options
 * @param {Function} cb - callback when the packet is sent
 * @param {Function} cbStorePut - called when message is put into outgoingStore
 * @api private
 */
MqttClient.prototype._sendPacket = function (packet, cb, cbStorePut) {
  debug('_sendPacket :: (%s) ::  start', this.options.clientId);
  cbStorePut = cbStorePut || nop;
  cb = cb || nop;
  var err = applyTopicAlias(this, packet);
  if (err) {
    cb(err);
    return;
  }
  if (!this.connected) {
    // allow auth packets to be sent while authenticating with the broker (mqtt5 enhanced auth)
    if (packet.cmd === 'auth') {
      this._shiftPingInterval();
      sendPacket(this, packet, cb);
      return;
    }
    debug('_sendPacket :: client not connected. Storing packet offline.');
    this._storePacket(packet, cb, cbStorePut);
    return;
  }

  // When sending a packet, reschedule the ping timer
  this._shiftPingInterval();
  switch (packet.cmd) {
    case 'publish':
      break;
    case 'pubrel':
      storeAndSend(this, packet, cb, cbStorePut);
      return;
    default:
      sendPacket(this, packet, cb);
      return;
  }
  switch (packet.qos) {
    case 2:
    case 1:
      storeAndSend(this, packet, cb, cbStorePut);
      break;
    /**
     * no need of case here since it will be caught by default
     * and jshint comply that before default it must be a break
     * anyway it will result in -1 evaluation
     */
    case 0:
    /* falls through */
    default:
      sendPacket(this, packet, cb);
      break;
  }
  debug('_sendPacket :: (%s) ::  end', this.options.clientId);
};

/**
 * _storePacket - queue a packet
 * @param {Object} packet - packet options
 * @param {Function} cb - callback when the packet is sent
 * @param {Function} cbStorePut - called when message is put into outgoingStore
 * @api private
 */
MqttClient.prototype._storePacket = function (packet, cb, cbStorePut) {
  debug('_storePacket :: packet: %o', packet);
  debug('_storePacket :: cb? %s', !!cb);
  cbStorePut = cbStorePut || nop;
  var storePacket = packet;
  if (storePacket.cmd === 'publish') {
    // The original packet is for sending.
    // The cloned storePacket is for storing to resend on reconnect.
    // Topic Alias must not be used after disconnected.
    storePacket = clone(packet);
    var err = removeTopicAliasAndRecoverTopicName(this, storePacket);
    if (err) {
      return cb && cb(err);
    }
  }
  // check that the packet is not a qos of 0, or that the command is not a publish
  if ((storePacket.qos || 0) === 0 && this.queueQoSZero || storePacket.cmd !== 'publish') {
    this.queue.push({
      packet: storePacket,
      cb: cb
    });
  } else if (storePacket.qos > 0) {
    cb = this.outgoing[storePacket.messageId] ? this.outgoing[storePacket.messageId].cb : null;
    this.outgoingStore.put(storePacket, function (err) {
      if (err) {
        return cb && cb(err);
      }
      cbStorePut();
    });
  } else if (cb) {
    cb(new Error('No connection to broker'));
  }
};

/**
 * _setupPingTimer - setup the ping timer
 *
 * @api private
 */
MqttClient.prototype._setupPingTimer = function () {
  debug('_setupPingTimer :: keepalive %d (seconds)', this.options.keepalive);
  var that = this;
  if (!this.pingTimer && this.options.keepalive) {
    this.pingResp = true;
    this.pingTimer = reInterval(function () {
      that._checkPing();
    }, this.options.keepalive * 1000);
  }
};

/**
 * _shiftPingInterval - reschedule the ping interval
 *
 * @api private
 */
MqttClient.prototype._shiftPingInterval = function () {
  if (this.pingTimer && this.options.keepalive && this.options.reschedulePings) {
    this.pingTimer.reschedule(this.options.keepalive * 1000);
  }
};
/**
 * _checkPing - check if a pingresp has come back, and ping the server again
 *
 * @api private
 */
MqttClient.prototype._checkPing = function () {
  debug('_checkPing :: checking ping...');
  if (this.pingResp) {
    debug('_checkPing :: ping response received. Clearing flag and sending `pingreq`');
    this.pingResp = false;
    this._sendPacket({
      cmd: 'pingreq'
    });
  } else {
    // do a forced cleanup since socket will be in bad shape
    debug('_checkPing :: calling _cleanUp with force true');
    this._cleanUp(true);
  }
};

/**
 * _handlePingresp - handle a pingresp
 *
 * @api private
 */
MqttClient.prototype._handlePingresp = function () {
  this.pingResp = true;
};

/**
 * _handleConnack
 *
 * @param {Object} packet
 * @api private
 */
MqttClient.prototype._handleConnack = function (packet) {
  debug('_handleConnack');
  var options = this.options;
  var version = options.protocolVersion;
  var rc = version === 5 ? packet.reasonCode : packet.returnCode;
  clearTimeout(this.connackTimer);
  delete this.topicAliasSend;
  if (packet.properties) {
    if (packet.properties.topicAliasMaximum) {
      if (packet.properties.topicAliasMaximum > 0xffff) {
        this.emit('error', new Error('topicAliasMaximum from broker is out of range'));
        return;
      }
      if (packet.properties.topicAliasMaximum > 0) {
        this.topicAliasSend = new TopicAliasSend(packet.properties.topicAliasMaximum);
      }
    }
    if (packet.properties.serverKeepAlive && options.keepalive) {
      options.keepalive = packet.properties.serverKeepAlive;
      this._shiftPingInterval();
    }
    if (packet.properties.maximumPacketSize) {
      if (!options.properties) {
        options.properties = {};
      }
      options.properties.maximumPacketSize = packet.properties.maximumPacketSize;
    }
  }
  if (rc === 0) {
    this.reconnecting = false;
    this._onConnect(packet);
  } else if (rc > 0) {
    var err = new Error('Connection refused: ' + errors[rc]);
    err.code = rc;
    this.emit('error', err);
  }
};
MqttClient.prototype._handleAuth = function (packet) {
  var options = this.options;
  var version = options.protocolVersion;
  var rc = version === 5 ? packet.reasonCode : packet.returnCode;
  if (version !== 5) {
    var err = new Error('Protocol error: Auth packets are only supported in MQTT 5. Your version:' + version);
    err.code = rc;
    this.emit('error', err);
    return;
  }
  var that = this;
  this.handleAuth(packet, function (err, packet) {
    if (err) {
      that.emit('error', err);
      return;
    }
    if (rc === 24) {
      that.reconnecting = false;
      that._sendPacket(packet);
    } else {
      var error = new Error('Connection refused: ' + errors[rc]);
      err.code = rc;
      that.emit('error', error);
    }
  });
};

/**
 * @param packet the packet received by the broker
 * @return the auth packet to be returned to the broker
 * @api public
 */
MqttClient.prototype.handleAuth = function (packet, callback) {
  callback();
};

/**
 * _handlePublish
 *
 * @param {Object} packet
 * @api private
 */
/*
those late 2 case should be rewrite to comply with coding style:

case 1:
case 0:
  // do not wait sending a puback
  // no callback passed
  if (1 === qos) {
    this._sendPacket({
      cmd: 'puback',
      messageId: messageId
    });
  }
  // emit the message event for both qos 1 and 0
  this.emit('message', topic, message, packet);
  this.handleMessage(packet, done);
  break;
default:
  // do nothing but every switch mus have a default
  // log or throw an error about unknown qos
  break;

for now i just suppressed the warnings
*/
MqttClient.prototype._handlePublish = function (packet, done) {
  debug('_handlePublish: packet %o', packet);
  done = typeof done !== 'undefined' ? done : nop;
  var topic = packet.topic.toString();
  var message = packet.payload;
  var qos = packet.qos;
  var messageId = packet.messageId;
  var that = this;
  var options = this.options;
  var validReasonCodes = [0, 16, 128, 131, 135, 144, 145, 151, 153];
  if (this.options.protocolVersion === 5) {
    var alias;
    if (packet.properties) {
      alias = packet.properties.topicAlias;
    }
    if (typeof alias !== 'undefined') {
      if (topic.length === 0) {
        if (alias > 0 && alias <= 0xffff) {
          var gotTopic = this.topicAliasRecv.getTopicByAlias(alias);
          if (gotTopic) {
            topic = gotTopic;
            debug('_handlePublish :: topic complemented by alias. topic: %s - alias: %d', topic, alias);
          } else {
            debug('_handlePublish :: unregistered topic alias. alias: %d', alias);
            this.emit('error', new Error('Received unregistered Topic Alias'));
            return;
          }
        } else {
          debug('_handlePublish :: topic alias out of range. alias: %d', alias);
          this.emit('error', new Error('Received Topic Alias is out of range'));
          return;
        }
      } else {
        if (this.topicAliasRecv.put(topic, alias)) {
          debug('_handlePublish :: registered topic: %s - alias: %d', topic, alias);
        } else {
          debug('_handlePublish :: topic alias out of range. alias: %d', alias);
          this.emit('error', new Error('Received Topic Alias is out of range'));
          return;
        }
      }
    }
  }
  debug('_handlePublish: qos %d', qos);
  switch (qos) {
    case 2:
      {
        options.customHandleAcks(topic, message, packet, function (error, code) {
          if (!(error instanceof Error)) {
            code = error;
            error = null;
          }
          if (error) {
            return that.emit('error', error);
          }
          if (validReasonCodes.indexOf(code) === -1) {
            return that.emit('error', new Error('Wrong reason code for pubrec'));
          }
          if (code) {
            that._sendPacket({
              cmd: 'pubrec',
              messageId: messageId,
              reasonCode: code
            }, done);
          } else {
            that.incomingStore.put(packet, function () {
              that._sendPacket({
                cmd: 'pubrec',
                messageId: messageId
              }, done);
            });
          }
        });
        break;
      }
    case 1:
      {
        // emit the message event
        options.customHandleAcks(topic, message, packet, function (error, code) {
          if (!(error instanceof Error)) {
            code = error;
            error = null;
          }
          if (error) {
            return that.emit('error', error);
          }
          if (validReasonCodes.indexOf(code) === -1) {
            return that.emit('error', new Error('Wrong reason code for puback'));
          }
          if (!code) {
            that.emit('message', topic, message, packet);
          }
          that.handleMessage(packet, function (err) {
            if (err) {
              return done && done(err);
            }
            that._sendPacket({
              cmd: 'puback',
              messageId: messageId,
              reasonCode: code
            }, done);
          });
        });
        break;
      }
    case 0:
      // emit the message event
      this.emit('message', topic, message, packet);
      this.handleMessage(packet, done);
      break;
    default:
      // do nothing
      debug('_handlePublish: unknown QoS. Doing nothing.');
      // log or throw an error about unknown qos
      break;
  }
};

/**
 * Handle messages with backpressure support, one at a time.
 * Override at will.
 *
 * @param Packet packet the packet
 * @param Function callback call when finished
 * @api public
 */
MqttClient.prototype.handleMessage = function (packet, callback) {
  callback();
};

/**
 * _handleAck
 *
 * @param {Object} packet
 * @api private
 */

MqttClient.prototype._handleAck = function (packet) {
  /* eslint no-fallthrough: "off" */
  var messageId = packet.messageId;
  var type = packet.cmd;
  var response = null;
  var cb = this.outgoing[messageId] ? this.outgoing[messageId].cb : null;
  var that = this;
  var err;

  // Checking `!cb` happens to work, but it's not technically "correct".
  //
  // Why? This code assumes that "no callback" is the same as that "we're not
  // waiting for responses" (puback, pubrec, pubcomp, suback, or unsuback).
  //
  // It would be better to check `if (!this.outgoing[messageId])` here, but
  // there's no reason to change it and risk (another) regression.
  //
  // The only reason this code works is becaues code in MqttClient.publish,
  // MqttClinet.subscribe, and MqttClient.unsubscribe ensures that we will
  // have a callback even if the user doesn't pass one in.)
  if (!cb) {
    debug('_handleAck :: Server sent an ack in error. Ignoring.');
    // Server sent an ack in error, ignore it.
    return;
  }

  // Process
  debug('_handleAck :: packet type', type);
  switch (type) {
    case 'pubcomp':
    // same thing as puback for QoS 2
    case 'puback':
      {
        var pubackRC = packet.reasonCode;
        // Callback - we're done
        if (pubackRC && pubackRC > 0 && pubackRC !== 16) {
          err = new Error('Publish error: ' + errors[pubackRC]);
          err.code = pubackRC;
          cb(err, packet);
        }
        delete this.outgoing[messageId];
        this.outgoingStore.del(packet, cb);
        this.messageIdProvider.deallocate(messageId);
        this._invokeStoreProcessingQueue();
        break;
      }
    case 'pubrec':
      {
        response = {
          cmd: 'pubrel',
          qos: 2,
          messageId: messageId
        };
        var pubrecRC = packet.reasonCode;
        if (pubrecRC && pubrecRC > 0 && pubrecRC !== 16) {
          err = new Error('Publish error: ' + errors[pubrecRC]);
          err.code = pubrecRC;
          cb(err, packet);
        } else {
          this._sendPacket(response);
        }
        break;
      }
    case 'suback':
      {
        delete this.outgoing[messageId];
        this.messageIdProvider.deallocate(messageId);
        for (var grantedI = 0; grantedI < packet.granted.length; grantedI++) {
          if ((packet.granted[grantedI] & 0x80) !== 0) {
            // suback with Failure status
            var topics = this.messageIdToTopic[messageId];
            if (topics) {
              topics.forEach(function (topic) {
                delete that._resubscribeTopics[topic];
              });
            }
          }
        }
        this._invokeStoreProcessingQueue();
        cb(null, packet);
        break;
      }
    case 'unsuback':
      {
        delete this.outgoing[messageId];
        this.messageIdProvider.deallocate(messageId);
        this._invokeStoreProcessingQueue();
        cb(null);
        break;
      }
    default:
      that.emit('error', new Error('unrecognized packet type'));
  }
  if (this.disconnecting && Object.keys(this.outgoing).length === 0) {
    this.emit('outgoingEmpty');
  }
};

/**
 * _handlePubrel
 *
 * @param {Object} packet
 * @api private
 */
MqttClient.prototype._handlePubrel = function (packet, callback) {
  debug('handling pubrel packet');
  callback = typeof callback !== 'undefined' ? callback : nop;
  var messageId = packet.messageId;
  var that = this;
  var comp = {
    cmd: 'pubcomp',
    messageId: messageId
  };
  that.incomingStore.get(packet, function (err, pub) {
    if (!err) {
      that.emit('message', pub.topic, pub.payload, pub);
      that.handleMessage(pub, function (err) {
        if (err) {
          return callback(err);
        }
        that.incomingStore.del(pub, nop);
        that._sendPacket(comp, callback);
      });
    } else {
      that._sendPacket(comp, callback);
    }
  });
};

/**
 * _handleDisconnect
 *
 * @param {Object} packet
 * @api private
 */
MqttClient.prototype._handleDisconnect = function (packet) {
  this.emit('disconnect', packet);
};

/**
 * _nextId
 * @return unsigned int
 */
MqttClient.prototype._nextId = function () {
  return this.messageIdProvider.allocate();
};

/**
 * getLastMessageId
 * @return unsigned int
 */
MqttClient.prototype.getLastMessageId = function () {
  return this.messageIdProvider.getLastAllocated();
};

/**
 * _resubscribe
 * @api private
 */
MqttClient.prototype._resubscribe = function () {
  debug('_resubscribe');
  var _resubscribeTopicsKeys = Object.keys(this._resubscribeTopics);
  if (!this._firstConnection && (this.options.clean || this.options.protocolVersion === 5 && !this.connackPacket.sessionPresent) && _resubscribeTopicsKeys.length > 0) {
    if (this.options.resubscribe) {
      if (this.options.protocolVersion === 5) {
        debug('_resubscribe: protocolVersion 5');
        for (var topicI = 0; topicI < _resubscribeTopicsKeys.length; topicI++) {
          var resubscribeTopic = {};
          resubscribeTopic[_resubscribeTopicsKeys[topicI]] = this._resubscribeTopics[_resubscribeTopicsKeys[topicI]];
          resubscribeTopic.resubscribe = true;
          this.subscribe(resubscribeTopic, {
            properties: resubscribeTopic[_resubscribeTopicsKeys[topicI]].properties
          });
        }
      } else {
        this._resubscribeTopics.resubscribe = true;
        this.subscribe(this._resubscribeTopics);
      }
    } else {
      this._resubscribeTopics = {};
    }
  }
  this._firstConnection = false;
};

/**
 * _onConnect
 *
 * @api private
 */
MqttClient.prototype._onConnect = function (packet) {
  if (this.disconnected) {
    this.emit('connect', packet);
    return;
  }
  var that = this;
  this.connackPacket = packet;
  this.messageIdProvider.clear();
  this._setupPingTimer();
  this.connected = true;
  function startStreamProcess() {
    var outStore = that.outgoingStore.createStream();
    function clearStoreProcessing() {
      that._storeProcessing = false;
      that._packetIdsDuringStoreProcessing = {};
    }
    that.once('close', remove);
    outStore.on('error', function (err) {
      clearStoreProcessing();
      that._flushStoreProcessingQueue();
      that.removeListener('close', remove);
      that.emit('error', err);
    });
    function remove() {
      outStore.destroy();
      outStore = null;
      that._flushStoreProcessingQueue();
      clearStoreProcessing();
    }
    function storeDeliver() {
      // edge case, we wrapped this twice
      if (!outStore) {
        return;
      }
      that._storeProcessing = true;
      var packet = outStore.read(1);
      var _cb;
      if (!packet) {
        // read when data is available in the future
        outStore.once('readable', storeDeliver);
        return;
      }

      // Skip already processed store packets
      if (that._packetIdsDuringStoreProcessing[packet.messageId]) {
        storeDeliver();
        return;
      }

      // Avoid unnecessary stream read operations when disconnected
      if (!that.disconnecting && !that.reconnectTimer) {
        _cb = that.outgoing[packet.messageId] ? that.outgoing[packet.messageId].cb : null;
        that.outgoing[packet.messageId] = {
          "volatile": false,
          cb: function cb(err, status) {
            // Ensure that the original callback passed in to publish gets invoked
            if (_cb) {
              _cb(err, status);
            }
            storeDeliver();
          }
        };
        that._packetIdsDuringStoreProcessing[packet.messageId] = true;
        if (that.messageIdProvider.register(packet.messageId)) {
          that._sendPacket(packet);
        } else {
          debug('messageId: %d has already used.', packet.messageId);
        }
      } else if (outStore.destroy) {
        outStore.destroy();
      }
    }
    outStore.on('end', function () {
      var allProcessed = true;
      for (var id in that._packetIdsDuringStoreProcessing) {
        if (!that._packetIdsDuringStoreProcessing[id]) {
          allProcessed = false;
          break;
        }
      }
      if (allProcessed) {
        clearStoreProcessing();
        that.removeListener('close', remove);
        that._invokeAllStoreProcessingQueue();
        that.emit('connect', packet);
      } else {
        startStreamProcess();
      }
    });
    storeDeliver();
  }
  // start flowing
  startStreamProcess();
};
MqttClient.prototype._invokeStoreProcessingQueue = function () {
  if (this._storeProcessingQueue.length > 0) {
    var f = this._storeProcessingQueue[0];
    if (f && f.invoke()) {
      this._storeProcessingQueue.shift();
      return true;
    }
  }
  return false;
};
MqttClient.prototype._invokeAllStoreProcessingQueue = function () {
  while (this._invokeStoreProcessingQueue()) {/* empty */}
};
MqttClient.prototype._flushStoreProcessingQueue = function () {
  var _iterator = _createForOfIteratorHelper(this._storeProcessingQueue),
    _step;
  try {
    for (_iterator.s(); !(_step = _iterator.n()).done;) {
      var f = _step.value;
      if (f.cbStorePut) f.cbStorePut(new Error('Connection closed'));
      if (f.callback) f.callback(new Error('Connection closed'));
    }
  } catch (err) {
    _iterator.e(err);
  } finally {
    _iterator.f();
  }
  this._storeProcessingQueue.splice(0);
};
module.exports = MqttClient;

/***/ }),

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

"use strict";


var _require = __webpack_require__(80365),
  Buffer = _require.Buffer;
var Transform = (__webpack_require__(8237).Transform);
var duplexify = __webpack_require__(76900);

/* global FileReader */
var my;
var proxy;
var stream;
var isInitialized = false;
function buildProxy() {
  var proxy = new Transform();
  proxy._write = function (chunk, encoding, next) {
    my.sendSocketMessage({
      data: chunk.buffer,
      success: function success() {
        next();
      },
      fail: function fail() {
        next(new Error());
      }
    });
  };
  proxy._flush = function socketEnd(done) {
    my.closeSocket({
      success: function success() {
        done();
      }
    });
  };
  return proxy;
}
function setDefaultOpts(opts) {
  if (!opts.hostname) {
    opts.hostname = 'localhost';
  }
  if (!opts.path) {
    opts.path = '/';
  }
  if (!opts.wsOptions) {
    opts.wsOptions = {};
  }
}
function buildUrl(opts, client) {
  var protocol = opts.protocol === 'alis' ? 'wss' : 'ws';
  var url = protocol + '://' + opts.hostname + opts.path;
  if (opts.port && opts.port !== 80 && opts.port !== 443) {
    url = protocol + '://' + opts.hostname + ':' + opts.port + opts.path;
  }
  if (typeof opts.transformWsUrl === 'function') {
    url = opts.transformWsUrl(url, opts, client);
  }
  return url;
}
function bindEventHandler() {
  if (isInitialized) return;
  isInitialized = true;
  my.onSocketOpen(function () {
    stream.setReadable(proxy);
    stream.setWritable(proxy);
    stream.emit('connect');
  });
  my.onSocketMessage(function (res) {
    if (typeof res.data === 'string') {
      var buffer = Buffer.from(res.data, 'base64');
      proxy.push(buffer);
    } else {
      var reader = new FileReader();
      reader.addEventListener('load', function () {
        var data = reader.result;
        if (data instanceof ArrayBuffer) data = Buffer.from(data);else data = Buffer.from(data, 'utf8');
        proxy.push(data);
      });
      reader.readAsArrayBuffer(res.data);
    }
  });
  my.onSocketClose(function () {
    stream.end();
    stream.destroy();
  });
  my.onSocketError(function (res) {
    stream.destroy(res);
  });
}
function buildStream(client, opts) {
  opts.hostname = opts.hostname || opts.host;
  if (!opts.hostname) {
    throw new Error('Could not determine host. Specify host manually.');
  }
  var websocketSubProtocol = opts.protocolId === 'MQIsdp' && opts.protocolVersion === 3 ? 'mqttv3.1' : 'mqtt';
  setDefaultOpts(opts);
  var url = buildUrl(opts, client);
  my = opts.my;
  my.connectSocket({
    url: url,
    protocols: websocketSubProtocol
  });
  proxy = buildProxy();
  stream = duplexify.obj();
  bindEventHandler();
  return stream;
}
module.exports = buildStream;

/***/ }),

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

"use strict";
/* provided dependency */ var process = __webpack_require__(554);


function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var MqttClient = __webpack_require__(49691);
var Store = __webpack_require__(17932);
var url = __webpack_require__(46865);
var xtend = __webpack_require__(84450);
var debug = __webpack_require__(38801)('mqttjs');
var protocols = {};

// eslint-disable-next-line camelcase
if (typeof process !== 'undefined' && process.title !== 'browser' || typeof __webpack_require__ !== 'function') {
  protocols.mqtt = __webpack_require__(22777);
  protocols.tcp = __webpack_require__(22777);
  protocols.ssl = __webpack_require__(11648);
  protocols.tls = __webpack_require__(11648);
  protocols.mqtts = __webpack_require__(11648);
} else {
  protocols.wx = __webpack_require__(92591);
  protocols.wxs = __webpack_require__(92591);
  protocols.ali = __webpack_require__(86426);
  protocols.alis = __webpack_require__(86426);
}
protocols.ws = __webpack_require__(69948);
protocols.wss = __webpack_require__(69948);

/**
 * Parse the auth attribute and merge username and password in the options object.
 *
 * @param {Object} [opts] option object
 */
function parseAuthOptions(opts) {
  var matches;
  if (opts.auth) {
    matches = opts.auth.match(/^(.+):(.+)$/);
    if (matches) {
      opts.username = matches[1];
      opts.password = matches[2];
    } else {
      opts.username = opts.auth;
    }
  }
}

/**
 * connect - connect to an MQTT broker.
 *
 * @param {String} [brokerUrl] - url of the broker, optional
 * @param {Object} opts - see MqttClient#constructor
 */
function connect(brokerUrl, opts) {
  debug('connecting to an MQTT broker...');
  if (_typeof(brokerUrl) === 'object' && !opts) {
    opts = brokerUrl;
    brokerUrl = null;
  }
  opts = opts || {};
  if (brokerUrl) {
    // eslint-disable-next-line
    var parsed = url.parse(brokerUrl, true);
    if (parsed.port != null) {
      parsed.port = Number(parsed.port);
    }
    opts = xtend(parsed, opts);
    if (opts.protocol === null) {
      throw new Error('Missing protocol');
    }
    opts.protocol = opts.protocol.replace(/:$/, '');
  }

  // merge in the auth options if supplied
  parseAuthOptions(opts);

  // support clientId passed in the query string of the url
  if (opts.query && typeof opts.query.clientId === 'string') {
    opts.clientId = opts.query.clientId;
  }
  if (opts.cert && opts.key) {
    if (opts.protocol) {
      if (['mqtts', 'wss', 'wxs', 'alis'].indexOf(opts.protocol) === -1) {
        switch (opts.protocol) {
          case 'mqtt':
            opts.protocol = 'mqtts';
            break;
          case 'ws':
            opts.protocol = 'wss';
            break;
          case 'wx':
            opts.protocol = 'wxs';
            break;
          case 'ali':
            opts.protocol = 'alis';
            break;
          default:
            throw new Error('Unknown protocol for secure connection: "' + opts.protocol + '"!');
        }
      }
    } else {
      // A cert and key was provided, however no protocol was specified, so we will throw an error.
      throw new Error('Missing secure protocol key');
    }
  }
  if (!protocols[opts.protocol]) {
    var isSecure = ['mqtts', 'wss'].indexOf(opts.protocol) !== -1;
    opts.protocol = ['mqtt', 'mqtts', 'ws', 'wss', 'wx', 'wxs', 'ali', 'alis'].filter(function (key, index) {
      if (isSecure && index % 2 === 0) {
        // Skip insecure protocols when requesting a secure one.
        return false;
      }
      return typeof protocols[key] === 'function';
    })[0];
  }
  if (opts.clean === false && !opts.clientId) {
    throw new Error('Missing clientId for unclean clients');
  }
  if (opts.protocol) {
    opts.defaultProtocol = opts.protocol;
  }
  function wrapper(client) {
    if (opts.servers) {
      if (!client._reconnectCount || client._reconnectCount === opts.servers.length) {
        client._reconnectCount = 0;
      }
      opts.host = opts.servers[client._reconnectCount].host;
      opts.port = opts.servers[client._reconnectCount].port;
      opts.protocol = !opts.servers[client._reconnectCount].protocol ? opts.defaultProtocol : opts.servers[client._reconnectCount].protocol;
      opts.hostname = opts.host;
      client._reconnectCount++;
    }
    debug('calling streambuilder for', opts.protocol);
    return protocols[opts.protocol](client, opts);
  }
  var client = new MqttClient(wrapper, opts);
  client.on('error', function () {/* Automatically set up client error handling */});
  return client;
}
module.exports = connect;
module.exports.connect = connect;
module.exports.MqttClient = MqttClient;
module.exports.Store = Store;

/***/ }),

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

"use strict";


var net = __webpack_require__(87294);
var debug = __webpack_require__(38801)('mqttjs:tcp');

/*
  variables port and host can be removed since
  you have all required information in opts object
*/
function streamBuilder(client, opts) {
  opts.port = opts.port || 1883;
  opts.hostname = opts.hostname || opts.host || 'localhost';
  var port = opts.port;
  var host = opts.hostname;
  debug('port %d and host %s', port, host);
  return net.createConnection(port, host);
}
module.exports = streamBuilder;

/***/ }),

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

"use strict";


var tls = __webpack_require__(95036);
var net = __webpack_require__(87294);
var debug = __webpack_require__(38801)('mqttjs:tls');
function buildBuilder(mqttClient, opts) {
  opts.port = opts.port || 8883;
  opts.host = opts.hostname || opts.host || 'localhost';
  if (net.isIP(opts.host) === 0) {
    opts.servername = opts.host;
  }
  opts.rejectUnauthorized = opts.rejectUnauthorized !== false;
  delete opts.path;
  debug('port %d host %s rejectUnauthorized %b', opts.port, opts.host, opts.rejectUnauthorized);
  var connection = tls.connect(opts);
  /* eslint no-use-before-define: [2, "nofunc"] */
  connection.on('secureConnect', function () {
    if (opts.rejectUnauthorized && !connection.authorized) {
      connection.emit('error', new Error('TLS not authorized'));
    } else {
      connection.removeListener('error', handleTLSerrors);
    }
  });
  function handleTLSerrors(err) {
    // How can I get verify this error is a tls error?
    if (opts.rejectUnauthorized) {
      mqttClient.emit('error', err);
    }

    // close this connection to match the behaviour of net
    // otherwise all we get is an error from the connection
    // and close event doesn't fire. This is a work around
    // to enable the reconnect code to work the same as with
    // net.createConnection
    connection.end();
  }
  connection.on('error', handleTLSerrors);
  return connection;
}
module.exports = buildBuilder;

/***/ }),

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

"use strict";
/* provided dependency */ var process = __webpack_require__(554);


var _require = __webpack_require__(80365),
  Buffer = _require.Buffer;
var WS = __webpack_require__(8604);
var debug = __webpack_require__(38801)('mqttjs:ws');
var duplexify = __webpack_require__(76900);
var Transform = (__webpack_require__(8237).Transform);
var WSS_OPTIONS = ['rejectUnauthorized', 'ca', 'cert', 'key', 'pfx', 'passphrase'];
// eslint-disable-next-line camelcase
var IS_BROWSER = typeof process !== 'undefined' && process.title === 'browser' || typeof __webpack_require__ === 'function';
function buildUrl(opts, client) {
  var url = opts.protocol + '://' + opts.hostname + ':' + opts.port + opts.path;
  if (typeof opts.transformWsUrl === 'function') {
    url = opts.transformWsUrl(url, opts, client);
  }
  return url;
}
function setDefaultOpts(opts) {
  var options = opts;
  if (!opts.hostname) {
    options.hostname = 'localhost';
  }
  if (!opts.port) {
    if (opts.protocol === 'wss') {
      options.port = 443;
    } else {
      options.port = 80;
    }
  }
  if (!opts.path) {
    options.path = '/';
  }
  if (!opts.wsOptions) {
    options.wsOptions = {};
  }
  if (!IS_BROWSER && opts.protocol === 'wss') {
    // Add cert/key/ca etc options
    WSS_OPTIONS.forEach(function (prop) {
      if (Object.prototype.hasOwnProperty.call(opts, prop) && !Object.prototype.hasOwnProperty.call(opts.wsOptions, prop)) {
        options.wsOptions[prop] = opts[prop];
      }
    });
  }
  return options;
}
function setDefaultBrowserOpts(opts) {
  var options = setDefaultOpts(opts);
  if (!options.hostname) {
    options.hostname = options.host;
  }
  if (!options.hostname) {
    // Throwing an error in a Web Worker if no `hostname` is given, because we
    // can not determine the `hostname` automatically.  If connecting to
    // localhost, please supply the `hostname` as an argument.
    if (typeof document === 'undefined') {
      throw new Error('Could not determine host. Specify host manually.');
    }
    var parsed = new URL(document.URL);
    options.hostname = parsed.hostname;
    if (!options.port) {
      options.port = parsed.port;
    }
  }

  // objectMode should be defined for logic
  if (options.objectMode === undefined) {
    options.objectMode = !(options.binary === true || options.binary === undefined);
  }
  return options;
}
function createWebSocket(client, url, opts) {
  debug('createWebSocket');
  debug('protocol: ' + opts.protocolId + ' ' + opts.protocolVersion);
  var websocketSubProtocol = opts.protocolId === 'MQIsdp' && opts.protocolVersion === 3 ? 'mqttv3.1' : 'mqtt';
  debug('creating new Websocket for url: ' + url + ' and protocol: ' + websocketSubProtocol);
  var socket = new WS(url, [websocketSubProtocol], opts.wsOptions);
  return socket;
}
function createBrowserWebSocket(client, opts) {
  var websocketSubProtocol = opts.protocolId === 'MQIsdp' && opts.protocolVersion === 3 ? 'mqttv3.1' : 'mqtt';
  var url = buildUrl(opts, client);
  /* global WebSocket */
  var socket = new WebSocket(url, [websocketSubProtocol]);
  socket.binaryType = 'arraybuffer';
  return socket;
}
function streamBuilder(client, opts) {
  debug('streamBuilder');
  var options = setDefaultOpts(opts);
  var url = buildUrl(options, client);
  var socket = createWebSocket(client, url, options);
  var webSocketStream = WS.createWebSocketStream(socket, options.wsOptions);
  webSocketStream.url = url;
  socket.on('close', function () {
    webSocketStream.destroy();
  });
  return webSocketStream;
}
function browserStreamBuilder(client, opts) {
  debug('browserStreamBuilder');
  var stream;
  var options = setDefaultBrowserOpts(opts);
  // sets the maximum socket buffer size before throttling
  var bufferSize = options.browserBufferSize || 1024 * 512;
  var bufferTimeout = opts.browserBufferTimeout || 1000;
  var coerceToBuffer = !opts.objectMode;
  var socket = createBrowserWebSocket(client, opts);
  var proxy = buildProxy(opts, socketWriteBrowser, socketEndBrowser);
  if (!opts.objectMode) {
    proxy._writev = writev;
  }
  proxy.on('close', function () {
    socket.close();
  });
  var eventListenerSupport = typeof socket.addEventListener !== 'undefined';

  // was already open when passed in
  if (socket.readyState === socket.OPEN) {
    stream = proxy;
  } else {
    stream = stream = duplexify(undefined, undefined, opts);
    if (!opts.objectMode) {
      stream._writev = writev;
    }
    if (eventListenerSupport) {
      socket.addEventListener('open', onopen);
    } else {
      socket.onopen = onopen;
    }
  }
  stream.socket = socket;
  if (eventListenerSupport) {
    socket.addEventListener('close', onclose);
    socket.addEventListener('error', onerror);
    socket.addEventListener('message', onmessage);
  } else {
    socket.onclose = onclose;
    socket.onerror = onerror;
    socket.onmessage = onmessage;
  }

  // methods for browserStreamBuilder

  function buildProxy(options, socketWrite, socketEnd) {
    var proxy = new Transform({
      objectModeMode: options.objectMode
    });
    proxy._write = socketWrite;
    proxy._flush = socketEnd;
    return proxy;
  }
  function onopen() {
    stream.setReadable(proxy);
    stream.setWritable(proxy);
    stream.emit('connect');
  }
  function onclose() {
    stream.end();
    stream.destroy();
  }
  function onerror(err) {
    stream.destroy(err);
  }
  function onmessage(event) {
    var data = event.data;
    if (data instanceof ArrayBuffer) data = Buffer.from(data);else data = Buffer.from(data, 'utf8');
    proxy.push(data);
  }

  // this is to be enabled only if objectMode is false
  function writev(chunks, cb) {
    var buffers = new Array(chunks.length);
    for (var i = 0; i < chunks.length; i++) {
      if (typeof chunks[i].chunk === 'string') {
        buffers[i] = Buffer.from(chunks[i], 'utf8');
      } else {
        buffers[i] = chunks[i].chunk;
      }
    }
    this._write(Buffer.concat(buffers), 'binary', cb);
  }
  function socketWriteBrowser(chunk, enc, next) {
    if (socket.bufferedAmount > bufferSize) {
      // throttle data until buffered amount is reduced.
      setTimeout(socketWriteBrowser, bufferTimeout, chunk, enc, next);
    }
    if (coerceToBuffer && typeof chunk === 'string') {
      chunk = Buffer.from(chunk, 'utf8');
    }
    try {
      socket.send(chunk);
    } catch (err) {
      return next(err);
    }
    next();
  }
  function socketEndBrowser(done) {
    socket.close();
    done();
  }

  // end methods for browserStreamBuilder

  return stream;
}
if (IS_BROWSER) {
  module.exports = browserStreamBuilder;
} else {
  module.exports = streamBuilder;
}

/***/ }),

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

"use strict";


var _require = __webpack_require__(80365),
  Buffer = _require.Buffer;
var Transform = (__webpack_require__(8237).Transform);
var duplexify = __webpack_require__(76900);

/* global wx */
var socketTask, proxy, stream;
function buildProxy() {
  var proxy = new Transform();
  proxy._write = function (chunk, encoding, next) {
    socketTask.send({
      data: chunk.buffer,
      success: function success() {
        next();
      },
      fail: function fail(errMsg) {
        next(new Error(errMsg));
      }
    });
  };
  proxy._flush = function socketEnd(done) {
    socketTask.close({
      success: function success() {
        done();
      }
    });
  };
  return proxy;
}
function setDefaultOpts(opts) {
  if (!opts.hostname) {
    opts.hostname = 'localhost';
  }
  if (!opts.path) {
    opts.path = '/';
  }
  if (!opts.wsOptions) {
    opts.wsOptions = {};
  }
}
function buildUrl(opts, client) {
  var protocol = opts.protocol === 'wxs' ? 'wss' : 'ws';
  var url = protocol + '://' + opts.hostname + opts.path;
  if (opts.port && opts.port !== 80 && opts.port !== 443) {
    url = protocol + '://' + opts.hostname + ':' + opts.port + opts.path;
  }
  if (typeof opts.transformWsUrl === 'function') {
    url = opts.transformWsUrl(url, opts, client);
  }
  return url;
}
function bindEventHandler() {
  socketTask.onOpen(function () {
    stream.setReadable(proxy);
    stream.setWritable(proxy);
    stream.emit('connect');
  });
  socketTask.onMessage(function (res) {
    var data = res.data;
    if (data instanceof ArrayBuffer) data = Buffer.from(data);else data = Buffer.from(data, 'utf8');
    proxy.push(data);
  });
  socketTask.onClose(function () {
    stream.end();
    stream.destroy();
  });
  socketTask.onError(function (res) {
    stream.destroy(new Error(res.errMsg));
  });
}
function buildStream(client, opts) {
  opts.hostname = opts.hostname || opts.host;
  if (!opts.hostname) {
    throw new Error('Could not determine host. Specify host manually.');
  }
  var websocketSubProtocol = opts.protocolId === 'MQIsdp' && opts.protocolVersion === 3 ? 'mqttv3.1' : 'mqtt';
  setDefaultOpts(opts);
  var url = buildUrl(opts, client);
  socketTask = wx.connectSocket({
    url: url,
    protocols: [websocketSubProtocol]
  });
  proxy = buildProxy();
  stream = duplexify.obj();
  stream._destroy = function (err, cb) {
    socketTask.close({
      success: function success() {
        cb && cb(err);
      }
    });
  };
  var destroyRef = stream.destroy;
  stream.destroy = function () {
    stream.destroy = destroyRef;
    var self = this;
    setTimeout(function () {
      socketTask.close({
        fail: function fail() {
          self._destroy(new Error());
        }
      });
    }, 0);
  }.bind(stream);
  bindEventHandler();
  return stream;
}
module.exports = buildStream;

/***/ }),

/***/ 33740:
/***/ ((module) => {

"use strict";


/**
 * DefaultMessageAllocator constructor
 * @constructor
 */
function DefaultMessageIdProvider() {
  if (!(this instanceof DefaultMessageIdProvider)) {
    return new DefaultMessageIdProvider();
  }

  /**
   * MessageIDs starting with 1
   * ensure that nextId is min. 1, see https://github.com/mqttjs/MQTT.js/issues/810
   */
  this.nextId = Math.max(1, Math.floor(Math.random() * 65535));
}

/**
 * allocate
 *
 * Get the next messageId.
 * @return unsigned int
 */
DefaultMessageIdProvider.prototype.allocate = function () {
  // id becomes current state of this.nextId and increments afterwards
  var id = this.nextId++;
  // Ensure 16 bit unsigned int (max 65535, nextId got one higher)
  if (this.nextId === 65536) {
    this.nextId = 1;
  }
  return id;
};

/**
 * getLastAllocated
 * Get the last allocated messageId.
 * @return unsigned int
 */
DefaultMessageIdProvider.prototype.getLastAllocated = function () {
  return this.nextId === 1 ? 65535 : this.nextId - 1;
};

/**
 * register
 * Register messageId. If success return true, otherwise return false.
 * @param { unsigned int } - messageId to register,
 * @return boolean
 */
DefaultMessageIdProvider.prototype.register = function (messageId) {
  return true;
};

/**
 * deallocate
 * Deallocate messageId.
 * @param { unsigned int } - messageId to deallocate,
 */
DefaultMessageIdProvider.prototype.deallocate = function (messageId) {};

/**
 * clear
 * Deallocate all messageIds.
 */
DefaultMessageIdProvider.prototype.clear = function () {};
module.exports = DefaultMessageIdProvider;

/***/ }),

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

"use strict";


/**
 * Module dependencies
 */
var xtend = __webpack_require__(84450);
var Readable = (__webpack_require__(8237).Readable);
var streamsOpts = {
  objectMode: true
};
var defaultStoreOptions = {
  clean: true
};

/**
 * In-memory implementation of the message store
 * This can actually be saved into files.
 *
 * @param {Object} [options] - store options
 */
function Store(options) {
  if (!(this instanceof Store)) {
    return new Store(options);
  }
  this.options = options || {};

  // Defaults
  this.options = xtend(defaultStoreOptions, options);
  this._inflights = new Map();
}

/**
 * Adds a packet to the store, a packet is
 * anything that has a messageId property.
 *
 */
Store.prototype.put = function (packet, cb) {
  this._inflights.set(packet.messageId, packet);
  if (cb) {
    cb();
  }
  return this;
};

/**
 * Creates a stream with all the packets in the store
 *
 */
Store.prototype.createStream = function () {
  var stream = new Readable(streamsOpts);
  var values = [];
  var destroyed = false;
  var i = 0;
  this._inflights.forEach(function (value, key) {
    values.push(value);
  });
  stream._read = function () {
    if (!destroyed && i < values.length) {
      this.push(values[i++]);
    } else {
      this.push(null);
    }
  };
  stream.destroy = function () {
    if (destroyed) {
      return;
    }
    var self = this;
    destroyed = true;
    setTimeout(function () {
      self.emit('close');
    }, 0);
  };
  return stream;
};

/**
 * deletes a packet from the store.
 */
Store.prototype.del = function (packet, cb) {
  packet = this._inflights.get(packet.messageId);
  if (packet) {
    this._inflights["delete"](packet.messageId);
    cb(null, packet);
  } else if (cb) {
    cb(new Error('missing packet'));
  }
  return this;
};

/**
 * get a packet from the store.
 */
Store.prototype.get = function (packet, cb) {
  packet = this._inflights.get(packet.messageId);
  if (packet) {
    cb(null, packet);
  } else if (cb) {
    cb(new Error('missing packet'));
  }
  return this;
};

/**
 * Close the store
 */
Store.prototype.close = function (cb) {
  if (this.options.clean) {
    this._inflights = null;
  }
  if (cb) {
    cb();
  }
};
module.exports = Store;

/***/ }),

/***/ 96207:
/***/ ((module) => {

"use strict";


/**
 * Topic Alias receiving manager
 * This holds alias to topic map
 * @param {Number} [max] - topic alias maximum entries
 */
function TopicAliasRecv(max) {
  if (!(this instanceof TopicAliasRecv)) {
    return new TopicAliasRecv(max);
  }
  this.aliasToTopic = {};
  this.max = max;
}

/**
 * Insert or update topic - alias entry.
 * @param {String} [topic] - topic
 * @param {Number} [alias] - topic alias
 * @returns {Boolean} - if success return true otherwise false
 */
TopicAliasRecv.prototype.put = function (topic, alias) {
  if (alias === 0 || alias > this.max) {
    return false;
  }
  this.aliasToTopic[alias] = topic;
  this.length = Object.keys(this.aliasToTopic).length;
  return true;
};

/**
 * Get topic by alias
 * @param {String} [topic] - topic
 * @returns {Number} - if mapped topic exists return topic alias, otherwise return undefined
 */
TopicAliasRecv.prototype.getTopicByAlias = function (alias) {
  return this.aliasToTopic[alias];
};

/**
 * Clear all entries
 */
TopicAliasRecv.prototype.clear = function () {
  this.aliasToTopic = {};
};
module.exports = TopicAliasRecv;

/***/ }),

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

"use strict";


/**
 * Module dependencies
 */
var LruMap = __webpack_require__(5378);
var NumberAllocator = (__webpack_require__(11969)/* .NumberAllocator */ .Q);

/**
 * Topic Alias sending manager
 * This holds both topic to alias and alias to topic map
 * @param {Number} [max] - topic alias maximum entries
 */
function TopicAliasSend(max) {
  if (!(this instanceof TopicAliasSend)) {
    return new TopicAliasSend(max);
  }
  if (max > 0) {
    this.aliasToTopic = new LruMap({
      max: max
    });
    this.topicToAlias = {};
    this.numberAllocator = new NumberAllocator(1, max);
    this.max = max;
    this.length = 0;
  }
}

/**
 * Insert or update topic - alias entry.
 * @param {String} [topic] - topic
 * @param {Number} [alias] - topic alias
 * @returns {Boolean} - if success return true otherwise false
 */
TopicAliasSend.prototype.put = function (topic, alias) {
  if (alias === 0 || alias > this.max) {
    return false;
  }
  var entry = this.aliasToTopic.get(alias);
  if (entry) {
    delete this.topicToAlias[entry];
  }
  this.aliasToTopic.set(alias, topic);
  this.topicToAlias[topic] = alias;
  this.numberAllocator.use(alias);
  this.length = this.aliasToTopic.length;
  return true;
};

/**
 * Get topic by alias
 * @param {Number} [alias] - topic alias
 * @returns {String} - if mapped topic exists return topic, otherwise return undefined
 */
TopicAliasSend.prototype.getTopicByAlias = function (alias) {
  return this.aliasToTopic.get(alias);
};

/**
 * Get topic by alias
 * @param {String} [topic] - topic
 * @returns {Number} - if mapped topic exists return topic alias, otherwise return undefined
 */
TopicAliasSend.prototype.getAliasByTopic = function (topic) {
  var alias = this.topicToAlias[topic];
  if (typeof alias !== 'undefined') {
    this.aliasToTopic.get(alias); // LRU update
  }

  return alias;
};

/**
 * Clear all entries
 */
TopicAliasSend.prototype.clear = function () {
  this.aliasToTopic.reset();
  this.topicToAlias = {};
  this.numberAllocator.clear();
  this.length = 0;
};

/**
 * Get Least Recently Used (LRU) topic alias
 * @returns {Number} - if vacant alias exists then return it, otherwise then return LRU alias
 */
TopicAliasSend.prototype.getLruAlias = function () {
  var alias = this.numberAllocator.firstVacant();
  if (alias) return alias;
  return this.aliasToTopic.keys()[this.aliasToTopic.length - 1];
};
module.exports = TopicAliasSend;

/***/ }),

/***/ 73767:
/***/ ((module) => {

"use strict";


/**
 * Validate a topic to see if it's valid or not.
 * A topic is valid if it follow below rules:
 * - Rule #1: If any part of the topic is not `+` or `#`, then it must not contain `+` and '#'
 * - Rule #2: Part `#` must be located at the end of the mailbox
 *
 * @param {String} topic - A topic
 * @returns {Boolean} If the topic is valid, returns true. Otherwise, returns false.
 */
function validateTopic(topic) {
  var parts = topic.split('/');
  for (var i = 0; i < parts.length; i++) {
    if (parts[i] === '+') {
      continue;
    }
    if (parts[i] === '#') {
      // for Rule #2
      return i === parts.length - 1;
    }
    if (parts[i].indexOf('+') !== -1 || parts[i].indexOf('#') !== -1) {
      return false;
    }
  }
  return true;
}

/**
 * Validate an array of topics to see if any of them is valid or not
  * @param {Array} topics - Array of topics
 * @returns {String} If the topics is valid, returns null. Otherwise, returns the invalid one
 */
function validateTopics(topics) {
  if (topics.length === 0) {
    return 'empty_topic_list';
  }
  for (var i = 0; i < topics.length; i++) {
    if (!validateTopic(topics[i])) {
      return topics[i];
    }
  }
  return null;
}
module.exports = {
  validateTopics: validateTopics
};

/***/ }),

/***/ 32068:
/***/ ((module) => {

"use strict";


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); }
/**
 * Helpers.
 */

var s = 1000;
var m = s * 60;
var h = m * 60;
var d = h * 24;
var w = d * 7;
var y = d * 365.25;

/**
 * Parse or format the given `val`.
 *
 * Options:
 *
 *  - `long` verbose formatting [false]
 *
 * @param {String|Number} val
 * @param {Object} [options]
 * @throws {Error} throw an error if val is not a non-empty string or a number
 * @return {String|Number}
 * @api public
 */

module.exports = function (val, options) {
  options = options || {};
  var type = _typeof(val);
  if (type === 'string' && val.length > 0) {
    return parse(val);
  } else if (type === 'number' && isFinite(val)) {
    return options["long"] ? fmtLong(val) : fmtShort(val);
  }
  throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));
};

/**
 * Parse the given `str` and return milliseconds.
 *
 * @param {String} str
 * @return {Number}
 * @api private
 */

function parse(str) {
  str = String(str);
  if (str.length > 100) {
    return;
  }
  var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);
  if (!match) {
    return;
  }
  var n = parseFloat(match[1]);
  var type = (match[2] || 'ms').toLowerCase();
  switch (type) {
    case 'years':
    case 'year':
    case 'yrs':
    case 'yr':
    case 'y':
      return n * y;
    case 'weeks':
    case 'week':
    case 'w':
      return n * w;
    case 'days':
    case 'day':
    case 'd':
      return n * d;
    case 'hours':
    case 'hour':
    case 'hrs':
    case 'hr':
    case 'h':
      return n * h;
    case 'minutes':
    case 'minute':
    case 'mins':
    case 'min':
    case 'm':
      return n * m;
    case 'seconds':
    case 'second':
    case 'secs':
    case 'sec':
    case 's':
      return n * s;
    case 'milliseconds':
    case 'millisecond':
    case 'msecs':
    case 'msec':
    case 'ms':
      return n;
    default:
      return undefined;
  }
}

/**
 * Short format for `ms`.
 *
 * @param {Number} ms
 * @return {String}
 * @api private
 */

function fmtShort(ms) {
  var msAbs = Math.abs(ms);
  if (msAbs >= d) {
    return Math.round(ms / d) + 'd';
  }
  if (msAbs >= h) {
    return Math.round(ms / h) + 'h';
  }
  if (msAbs >= m) {
    return Math.round(ms / m) + 'm';
  }
  if (msAbs >= s) {
    return Math.round(ms / s) + 's';
  }
  return ms + 'ms';
}

/**
 * Long format for `ms`.
 *
 * @param {Number} ms
 * @return {String}
 * @api private
 */

function fmtLong(ms) {
  var msAbs = Math.abs(ms);
  if (msAbs >= d) {
    return plural(ms, msAbs, d, 'day');
  }
  if (msAbs >= h) {
    return plural(ms, msAbs, h, 'hour');
  }
  if (msAbs >= m) {
    return plural(ms, msAbs, m, 'minute');
  }
  if (msAbs >= s) {
    return plural(ms, msAbs, s, 'second');
  }
  return ms + ' ms';
}

/**
 * Pluralization helper.
 */

function plural(ms, msAbs, n, name) {
  var isPlural = msAbs >= n * 1.5;
  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
}

/***/ }),

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

"use strict";


// Copyright Takatoshi Kondo 2021
//
// Distributed under the MIT License

var NumberAllocator = __webpack_require__(62308);
module.exports.Q = NumberAllocator;

/***/ }),

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

"use strict";
// Copyright Takatoshi Kondo 2021
//
// Distributed under the MIT License



function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
var SortedSet = (__webpack_require__(95989)/* .OrderedSet */ .hU);
var debugTrace = __webpack_require__(38801)('number-allocator:trace');
var debugError = __webpack_require__(38801)('number-allocator:error');
/**
 * Interval constructor
 * @constructor
 * @param {Number} low  - The lowest value of the interval
 * @param {Number} high - The highest value of the interval
 */
function Interval(low, high) {
  this.low = low;
  this.high = high;
}
Interval.prototype.equals = function (other) {
  return this.low === other.low && this.high === other.high;
};
Interval.prototype.compare = function (other) {
  if (this.low < other.low && this.high < other.low) return -1;
  if (other.low < this.low && other.high < this.low) return 1;
  return 0;
};

/**
 * NumberAllocator constructor.
 * The all numbers are set to vacant status.
 * Time Complexity O(1)
 * @constructor
 * @param {Number} min  - The maximum number of allocatable. The number must be integer.
 * @param {Number} maxh - The minimum number of allocatable. The number must be integer.
 */
function NumberAllocator(min, max) {
  if (!(this instanceof NumberAllocator)) {
    return new NumberAllocator(min, max);
  }
  this.min = min;
  this.max = max;
  this.ss = new SortedSet([], function (lhs, rhs) {
    return lhs.compare(rhs);
  });
  debugTrace('Create');
  this.clear();
}

/**
 * Get the first vacant number. The status of the number is not updated.
 * Time Complexity O(1)
 * @return {Number} - The first vacant number. If all numbers are occupied, return null.
 *                    When alloc() is called then the same value will be allocated.
 */
NumberAllocator.prototype.firstVacant = function () {
  if (this.ss.size() === 0) return null;
  return this.ss.front().low;
};

/**
 * Allocate the first vacant number. The number become occupied status.
 * Time Complexity O(1)
 * @return {Number} - The first vacant number. If all numbers are occupied, return null.
 */
NumberAllocator.prototype.alloc = function () {
  if (this.ss.size() === 0) {
    debugTrace('alloc():empty');
    return null;
  }
  var it = this.ss.begin();
  var low = it.pointer.low;
  var high = it.pointer.high;
  var num = low;
  if (num + 1 <= high) {
    // x|----|
    this.ss.updateKeyByIterator(it, new Interval(low + 1, high));
  } else {
    this.ss.eraseElementByPos(0);
  }
  debugTrace('alloc():' + num);
  return num;
};

/**
 * Use the number. The number become occupied status.
 * If the number has already been occupied, then return false.
 * Time Complexity O(logN) : N is the number of intervals (not numbers)
 * @param {Number} num - The number to request use.
 * @return {Boolean} - If `num` was not occupied, then return true, otherwise return false.
 */
NumberAllocator.prototype.use = function (num) {
  var key = new Interval(num, num);
  var it = this.ss.lowerBound(key);
  if (!it.equals(this.ss.end())) {
    var low = it.pointer.low;
    var high = it.pointer.high;
    if (it.pointer.equals(key)) {
      // |x|
      this.ss.eraseElementByIterator(it);
      debugTrace('use():' + num);
      return true;
    }

    // x |-----|
    if (low > num) return false;

    // |x----|
    if (low === num) {
      // x|----|
      this.ss.updateKeyByIterator(it, new Interval(low + 1, high));
      debugTrace('use():' + num);
      return true;
    }

    // |----x|
    if (high === num) {
      // |----|x
      this.ss.updateKeyByIterator(it, new Interval(low, high - 1));
      debugTrace('use():' + num);
      return true;
    }

    // |--x--|
    // x|--|
    this.ss.updateKeyByIterator(it, new Interval(num + 1, high));
    // |--|x|--|
    this.ss.insert(new Interval(low, num - 1));
    debugTrace('use():' + num);
    return true;
  }
  debugTrace('use():failed');
  return false;
};

/**
 * Deallocate the number. The number become vacant status.
 * Time Complexity O(logN) : N is the number of intervals (not numbers)
 * @param {Number} num - The number to deallocate. The number must be occupied status.
 *                       In other words, the number must be allocated by alloc() or occupied be use().
 */
NumberAllocator.prototype.free = function (num) {
  if (num < this.min || num > this.max) {
    debugError('free():' + num + ' is out of range');
    return;
  }
  var key = new Interval(num, num);
  var it = this.ss.upperBound(key);
  if (it.equals(this.ss.end())) {
    // ....v
    if (it.equals(this.ss.begin())) {
      // Insert new interval
      this.ss.insert(key);
      return;
    }
    it.pre();
    var low = it.pointer.high;
    var high = it.pointer.high;
    if (high + 1 === num) {
      // Concat to left
      this.ss.updateKeyByIterator(it, new Interval(low, num));
    } else {
      // Insert new interval
      this.ss.insert(key);
    }
  } else {
    if (it.equals(this.ss.begin())) {
      // v....
      if (num + 1 === it.pointer.low) {
        // Concat to right
        var _high = it.pointer.high;
        this.ss.updateKeyByIterator(it, new Interval(num, _high));
      } else {
        // Insert new interval
        this.ss.insert(key);
      }
    } else {
      // ..v..
      var rLow = it.pointer.low;
      var rHigh = it.pointer.high;
      it.pre();
      var lLow = it.pointer.low;
      var lHigh = it.pointer.high;
      if (lHigh + 1 === num) {
        if (num + 1 === rLow) {
          // Concat to left and right
          this.ss.eraseElementByIterator(it);
          this.ss.updateKeyByIterator(it, new Interval(lLow, rHigh));
        } else {
          // Concat to left
          this.ss.updateKeyByIterator(it, new Interval(lLow, num));
        }
      } else {
        if (num + 1 === rLow) {
          // Concat to right
          this.ss.eraseElementByIterator(it.next());
          this.ss.insert(new Interval(num, rHigh));
        } else {
          // Insert new interval
          this.ss.insert(key);
        }
      }
    }
  }
  debugTrace('free():' + num);
};

/**
 * Clear all occupied numbers.
 * The all numbers are set to vacant status.
 * Time Complexity O(1)
 */
NumberAllocator.prototype.clear = function () {
  debugTrace('clear()');
  this.ss.clear();
  this.ss.insert(new Interval(this.min, this.max));
};

/**
 * Get the number of intervals. Interval is internal structure of this library.
 * This function is for debugging.
 * Time Complexity O(1)
 * @return {Number} - The number of intervals.
 */
NumberAllocator.prototype.intervalCount = function () {
  return this.ss.size();
};

/**
 * Dump the internal structor of the library.
 * This function is for debugging.
 * Time Complexity O(N) : N is the number of intervals (not numbers)
 */
NumberAllocator.prototype.dump = function () {
  console.log('length:' + this.ss.size());
  var _iterator = _createForOfIteratorHelper(this.ss),
    _step;
  try {
    for (_iterator.s(); !(_step = _iterator.n()).done;) {
      var element = _step.value;
      console.log(element);
    }
  } catch (err) {
    _iterator.e(err);
  } finally {
    _iterator.f();
  }
};
module.exports = NumberAllocator;

/***/ }),

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

"use strict";


var wrappy = __webpack_require__(92126);
module.exports = wrappy(once);
module.exports.strict = wrappy(onceStrict);
once.proto = once(function () {
  Object.defineProperty(Function.prototype, 'once', {
    value: function value() {
      return once(this);
    },
    configurable: true
  });
  Object.defineProperty(Function.prototype, 'onceStrict', {
    value: function value() {
      return onceStrict(this);
    },
    configurable: true
  });
});
function once(fn) {
  var f = function f() {
    if (f.called) return f.value;
    f.called = true;
    return f.value = fn.apply(this, arguments);
  };
  f.called = false;
  return f;
}
function onceStrict(fn) {
  var f = function f() {
    if (f.called) throw new Error(f.onceError);
    f.called = true;
    return f.value = fn.apply(this, arguments);
  };
  var name = fn.name || 'Function wrapped with `once`';
  f.onceError = name + " shouldn't be called more than once";
  f.called = false;
  return f;
}

/***/ }),

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

"use strict";
/* provided dependency */ var process = __webpack_require__(554);


if (typeof process === 'undefined' || !process.version || process.version.indexOf('v0.') === 0 || process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
  module.exports = {
    nextTick: nextTick
  };
} else {
  module.exports = process;
}
function nextTick(fn, arg1, arg2, arg3) {
  if (typeof fn !== 'function') {
    throw new TypeError('"callback" argument must be a function');
  }
  var len = arguments.length;
  var args, i;
  switch (len) {
    case 0:
    case 1:
      return process.nextTick(fn);
    case 2:
      return process.nextTick(function afterTickOne() {
        fn.call(null, arg1);
      });
    case 3:
      return process.nextTick(function afterTickTwo() {
        fn.call(null, arg1, arg2);
      });
    case 4:
      return process.nextTick(function afterTickThree() {
        fn.call(null, arg1, arg2, arg3);
      });
    default:
      args = new Array(len - 1);
      i = 0;
      while (i < args.length) {
        args[i++] = arguments[i];
      }
      return process.nextTick(function afterTick() {
        fn.apply(null, args);
      });
  }
}

/***/ }),

/***/ 554:
/***/ ((module) => {

"use strict";


// shim for using process in browser
var process = module.exports = {};

// cached from whatever global is present so that test runners that stub it
// don't break things.  But we need to wrap it in a try catch in case it is
// wrapped in strict mode code which doesn't define any globals.  It's inside a
// function because try/catches deoptimize in certain engines.

var cachedSetTimeout;
var cachedClearTimeout;
function defaultSetTimout() {
  throw new Error('setTimeout has not been defined');
}
function defaultClearTimeout() {
  throw new Error('clearTimeout has not been defined');
}
(function () {
  try {
    if (typeof setTimeout === 'function') {
      cachedSetTimeout = setTimeout;
    } else {
      cachedSetTimeout = defaultSetTimout;
    }
  } catch (e) {
    cachedSetTimeout = defaultSetTimout;
  }
  try {
    if (typeof clearTimeout === 'function') {
      cachedClearTimeout = clearTimeout;
    } else {
      cachedClearTimeout = defaultClearTimeout;
    }
  } catch (e) {
    cachedClearTimeout = defaultClearTimeout;
  }
})();
function runTimeout(fun) {
  if (cachedSetTimeout === setTimeout) {
    //normal enviroments in sane situations
    return setTimeout(fun, 0);
  }
  // if setTimeout wasn't available but was latter defined
  if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
    cachedSetTimeout = setTimeout;
    return setTimeout(fun, 0);
  }
  try {
    // when when somebody has screwed with setTimeout but no I.E. maddness
    return cachedSetTimeout(fun, 0);
  } catch (e) {
    try {
      // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
      return cachedSetTimeout.call(null, fun, 0);
    } catch (e) {
      // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
      return cachedSetTimeout.call(this, fun, 0);
    }
  }
}
function runClearTimeout(marker) {
  if (cachedClearTimeout === clearTimeout) {
    //normal enviroments in sane situations
    return clearTimeout(marker);
  }
  // if clearTimeout wasn't available but was latter defined
  if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
    cachedClearTimeout = clearTimeout;
    return clearTimeout(marker);
  }
  try {
    // when when somebody has screwed with setTimeout but no I.E. maddness
    return cachedClearTimeout(marker);
  } catch (e) {
    try {
      // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
      return cachedClearTimeout.call(null, marker);
    } catch (e) {
      // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
      // Some versions of I.E. have different rules for clearTimeout vs setTimeout
      return cachedClearTimeout.call(this, marker);
    }
  }
}
var queue = [];
var draining = false;
var currentQueue;
var queueIndex = -1;
function cleanUpNextTick() {
  if (!draining || !currentQueue) {
    return;
  }
  draining = false;
  if (currentQueue.length) {
    queue = currentQueue.concat(queue);
  } else {
    queueIndex = -1;
  }
  if (queue.length) {
    drainQueue();
  }
}
function drainQueue() {
  if (draining) {
    return;
  }
  var timeout = runTimeout(cleanUpNextTick);
  draining = true;
  var len = queue.length;
  while (len) {
    currentQueue = queue;
    queue = [];
    while (++queueIndex < len) {
      if (currentQueue) {
        currentQueue[queueIndex].run();
      }
    }
    queueIndex = -1;
    len = queue.length;
  }
  currentQueue = null;
  draining = false;
  runClearTimeout(timeout);
}
process.nextTick = function (fun) {
  var args = new Array(arguments.length - 1);
  if (arguments.length > 1) {
    for (var i = 1; i < arguments.length; i++) {
      args[i - 1] = arguments[i];
    }
  }
  queue.push(new Item(fun, args));
  if (queue.length === 1 && !draining) {
    runTimeout(drainQueue);
  }
};

// v8 likes predictible objects
function Item(fun, array) {
  this.fun = fun;
  this.array = array;
}
Item.prototype.run = function () {
  this.fun.apply(null, this.array);
};
process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];
process.version = ''; // empty string to avoid regexp issues
process.versions = {};
function noop() {}
process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.prependListener = noop;
process.prependOnceListener = noop;
process.listeners = function (name) {
  return [];
};
process.binding = function (name) {
  throw new Error('process.binding is not supported');
};
process.cwd = function () {
  return '/';
};
process.chdir = function (dir) {
  throw new Error('process.chdir is not supported');
};
process.umask = function () {
  return 0;
};

/***/ }),

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

"use strict";


/** Highest positive signed 32-bit float value */
Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.toUnicode = exports.toASCII = exports.encode = exports["default"] = exports.decode = void 0;
exports.ucs2decode = ucs2decode;
exports.ucs2encode = void 0;
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1

/** Bootstring parameters */
var base = 36;
var tMin = 1;
var tMax = 26;
var skew = 38;
var damp = 700;
var initialBias = 72;
var initialN = 128; // 0x80
var delimiter = '-'; // '\x2D'

/** Regular expressions */
var regexPunycode = /^xn--/;
var regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars
var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators

/** Error messages */
var errors = {
  'overflow': 'Overflow: input needs wider integers to process',
  'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
  'invalid-input': 'Invalid input'
};

/** Convenience shortcuts */
var baseMinusTMin = base - tMin;
var floor = Math.floor;
var stringFromCharCode = String.fromCharCode;

/*--------------------------------------------------------------------------*/

/**
 * A generic error utility function.
 * @private
 * @param {String} type The error type.
 * @returns {Error} Throws a `RangeError` with the applicable error message.
 */
function error(type) {
  throw new RangeError(errors[type]);
}

/**
 * A generic `Array#map` utility function.
 * @private
 * @param {Array} array The array to iterate over.
 * @param {Function} callback The function that gets called for every array
 * item.
 * @returns {Array} A new array of values returned by the callback function.
 */
function map(array, fn) {
  var result = [];
  var length = array.length;
  while (length--) {
    result[length] = fn(array[length]);
  }
  return result;
}

/**
 * A simple `Array#map`-like wrapper to work with domain name strings or email
 * addresses.
 * @private
 * @param {String} domain The domain name or email address.
 * @param {Function} callback The function that gets called for every
 * character.
 * @returns {Array} A new string of characters returned by the callback
 * function.
 */
function mapDomain(string, fn) {
  var parts = string.split('@');
  var result = '';
  if (parts.length > 1) {
    // In email addresses, only the domain name should be punycoded. Leave
    // the local part (i.e. everything up to `@`) intact.
    result = parts[0] + '@';
    string = parts[1];
  }
  // Avoid `split(regex)` for IE8 compatibility. See #17.
  string = string.replace(regexSeparators, '\x2E');
  var labels = string.split('.');
  var encoded = map(labels, fn).join('.');
  return result + encoded;
}

/**
 * Creates an array containing the numeric code points of each Unicode
 * character in the string. While JavaScript uses UCS-2 internally,
 * this function will convert a pair of surrogate halves (each of which
 * UCS-2 exposes as separate characters) into a single code point,
 * matching UTF-16.
 * @see `punycode.ucs2.encode`
 * @see <https://mathiasbynens.be/notes/javascript-encoding>
 * @memberOf punycode.ucs2
 * @name decode
 * @param {String} string The Unicode input string (UCS-2).
 * @returns {Array} The new array of code points.
 */
function ucs2decode(string) {
  var output = [];
  var counter = 0;
  var length = string.length;
  while (counter < length) {
    var value = string.charCodeAt(counter++);
    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
      // It's a high surrogate, and there is a next character.
      var extra = string.charCodeAt(counter++);
      if ((extra & 0xFC00) == 0xDC00) {
        // Low surrogate.
        output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
      } else {
        // It's an unmatched surrogate; only append this code unit, in case the
        // next code unit is the high surrogate of a surrogate pair.
        output.push(value);
        counter--;
      }
    } else {
      output.push(value);
    }
  }
  return output;
}

/**
 * Creates a string based on an array of numeric code points.
 * @see `punycode.ucs2.decode`
 * @memberOf punycode.ucs2
 * @name encode
 * @param {Array} codePoints The array of numeric code points.
 * @returns {String} The new Unicode string (UCS-2).
 */
var ucs2encode = function ucs2encode(array) {
  return String.fromCodePoint.apply(String, _toConsumableArray(array));
};

/**
 * Converts a basic code point into a digit/integer.
 * @see `digitToBasic()`
 * @private
 * @param {Number} codePoint The basic numeric code point value.
 * @returns {Number} The numeric value of a basic code point (for use in
 * representing integers) in the range `0` to `base - 1`, or `base` if
 * the code point does not represent a value.
 */
exports.ucs2encode = ucs2encode;
var basicToDigit = function basicToDigit(codePoint) {
  if (codePoint - 0x30 < 0x0A) {
    return codePoint - 0x16;
  }
  if (codePoint - 0x41 < 0x1A) {
    return codePoint - 0x41;
  }
  if (codePoint - 0x61 < 0x1A) {
    return codePoint - 0x61;
  }
  return base;
};

/**
 * Converts a digit/integer into a basic code point.
 * @see `basicToDigit()`
 * @private
 * @param {Number} digit The numeric value of a basic code point.
 * @returns {Number} The basic code point whose value (when used for
 * representing integers) is `digit`, which needs to be in the range
 * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
 * used; else, the lowercase form is used. The behavior is undefined
 * if `flag` is non-zero and `digit` has no uppercase form.
 */
var digitToBasic = function digitToBasic(digit, flag) {
  //  0..25 map to ASCII a..z or A..Z
  // 26..35 map to ASCII 0..9
  return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
};

/**
 * Bias adaptation function as per section 3.4 of RFC 3492.
 * https://tools.ietf.org/html/rfc3492#section-3.4
 * @private
 */
var adapt = function adapt(delta, numPoints, firstTime) {
  var k = 0;
  delta = firstTime ? floor(delta / damp) : delta >> 1;
  delta += floor(delta / numPoints);
  for /* no initialization */
  (; delta > baseMinusTMin * tMax >> 1; k += base) {
    delta = floor(delta / baseMinusTMin);
  }
  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
};

/**
 * Converts a Punycode string of ASCII-only symbols to a string of Unicode
 * symbols.
 * @memberOf punycode
 * @param {String} input The Punycode string of ASCII-only symbols.
 * @returns {String} The resulting string of Unicode symbols.
 */
var decode = function decode(input) {
  // Don't use UCS-2.
  var output = [];
  var inputLength = input.length;
  var i = 0;
  var n = initialN;
  var bias = initialBias;

  // Handle the basic code points: let `basic` be the number of input code
  // points before the last delimiter, or `0` if there is none, then copy
  // the first basic code points to the output.

  var basic = input.lastIndexOf(delimiter);
  if (basic < 0) {
    basic = 0;
  }
  for (var j = 0; j < basic; ++j) {
    // if it's not a basic code point
    if (input.charCodeAt(j) >= 0x80) {
      error('not-basic');
    }
    output.push(input.charCodeAt(j));
  }

  // Main decoding loop: start just after the last delimiter if any basic code
  // points were copied; start at the beginning otherwise.

  for /* no final expression */
  (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) {
    // `index` is the index of the next character to be consumed.
    // Decode a generalized variable-length integer into `delta`,
    // which gets added to `i`. The overflow checking is easier
    // if we increase `i` as we go, then subtract off its starting
    // value at the end to obtain `delta`.
    var oldi = i;
    for /* no condition */
    (var w = 1, k = base;; k += base) {
      if (index >= inputLength) {
        error('invalid-input');
      }
      var digit = basicToDigit(input.charCodeAt(index++));
      if (digit >= base || digit > floor((maxInt - i) / w)) {
        error('overflow');
      }
      i += digit * w;
      var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
      if (digit < t) {
        break;
      }
      var baseMinusT = base - t;
      if (w > floor(maxInt / baseMinusT)) {
        error('overflow');
      }
      w *= baseMinusT;
    }
    var out = output.length + 1;
    bias = adapt(i - oldi, out, oldi == 0);

    // `i` was supposed to wrap around from `out` to `0`,
    // incrementing `n` each time, so we'll fix that now:
    if (floor(i / out) > maxInt - n) {
      error('overflow');
    }
    n += floor(i / out);
    i %= out;

    // Insert `n` at position `i` of the output.
    output.splice(i++, 0, n);
  }
  return String.fromCodePoint.apply(String, output);
};

/**
 * Converts a string of Unicode symbols (e.g. a domain name label) to a
 * Punycode string of ASCII-only symbols.
 * @memberOf punycode
 * @param {String} input The string of Unicode symbols.
 * @returns {String} The resulting Punycode string of ASCII-only symbols.
 */
exports.decode = decode;
var encode = function encode(input) {
  var output = [];

  // Convert the input in UCS-2 to an array of Unicode code points.
  input = ucs2decode(input);

  // Cache the length.
  var inputLength = input.length;

  // Initialize the state.
  var n = initialN;
  var delta = 0;
  var bias = initialBias;

  // Handle the basic code points.
  var _iterator = _createForOfIteratorHelper(input),
    _step;
  try {
    for (_iterator.s(); !(_step = _iterator.n()).done;) {
      var _currentValue2 = _step.value;
      if (_currentValue2 < 0x80) {
        output.push(stringFromCharCode(_currentValue2));
      }
    }
  } catch (err) {
    _iterator.e(err);
  } finally {
    _iterator.f();
  }
  var basicLength = output.length;
  var handledCPCount = basicLength;

  // `handledCPCount` is the number of code points that have been handled;
  // `basicLength` is the number of basic code points.

  // Finish the basic string with a delimiter unless it's empty.
  if (basicLength) {
    output.push(delimiter);
  }

  // Main encoding loop:
  while (handledCPCount < inputLength) {
    // All non-basic code points < n have been handled already. Find the next
    // larger one:
    var m = maxInt;
    var _iterator2 = _createForOfIteratorHelper(input),
      _step2;
    try {
      for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
        var currentValue = _step2.value;
        if (currentValue >= n && currentValue < m) {
          m = currentValue;
        }
      }

      // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
      // but guard against overflow.
    } catch (err) {
      _iterator2.e(err);
    } finally {
      _iterator2.f();
    }
    var handledCPCountPlusOne = handledCPCount + 1;
    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
      error('overflow');
    }
    delta += (m - n) * handledCPCountPlusOne;
    n = m;
    var _iterator3 = _createForOfIteratorHelper(input),
      _step3;
    try {
      for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
        var _currentValue = _step3.value;
        if (_currentValue < n && ++delta > maxInt) {
          error('overflow');
        }
        if (_currentValue == n) {
          // Represent delta as a generalized variable-length integer.
          var q = delta;
          for /* no condition */
          (var k = base;; k += base) {
            var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
            if (q < t) {
              break;
            }
            var qMinusT = q - t;
            var baseMinusT = base - t;
            output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));
            q = floor(qMinusT / baseMinusT);
          }
          output.push(stringFromCharCode(digitToBasic(q, 0)));
          bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
          delta = 0;
          ++handledCPCount;
        }
      }
    } catch (err) {
      _iterator3.e(err);
    } finally {
      _iterator3.f();
    }
    ++delta;
    ++n;
  }
  return output.join('');
};

/**
 * Converts a Punycode string representing a domain name or an email address
 * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
 * it doesn't matter if you call it on a string that has already been
 * converted to Unicode.
 * @memberOf punycode
 * @param {String} input The Punycoded domain name or email address to
 * convert to Unicode.
 * @returns {String} The Unicode representation of the given Punycode
 * string.
 */
exports.encode = encode;
var toUnicode = function toUnicode(input) {
  return mapDomain(input, function (string) {
    return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;
  });
};

/**
 * Converts a Unicode string representing a domain name or an email address to
 * Punycode. Only the non-ASCII parts of the domain name will be converted,
 * i.e. it doesn't matter if you call it with a domain that's already in
 * ASCII.
 * @memberOf punycode
 * @param {String} input The domain name or email address to convert, as a
 * Unicode string.
 * @returns {String} The Punycode representation of the given domain name or
 * email address.
 */
exports.toUnicode = toUnicode;
var toASCII = function toASCII(input) {
  return mapDomain(input, function (string) {
    return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;
  });
};

/*--------------------------------------------------------------------------*/

/** Define the public API */
exports.toASCII = toASCII;
var punycode = {
  /**
   * A string representing the current Punycode.js version number.
   * @memberOf punycode
   * @type String
   */
  'version': '2.1.0',
  /**
   * An object of methods to convert from JavaScript's internal character
   * representation (UCS-2) to Unicode code points, and back.
   * @see <https://mathiasbynens.be/notes/javascript-encoding>
   * @memberOf punycode
   * @type Object
   */
  'ucs2': {
    'decode': ucs2decode,
    'encode': ucs2encode
  },
  'decode': decode,
  'encode': encode,
  'toASCII': toASCII,
  'toUnicode': toUnicode
};
var _default = punycode;
exports["default"] = _default;

/***/ }),

/***/ 11785:
/***/ ((module) => {

"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.



// If obj.hasOwnProperty has been overridden, then calling
// obj.hasOwnProperty(prop) will break.
// See: https://github.com/joyent/node/issues/1707
function hasOwnProperty(obj, prop) {
  return Object.prototype.hasOwnProperty.call(obj, prop);
}
module.exports = function (qs, sep, eq, options) {
  sep = sep || '&';
  eq = eq || '=';
  var obj = {};
  if (typeof qs !== 'string' || qs.length === 0) {
    return obj;
  }
  var regexp = /\+/g;
  qs = qs.split(sep);
  var maxKeys = 1000;
  if (options && typeof options.maxKeys === 'number') {
    maxKeys = options.maxKeys;
  }
  var len = qs.length;
  // maxKeys <= 0 means that we should not limit keys count
  if (maxKeys > 0 && len > maxKeys) {
    len = maxKeys;
  }
  for (var i = 0; i < len; ++i) {
    var x = qs[i].replace(regexp, '%20'),
      idx = x.indexOf(eq),
      kstr,
      vstr,
      k,
      v;
    if (idx >= 0) {
      kstr = x.substr(0, idx);
      vstr = x.substr(idx + 1);
    } else {
      kstr = x;
      vstr = '';
    }
    k = decodeURIComponent(kstr);
    v = decodeURIComponent(vstr);
    if (!hasOwnProperty(obj, k)) {
      obj[k] = v;
    } else if (Array.isArray(obj[k])) {
      obj[k].push(v);
    } else {
      obj[k] = [obj[k], v];
    }
  }
  return obj;
};

/***/ }),

/***/ 31457:
/***/ ((module) => {

"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.



function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var stringifyPrimitive = function stringifyPrimitive(v) {
  switch (_typeof(v)) {
    case 'string':
      return v;
    case 'boolean':
      return v ? 'true' : 'false';
    case 'number':
      return isFinite(v) ? v : '';
    default:
      return '';
  }
};
module.exports = function (obj, sep, eq, name) {
  sep = sep || '&';
  eq = eq || '=';
  if (obj === null) {
    obj = undefined;
  }
  if (_typeof(obj) === 'object') {
    return Object.keys(obj).map(function (k) {
      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
      if (Array.isArray(obj[k])) {
        return obj[k].map(function (v) {
          return ks + encodeURIComponent(stringifyPrimitive(v));
        }).join(sep);
      } else {
        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
      }
    }).join(sep);
  }
  if (!name) return '';
  return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));
};

/***/ }),

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

"use strict";


exports.decode = exports.parse = __webpack_require__(11785);
exports.encode = exports.stringify = __webpack_require__(31457);

/***/ }),

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

"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

// a duplex stream is just a stream that is both readable and writable.
// Since JS doesn't have multiple prototypal inheritance, this class
// prototypally inherits from Readable, and then parasitically from
// Writable.



/*<replacement>*/
var pna = __webpack_require__(48927);
/*</replacement>*/

/*<replacement>*/
var objectKeys = Object.keys || function (obj) {
  var keys = [];
  for (var key in obj) {
    keys.push(key);
  }
  return keys;
};
/*</replacement>*/

module.exports = Duplex;

/*<replacement>*/
var util = Object.create(__webpack_require__(12077));
util.inherits = __webpack_require__(80376);
/*</replacement>*/

var Readable = __webpack_require__(66751);
var Writable = __webpack_require__(70679);
util.inherits(Duplex, Readable);
{
  // avoid scope creep, the keys array can then be collected
  var keys = objectKeys(Writable.prototype);
  for (var v = 0; v < keys.length; v++) {
    var method = keys[v];
    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
  }
}
function Duplex(options) {
  if (!(this instanceof Duplex)) return new Duplex(options);
  Readable.call(this, options);
  Writable.call(this, options);
  if (options && options.readable === false) this.readable = false;
  if (options && options.writable === false) this.writable = false;
  this.allowHalfOpen = true;
  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
  this.once('end', onend);
}
Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
  // making it explicit this property is not enumerable
  // because otherwise some prototype manipulation in
  // userland will fail
  enumerable: false,
  get: function get() {
    return this._writableState.highWaterMark;
  }
});

// the no-half-open enforcer
function onend() {
  // if we allow half-open state, or if the writable side ended,
  // then we're ok.
  if (this.allowHalfOpen || this._writableState.ended) return;

  // no more data can be written.
  // But allow more writes to happen in this tick.
  pna.nextTick(onEndNT, this);
}
function onEndNT(self) {
  self.end();
}
Object.defineProperty(Duplex.prototype, 'destroyed', {
  get: function get() {
    if (this._readableState === undefined || this._writableState === undefined) {
      return false;
    }
    return this._readableState.destroyed && this._writableState.destroyed;
  },
  set: function set(value) {
    // we ignore the value if the stream
    // has not been initialized yet
    if (this._readableState === undefined || this._writableState === undefined) {
      return;
    }

    // backward compatibility, the user is explicitly
    // managing destroyed
    this._readableState.destroyed = value;
    this._writableState.destroyed = value;
  }
});
Duplex.prototype._destroy = function (err, cb) {
  this.push(null);
  this.end();
  pna.nextTick(cb, err);
};

/***/ }),

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

"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

// a passthrough stream.
// basically just the most minimal sort of Transform stream.
// Every written chunk gets output as-is.



module.exports = PassThrough;
var Transform = __webpack_require__(84951);

/*<replacement>*/
var util = Object.create(__webpack_require__(12077));
util.inherits = __webpack_require__(80376);
/*</replacement>*/

util.inherits(PassThrough, Transform);
function PassThrough(options) {
  if (!(this instanceof PassThrough)) return new PassThrough(options);
  Transform.call(this, options);
}
PassThrough.prototype._transform = function (chunk, encoding, cb) {
  cb(null, chunk);
};

/***/ }),

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

"use strict";
/* provided dependency */ var process = __webpack_require__(554);
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.



/*<replacement>*/
var pna = __webpack_require__(48927);
/*</replacement>*/

module.exports = Readable;

/*<replacement>*/
var isArray = __webpack_require__(7577);
/*</replacement>*/

/*<replacement>*/
var Duplex;
/*</replacement>*/

Readable.ReadableState = ReadableState;

/*<replacement>*/
var EE = (__webpack_require__(19620).EventEmitter);
var EElistenerCount = function EElistenerCount(emitter, type) {
  return emitter.listeners(type).length;
};
/*</replacement>*/

/*<replacement>*/
var Stream = __webpack_require__(86054);
/*</replacement>*/

/*<replacement>*/

var Buffer = (__webpack_require__(89047).Buffer);
var OurUint8Array = __webpack_require__.g.Uint8Array || function () {};
function _uint8ArrayToBuffer(chunk) {
  return Buffer.from(chunk);
}
function _isUint8Array(obj) {
  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
}

/*</replacement>*/

/*<replacement>*/
var util = Object.create(__webpack_require__(12077));
util.inherits = __webpack_require__(80376);
/*</replacement>*/

/*<replacement>*/
var debugUtil = __webpack_require__(94616);
var debug = void 0;
if (debugUtil && debugUtil.debuglog) {
  debug = debugUtil.debuglog('stream');
} else {
  debug = function debug() {};
}
/*</replacement>*/

var BufferList = __webpack_require__(29072);
var destroyImpl = __webpack_require__(44798);
var StringDecoder;
util.inherits(Readable, Stream);
var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
function prependListener(emitter, event, fn) {
  // Sadly this is not cacheable as some libraries bundle their own
  // event emitter implementation with them.
  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);

  // This is a hack to make sure that our error handler is attached before any
  // userland ones.  NEVER DO THIS. This is here only because this code needs
  // to continue to work with older versions of Node.js that do not include
  // the prependListener() method. The goal is to eventually remove this hack.
  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
}
function ReadableState(options, stream) {
  Duplex = Duplex || __webpack_require__(24611);
  options = options || {};

  // Duplex streams are both readable and writable, but share
  // the same options object.
  // However, some cases require setting options to different
  // values for the readable and the writable sides of the duplex stream.
  // These options can be provided separately as readableXXX and writableXXX.
  var isDuplex = stream instanceof Duplex;

  // object stream flag. Used to make read(n) ignore n and to
  // make all the buffer merging and length checks go away
  this.objectMode = !!options.objectMode;
  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;

  // the point at which it stops calling _read() to fill the buffer
  // Note: 0 is a valid value, means "don't call _read preemptively ever"
  var hwm = options.highWaterMark;
  var readableHwm = options.readableHighWaterMark;
  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;

  // cast to ints.
  this.highWaterMark = Math.floor(this.highWaterMark);

  // A linked list is used to store data chunks instead of an array because the
  // linked list can remove elements from the beginning faster than
  // array.shift()
  this.buffer = new BufferList();
  this.length = 0;
  this.pipes = null;
  this.pipesCount = 0;
  this.flowing = null;
  this.ended = false;
  this.endEmitted = false;
  this.reading = false;

  // a flag to be able to tell if the event 'readable'/'data' is emitted
  // immediately, or on a later tick.  We set this to true at first, because
  // any actions that shouldn't happen until "later" should generally also
  // not happen before the first read call.
  this.sync = true;

  // whenever we return null, then we set a flag to say
  // that we're awaiting a 'readable' event emission.
  this.needReadable = false;
  this.emittedReadable = false;
  this.readableListening = false;
  this.resumeScheduled = false;

  // has it been destroyed
  this.destroyed = false;

  // Crypto is kind of old and crusty.  Historically, its default string
  // encoding is 'binary' so we have to make this configurable.
  // Everything else in the universe uses 'utf8', though.
  this.defaultEncoding = options.defaultEncoding || 'utf8';

  // the number of writers that are awaiting a drain event in .pipe()s
  this.awaitDrain = 0;

  // if true, a maybeReadMore has been scheduled
  this.readingMore = false;
  this.decoder = null;
  this.encoding = null;
  if (options.encoding) {
    if (!StringDecoder) StringDecoder = (__webpack_require__(60113)/* .StringDecoder */ .s);
    this.decoder = new StringDecoder(options.encoding);
    this.encoding = options.encoding;
  }
}
function Readable(options) {
  Duplex = Duplex || __webpack_require__(24611);
  if (!(this instanceof Readable)) return new Readable(options);
  this._readableState = new ReadableState(options, this);

  // legacy
  this.readable = true;
  if (options) {
    if (typeof options.read === 'function') this._read = options.read;
    if (typeof options.destroy === 'function') this._destroy = options.destroy;
  }
  Stream.call(this);
}
Object.defineProperty(Readable.prototype, 'destroyed', {
  get: function get() {
    if (this._readableState === undefined) {
      return false;
    }
    return this._readableState.destroyed;
  },
  set: function set(value) {
    // we ignore the value if the stream
    // has not been initialized yet
    if (!this._readableState) {
      return;
    }

    // backward compatibility, the user is explicitly
    // managing destroyed
    this._readableState.destroyed = value;
  }
});
Readable.prototype.destroy = destroyImpl.destroy;
Readable.prototype._undestroy = destroyImpl.undestroy;
Readable.prototype._destroy = function (err, cb) {
  this.push(null);
  cb(err);
};

// Manually shove something into the read() buffer.
// This returns true if the highWaterMark has not been hit yet,
// similar to how Writable.write() returns true if you should
// write() some more.
Readable.prototype.push = function (chunk, encoding) {
  var state = this._readableState;
  var skipChunkCheck;
  if (!state.objectMode) {
    if (typeof chunk === 'string') {
      encoding = encoding || state.defaultEncoding;
      if (encoding !== state.encoding) {
        chunk = Buffer.from(chunk, encoding);
        encoding = '';
      }
      skipChunkCheck = true;
    }
  } else {
    skipChunkCheck = true;
  }
  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
};

// Unshift should *always* be something directly out of read()
Readable.prototype.unshift = function (chunk) {
  return readableAddChunk(this, chunk, null, true, false);
};
function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
  var state = stream._readableState;
  if (chunk === null) {
    state.reading = false;
    onEofChunk(stream, state);
  } else {
    var er;
    if (!skipChunkCheck) er = chunkInvalid(state, chunk);
    if (er) {
      stream.emit('error', er);
    } else if (state.objectMode || chunk && chunk.length > 0) {
      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
        chunk = _uint8ArrayToBuffer(chunk);
      }
      if (addToFront) {
        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
      } else if (state.ended) {
        stream.emit('error', new Error('stream.push() after EOF'));
      } else {
        state.reading = false;
        if (state.decoder && !encoding) {
          chunk = state.decoder.write(chunk);
          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
        } else {
          addChunk(stream, state, chunk, false);
        }
      }
    } else if (!addToFront) {
      state.reading = false;
    }
  }
  return needMoreData(state);
}
function addChunk(stream, state, chunk, addToFront) {
  if (state.flowing && state.length === 0 && !state.sync) {
    stream.emit('data', chunk);
    stream.read(0);
  } else {
    // update the buffer info.
    state.length += state.objectMode ? 1 : chunk.length;
    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
    if (state.needReadable) emitReadable(stream);
  }
  maybeReadMore(stream, state);
}
function chunkInvalid(state, chunk) {
  var er;
  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
    er = new TypeError('Invalid non-string/buffer chunk');
  }
  return er;
}

// if it's past the high water mark, we can push in some more.
// Also, if we have no data yet, we can stand some
// more bytes.  This is to work around cases where hwm=0,
// such as the repl.  Also, if the push() triggered a
// readable event, and the user called read(largeNumber) such that
// needReadable was set, then we ought to push more, so that another
// 'readable' event will be triggered.
function needMoreData(state) {
  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
}
Readable.prototype.isPaused = function () {
  return this._readableState.flowing === false;
};

// backwards compatibility.
Readable.prototype.setEncoding = function (enc) {
  if (!StringDecoder) StringDecoder = (__webpack_require__(60113)/* .StringDecoder */ .s);
  this._readableState.decoder = new StringDecoder(enc);
  this._readableState.encoding = enc;
  return this;
};

// Don't raise the hwm > 8MB
var MAX_HWM = 0x800000;
function computeNewHighWaterMark(n) {
  if (n >= MAX_HWM) {
    n = MAX_HWM;
  } else {
    // Get the next highest power of 2 to prevent increasing hwm excessively in
    // tiny amounts
    n--;
    n |= n >>> 1;
    n |= n >>> 2;
    n |= n >>> 4;
    n |= n >>> 8;
    n |= n >>> 16;
    n++;
  }
  return n;
}

// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function howMuchToRead(n, state) {
  if (n <= 0 || state.length === 0 && state.ended) return 0;
  if (state.objectMode) return 1;
  if (n !== n) {
    // Only flow one buffer at a time
    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
  }
  // If we're asking for more than the current hwm, then raise the hwm.
  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
  if (n <= state.length) return n;
  // Don't have enough
  if (!state.ended) {
    state.needReadable = true;
    return 0;
  }
  return state.length;
}

// you can override either this method, or the async _read(n) below.
Readable.prototype.read = function (n) {
  debug('read', n);
  n = parseInt(n, 10);
  var state = this._readableState;
  var nOrig = n;
  if (n !== 0) state.emittedReadable = false;

  // if we're doing read(0) to trigger a readable event, but we
  // already have a bunch of data in the buffer, then just trigger
  // the 'readable' event and move on.
  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
    debug('read: emitReadable', state.length, state.ended);
    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
    return null;
  }
  n = howMuchToRead(n, state);

  // if we've ended, and we're now clear, then finish it up.
  if (n === 0 && state.ended) {
    if (state.length === 0) endReadable(this);
    return null;
  }

  // All the actual chunk generation logic needs to be
  // *below* the call to _read.  The reason is that in certain
  // synthetic stream cases, such as passthrough streams, _read
  // may be a completely synchronous operation which may change
  // the state of the read buffer, providing enough data when
  // before there was *not* enough.
  //
  // So, the steps are:
  // 1. Figure out what the state of things will be after we do
  // a read from the buffer.
  //
  // 2. If that resulting state will trigger a _read, then call _read.
  // Note that this may be asynchronous, or synchronous.  Yes, it is
  // deeply ugly to write APIs this way, but that still doesn't mean
  // that the Readable class should behave improperly, as streams are
  // designed to be sync/async agnostic.
  // Take note if the _read call is sync or async (ie, if the read call
  // has returned yet), so that we know whether or not it's safe to emit
  // 'readable' etc.
  //
  // 3. Actually pull the requested chunks out of the buffer and return.

  // if we need a readable event, then we need to do some reading.
  var doRead = state.needReadable;
  debug('need readable', doRead);

  // if we currently have less than the highWaterMark, then also read some
  if (state.length === 0 || state.length - n < state.highWaterMark) {
    doRead = true;
    debug('length less than watermark', doRead);
  }

  // however, if we've ended, then there's no point, and if we're already
  // reading, then it's unnecessary.
  if (state.ended || state.reading) {
    doRead = false;
    debug('reading or ended', doRead);
  } else if (doRead) {
    debug('do read');
    state.reading = true;
    state.sync = true;
    // if the length is currently zero, then we *need* a readable event.
    if (state.length === 0) state.needReadable = true;
    // call internal read method
    this._read(state.highWaterMark);
    state.sync = false;
    // If _read pushed data synchronously, then `reading` will be false,
    // and we need to re-evaluate how much data we can return to the user.
    if (!state.reading) n = howMuchToRead(nOrig, state);
  }
  var ret;
  if (n > 0) ret = fromList(n, state);else ret = null;
  if (ret === null) {
    state.needReadable = true;
    n = 0;
  } else {
    state.length -= n;
  }
  if (state.length === 0) {
    // If we have nothing in the buffer, then we want to know
    // as soon as we *do* get something into the buffer.
    if (!state.ended) state.needReadable = true;

    // If we tried to read() past the EOF, then emit end on the next tick.
    if (nOrig !== n && state.ended) endReadable(this);
  }
  if (ret !== null) this.emit('data', ret);
  return ret;
};
function onEofChunk(stream, state) {
  if (state.ended) return;
  if (state.decoder) {
    var chunk = state.decoder.end();
    if (chunk && chunk.length) {
      state.buffer.push(chunk);
      state.length += state.objectMode ? 1 : chunk.length;
    }
  }
  state.ended = true;

  // emit 'readable' now to make sure it gets picked up.
  emitReadable(stream);
}

// Don't emit readable right away in sync mode, because this can trigger
// another read() call => stack overflow.  This way, it might trigger
// a nextTick recursion warning, but that's not so bad.
function emitReadable(stream) {
  var state = stream._readableState;
  state.needReadable = false;
  if (!state.emittedReadable) {
    debug('emitReadable', state.flowing);
    state.emittedReadable = true;
    if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);
  }
}
function emitReadable_(stream) {
  debug('emit readable');
  stream.emit('readable');
  flow(stream);
}

// at this point, the user has presumably seen the 'readable' event,
// and called read() to consume some data.  that may have triggered
// in turn another _read(n) call, in which case reading = true if
// it's in progress.
// However, if we're not ended, or reading, and the length < hwm,
// then go ahead and try to read some more preemptively.
function maybeReadMore(stream, state) {
  if (!state.readingMore) {
    state.readingMore = true;
    pna.nextTick(maybeReadMore_, stream, state);
  }
}
function maybeReadMore_(stream, state) {
  var len = state.length;
  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
    debug('maybeReadMore read 0');
    stream.read(0);
    if (len === state.length)
      // didn't get any data, stop spinning.
      break;else len = state.length;
  }
  state.readingMore = false;
}

// abstract method.  to be overridden in specific implementation classes.
// call cb(er, data) where data is <= n in length.
// for virtual (non-string, non-buffer) streams, "length" is somewhat
// arbitrary, and perhaps not very meaningful.
Readable.prototype._read = function (n) {
  this.emit('error', new Error('_read() is not implemented'));
};
Readable.prototype.pipe = function (dest, pipeOpts) {
  var src = this;
  var state = this._readableState;
  switch (state.pipesCount) {
    case 0:
      state.pipes = dest;
      break;
    case 1:
      state.pipes = [state.pipes, dest];
      break;
    default:
      state.pipes.push(dest);
      break;
  }
  state.pipesCount += 1;
  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
  var endFn = doEnd ? onend : unpipe;
  if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);
  dest.on('unpipe', onunpipe);
  function onunpipe(readable, unpipeInfo) {
    debug('onunpipe');
    if (readable === src) {
      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
        unpipeInfo.hasUnpiped = true;
        cleanup();
      }
    }
  }
  function onend() {
    debug('onend');
    dest.end();
  }

  // when the dest drains, it reduces the awaitDrain counter
  // on the source.  This would be more elegant with a .once()
  // handler in flow(), but adding and removing repeatedly is
  // too slow.
  var ondrain = pipeOnDrain(src);
  dest.on('drain', ondrain);
  var cleanedUp = false;
  function cleanup() {
    debug('cleanup');
    // cleanup event handlers once the pipe is broken
    dest.removeListener('close', onclose);
    dest.removeListener('finish', onfinish);
    dest.removeListener('drain', ondrain);
    dest.removeListener('error', onerror);
    dest.removeListener('unpipe', onunpipe);
    src.removeListener('end', onend);
    src.removeListener('end', unpipe);
    src.removeListener('data', ondata);
    cleanedUp = true;

    // if the reader is waiting for a drain event from this
    // specific writer, then it would cause it to never start
    // flowing again.
    // So, if this is awaiting a drain, then we just call it now.
    // If we don't know, then assume that we are waiting for one.
    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
  }

  // If the user pushes more data while we're writing to dest then we'll end up
  // in ondata again. However, we only want to increase awaitDrain once because
  // dest will only emit one 'drain' event for the multiple writes.
  // => Introduce a guard on increasing awaitDrain.
  var increasedAwaitDrain = false;
  src.on('data', ondata);
  function ondata(chunk) {
    debug('ondata');
    increasedAwaitDrain = false;
    var ret = dest.write(chunk);
    if (false === ret && !increasedAwaitDrain) {
      // If the user unpiped during `dest.write()`, it is possible
      // to get stuck in a permanently paused state if that write
      // also returned false.
      // => Check whether `dest` is still a piping destination.
      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
        debug('false write response, pause', src._readableState.awaitDrain);
        src._readableState.awaitDrain++;
        increasedAwaitDrain = true;
      }
      src.pause();
    }
  }

  // if the dest has an error, then stop piping into it.
  // however, don't suppress the throwing behavior for this.
  function onerror(er) {
    debug('onerror', er);
    unpipe();
    dest.removeListener('error', onerror);
    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
  }

  // Make sure our error handler is attached before userland ones.
  prependListener(dest, 'error', onerror);

  // Both close and finish should trigger unpipe, but only once.
  function onclose() {
    dest.removeListener('finish', onfinish);
    unpipe();
  }
  dest.once('close', onclose);
  function onfinish() {
    debug('onfinish');
    dest.removeListener('close', onclose);
    unpipe();
  }
  dest.once('finish', onfinish);
  function unpipe() {
    debug('unpipe');
    src.unpipe(dest);
  }

  // tell the dest that it's being piped to
  dest.emit('pipe', src);

  // start the flow if it hasn't been started already.
  if (!state.flowing) {
    debug('pipe resume');
    src.resume();
  }
  return dest;
};
function pipeOnDrain(src) {
  return function () {
    var state = src._readableState;
    debug('pipeOnDrain', state.awaitDrain);
    if (state.awaitDrain) state.awaitDrain--;
    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
      state.flowing = true;
      flow(src);
    }
  };
}
Readable.prototype.unpipe = function (dest) {
  var state = this._readableState;
  var unpipeInfo = {
    hasUnpiped: false
  };

  // if we're not piping anywhere, then do nothing.
  if (state.pipesCount === 0) return this;

  // just one destination.  most common case.
  if (state.pipesCount === 1) {
    // passed in one, but it's not the right one.
    if (dest && dest !== state.pipes) return this;
    if (!dest) dest = state.pipes;

    // got a match.
    state.pipes = null;
    state.pipesCount = 0;
    state.flowing = false;
    if (dest) dest.emit('unpipe', this, unpipeInfo);
    return this;
  }

  // slow case. multiple pipe destinations.

  if (!dest) {
    // remove all.
    var dests = state.pipes;
    var len = state.pipesCount;
    state.pipes = null;
    state.pipesCount = 0;
    state.flowing = false;
    for (var i = 0; i < len; i++) {
      dests[i].emit('unpipe', this, unpipeInfo);
    }
    return this;
  }

  // try to find the right one.
  var index = indexOf(state.pipes, dest);
  if (index === -1) return this;
  state.pipes.splice(index, 1);
  state.pipesCount -= 1;
  if (state.pipesCount === 1) state.pipes = state.pipes[0];
  dest.emit('unpipe', this, unpipeInfo);
  return this;
};

// set up data events if they are asked for
// Ensure readable listeners eventually get something
Readable.prototype.on = function (ev, fn) {
  var res = Stream.prototype.on.call(this, ev, fn);
  if (ev === 'data') {
    // Start flowing on next tick if stream isn't explicitly paused
    if (this._readableState.flowing !== false) this.resume();
  } else if (ev === 'readable') {
    var state = this._readableState;
    if (!state.endEmitted && !state.readableListening) {
      state.readableListening = state.needReadable = true;
      state.emittedReadable = false;
      if (!state.reading) {
        pna.nextTick(nReadingNextTick, this);
      } else if (state.length) {
        emitReadable(this);
      }
    }
  }
  return res;
};
Readable.prototype.addListener = Readable.prototype.on;
function nReadingNextTick(self) {
  debug('readable nexttick read 0');
  self.read(0);
}

// pause() and resume() are remnants of the legacy readable stream API
// If the user uses them, then switch into old mode.
Readable.prototype.resume = function () {
  var state = this._readableState;
  if (!state.flowing) {
    debug('resume');
    state.flowing = true;
    resume(this, state);
  }
  return this;
};
function resume(stream, state) {
  if (!state.resumeScheduled) {
    state.resumeScheduled = true;
    pna.nextTick(resume_, stream, state);
  }
}
function resume_(stream, state) {
  if (!state.reading) {
    debug('resume read 0');
    stream.read(0);
  }
  state.resumeScheduled = false;
  state.awaitDrain = 0;
  stream.emit('resume');
  flow(stream);
  if (state.flowing && !state.reading) stream.read(0);
}
Readable.prototype.pause = function () {
  debug('call pause flowing=%j', this._readableState.flowing);
  if (false !== this._readableState.flowing) {
    debug('pause');
    this._readableState.flowing = false;
    this.emit('pause');
  }
  return this;
};
function flow(stream) {
  var state = stream._readableState;
  debug('flow', state.flowing);
  while (state.flowing && stream.read() !== null) {}
}

// wrap an old-style stream as the async data source.
// This is *not* part of the readable stream interface.
// It is an ugly unfortunate mess of history.
Readable.prototype.wrap = function (stream) {
  var _this = this;
  var state = this._readableState;
  var paused = false;
  stream.on('end', function () {
    debug('wrapped end');
    if (state.decoder && !state.ended) {
      var chunk = state.decoder.end();
      if (chunk && chunk.length) _this.push(chunk);
    }
    _this.push(null);
  });
  stream.on('data', function (chunk) {
    debug('wrapped data');
    if (state.decoder) chunk = state.decoder.write(chunk);

    // don't skip over falsy values in objectMode
    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
    var ret = _this.push(chunk);
    if (!ret) {
      paused = true;
      stream.pause();
    }
  });

  // proxy all the other methods.
  // important when wrapping filters and duplexes.
  for (var i in stream) {
    if (this[i] === undefined && typeof stream[i] === 'function') {
      this[i] = function (method) {
        return function () {
          return stream[method].apply(stream, arguments);
        };
      }(i);
    }
  }

  // proxy certain important events.
  for (var n = 0; n < kProxyEvents.length; n++) {
    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
  }

  // when we try to consume some more bytes, simply unpause the
  // underlying stream.
  this._read = function (n) {
    debug('wrapped _read', n);
    if (paused) {
      paused = false;
      stream.resume();
    }
  };
  return this;
};
Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
  // making it explicit this property is not enumerable
  // because otherwise some prototype manipulation in
  // userland will fail
  enumerable: false,
  get: function get() {
    return this._readableState.highWaterMark;
  }
});

// exposed for testing purposes only.
Readable._fromList = fromList;

// Pluck off n bytes from an array of buffers.
// Length is the combined lengths of all the buffers in the list.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function fromList(n, state) {
  // nothing buffered
  if (state.length === 0) return null;
  var ret;
  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
    // read it all, truncate the list
    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
    state.buffer.clear();
  } else {
    // read part of list
    ret = fromListPartial(n, state.buffer, state.decoder);
  }
  return ret;
}

// Extracts only enough buffered data to satisfy the amount requested.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function fromListPartial(n, list, hasStrings) {
  var ret;
  if (n < list.head.data.length) {
    // slice is the same for buffers and strings
    ret = list.head.data.slice(0, n);
    list.head.data = list.head.data.slice(n);
  } else if (n === list.head.data.length) {
    // first chunk is a perfect match
    ret = list.shift();
  } else {
    // result spans more than one buffer
    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
  }
  return ret;
}

// Copies a specified amount of characters from the list of buffered data
// chunks.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function copyFromBufferString(n, list) {
  var p = list.head;
  var c = 1;
  var ret = p.data;
  n -= ret.length;
  while (p = p.next) {
    var str = p.data;
    var nb = n > str.length ? str.length : n;
    if (nb === str.length) ret += str;else ret += str.slice(0, n);
    n -= nb;
    if (n === 0) {
      if (nb === str.length) {
        ++c;
        if (p.next) list.head = p.next;else list.head = list.tail = null;
      } else {
        list.head = p;
        p.data = str.slice(nb);
      }
      break;
    }
    ++c;
  }
  list.length -= c;
  return ret;
}

// Copies a specified amount of bytes from the list of buffered data chunks.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function copyFromBuffer(n, list) {
  var ret = Buffer.allocUnsafe(n);
  var p = list.head;
  var c = 1;
  p.data.copy(ret);
  n -= p.data.length;
  while (p = p.next) {
    var buf = p.data;
    var nb = n > buf.length ? buf.length : n;
    buf.copy(ret, ret.length - n, 0, nb);
    n -= nb;
    if (n === 0) {
      if (nb === buf.length) {
        ++c;
        if (p.next) list.head = p.next;else list.head = list.tail = null;
      } else {
        list.head = p;
        p.data = buf.slice(nb);
      }
      break;
    }
    ++c;
  }
  list.length -= c;
  return ret;
}
function endReadable(stream) {
  var state = stream._readableState;

  // If we get here before consuming all the bytes, then that is a
  // bug in node.  Should never happen.
  if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
  if (!state.endEmitted) {
    state.ended = true;
    pna.nextTick(endReadableNT, state, stream);
  }
}
function endReadableNT(state, stream) {
  // Check that we didn't get one last unshift.
  if (!state.endEmitted && state.length === 0) {
    state.endEmitted = true;
    stream.readable = false;
    stream.emit('end');
  }
}
function indexOf(xs, x) {
  for (var i = 0, l = xs.length; i < l; i++) {
    if (xs[i] === x) return i;
  }
  return -1;
}

/***/ }),

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

"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

// a transform stream is a readable/writable stream where you do
// something with the data.  Sometimes it's called a "filter",
// but that's not a great name for it, since that implies a thing where
// some bits pass through, and others are simply ignored.  (That would
// be a valid example of a transform, of course.)
//
// While the output is causally related to the input, it's not a
// necessarily symmetric or synchronous transformation.  For example,
// a zlib stream might take multiple plain-text writes(), and then
// emit a single compressed chunk some time in the future.
//
// Here's how this works:
//
// The Transform stream has all the aspects of the readable and writable
// stream classes.  When you write(chunk), that calls _write(chunk,cb)
// internally, and returns false if there's a lot of pending writes
// buffered up.  When you call read(), that calls _read(n) until
// there's enough pending readable data buffered up.
//
// In a transform stream, the written data is placed in a buffer.  When
// _read(n) is called, it transforms the queued up data, calling the
// buffered _write cb's as it consumes chunks.  If consuming a single
// written chunk would result in multiple output chunks, then the first
// outputted bit calls the readcb, and subsequent chunks just go into
// the read buffer, and will cause it to emit 'readable' if necessary.
//
// This way, back-pressure is actually determined by the reading side,
// since _read has to be called to start processing a new chunk.  However,
// a pathological inflate type of transform can cause excessive buffering
// here.  For example, imagine a stream where every byte of input is
// interpreted as an integer from 0-255, and then results in that many
// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in
// 1kb of data being output.  In this case, you could write a very small
// amount of input, and end up with a very large amount of output.  In
// such a pathological inflating mechanism, there'd be no way to tell
// the system to stop doing the transform.  A single 4MB write could
// cause the system to run out of memory.
//
// However, even in such a pathological case, only a single written chunk
// would be consumed, and then the rest would wait (un-transformed) until
// the results of the previous transformed chunk were consumed.



module.exports = Transform;
var Duplex = __webpack_require__(24611);

/*<replacement>*/
var util = Object.create(__webpack_require__(12077));
util.inherits = __webpack_require__(80376);
/*</replacement>*/

util.inherits(Transform, Duplex);
function afterTransform(er, data) {
  var ts = this._transformState;
  ts.transforming = false;
  var cb = ts.writecb;
  if (!cb) {
    return this.emit('error', new Error('write callback called multiple times'));
  }
  ts.writechunk = null;
  ts.writecb = null;
  if (data != null)
    // single equals check for both `null` and `undefined`
    this.push(data);
  cb(er);
  var rs = this._readableState;
  rs.reading = false;
  if (rs.needReadable || rs.length < rs.highWaterMark) {
    this._read(rs.highWaterMark);
  }
}
function Transform(options) {
  if (!(this instanceof Transform)) return new Transform(options);
  Duplex.call(this, options);
  this._transformState = {
    afterTransform: afterTransform.bind(this),
    needTransform: false,
    transforming: false,
    writecb: null,
    writechunk: null,
    writeencoding: null
  };

  // start out asking for a readable event once data is transformed.
  this._readableState.needReadable = true;

  // we have implemented the _read method, and done the other things
  // that Readable wants before the first _read call, so unset the
  // sync guard flag.
  this._readableState.sync = false;
  if (options) {
    if (typeof options.transform === 'function') this._transform = options.transform;
    if (typeof options.flush === 'function') this._flush = options.flush;
  }

  // When the writable side finishes, then flush out anything remaining.
  this.on('prefinish', prefinish);
}
function prefinish() {
  var _this = this;
  if (typeof this._flush === 'function') {
    this._flush(function (er, data) {
      done(_this, er, data);
    });
  } else {
    done(this, null, null);
  }
}
Transform.prototype.push = function (chunk, encoding) {
  this._transformState.needTransform = false;
  return Duplex.prototype.push.call(this, chunk, encoding);
};

// This is the part where you do stuff!
// override this function in implementation classes.
// 'chunk' is an input chunk.
//
// Call `push(newChunk)` to pass along transformed output
// to the readable side.  You may call 'push' zero or more times.
//
// Call `cb(err)` when you are done with this chunk.  If you pass
// an error, then that'll put the hurt on the whole operation.  If you
// never call cb(), then you'll never get another chunk.
Transform.prototype._transform = function (chunk, encoding, cb) {
  throw new Error('_transform() is not implemented');
};
Transform.prototype._write = function (chunk, encoding, cb) {
  var ts = this._transformState;
  ts.writecb = cb;
  ts.writechunk = chunk;
  ts.writeencoding = encoding;
  if (!ts.transforming) {
    var rs = this._readableState;
    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
  }
};

// Doesn't matter what the args are here.
// _transform does all the work.
// That we got here means that the readable side wants more data.
Transform.prototype._read = function (n) {
  var ts = this._transformState;
  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
    ts.transforming = true;
    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
  } else {
    // mark that we need a transform, so that any data that comes in
    // will get processed, now that we've asked for it.
    ts.needTransform = true;
  }
};
Transform.prototype._destroy = function (err, cb) {
  var _this2 = this;
  Duplex.prototype._destroy.call(this, err, function (err2) {
    cb(err2);
    _this2.emit('close');
  });
};
function done(stream, er, data) {
  if (er) return stream.emit('error', er);
  if (data != null)
    // single equals check for both `null` and `undefined`
    stream.push(data);

  // if there's nothing in the write buffer, then that means
  // that nothing more will ever be provided
  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');
  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');
  return stream.push(null);
}

/***/ }),

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

"use strict";
/* provided dependency */ var process = __webpack_require__(554);
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

// A bit simpler than readable streams.
// Implement an async ._write(chunk, encoding, cb), and it'll handle all
// the drain event emission and buffering.



/*<replacement>*/
var pna = __webpack_require__(48927);
/*</replacement>*/

module.exports = Writable;

/* <replacement> */
function WriteReq(chunk, encoding, cb) {
  this.chunk = chunk;
  this.encoding = encoding;
  this.callback = cb;
  this.next = null;
}

// It seems a linked list but it is not
// there will be only 2 of these for each stream
function CorkedRequest(state) {
  var _this = this;
  this.next = null;
  this.entry = null;
  this.finish = function () {
    onCorkedFinish(_this, state);
  };
}
/* </replacement> */

/*<replacement>*/
var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
/*</replacement>*/

/*<replacement>*/
var Duplex;
/*</replacement>*/

Writable.WritableState = WritableState;

/*<replacement>*/
var util = Object.create(__webpack_require__(12077));
util.inherits = __webpack_require__(80376);
/*</replacement>*/

/*<replacement>*/
var internalUtil = {
  deprecate: __webpack_require__(98016)
};
/*</replacement>*/

/*<replacement>*/
var Stream = __webpack_require__(86054);
/*</replacement>*/

/*<replacement>*/

var Buffer = (__webpack_require__(89047).Buffer);
var OurUint8Array = __webpack_require__.g.Uint8Array || function () {};
function _uint8ArrayToBuffer(chunk) {
  return Buffer.from(chunk);
}
function _isUint8Array(obj) {
  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
}

/*</replacement>*/

var destroyImpl = __webpack_require__(44798);
util.inherits(Writable, Stream);
function nop() {}
function WritableState(options, stream) {
  Duplex = Duplex || __webpack_require__(24611);
  options = options || {};

  // Duplex streams are both readable and writable, but share
  // the same options object.
  // However, some cases require setting options to different
  // values for the readable and the writable sides of the duplex stream.
  // These options can be provided separately as readableXXX and writableXXX.
  var isDuplex = stream instanceof Duplex;

  // object stream flag to indicate whether or not this stream
  // contains buffers or objects.
  this.objectMode = !!options.objectMode;
  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;

  // the point at which write() starts returning false
  // Note: 0 is a valid value, means that we always return false if
  // the entire buffer is not flushed immediately on write()
  var hwm = options.highWaterMark;
  var writableHwm = options.writableHighWaterMark;
  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;

  // cast to ints.
  this.highWaterMark = Math.floor(this.highWaterMark);

  // if _final has been called
  this.finalCalled = false;

  // drain event flag.
  this.needDrain = false;
  // at the start of calling end()
  this.ending = false;
  // when end() has been called, and returned
  this.ended = false;
  // when 'finish' is emitted
  this.finished = false;

  // has it been destroyed
  this.destroyed = false;

  // should we decode strings into buffers before passing to _write?
  // this is here so that some node-core streams can optimize string
  // handling at a lower level.
  var noDecode = options.decodeStrings === false;
  this.decodeStrings = !noDecode;

  // Crypto is kind of old and crusty.  Historically, its default string
  // encoding is 'binary' so we have to make this configurable.
  // Everything else in the universe uses 'utf8', though.
  this.defaultEncoding = options.defaultEncoding || 'utf8';

  // not an actual buffer we keep track of, but a measurement
  // of how much we're waiting to get pushed to some underlying
  // socket or file.
  this.length = 0;

  // a flag to see when we're in the middle of a write.
  this.writing = false;

  // when true all writes will be buffered until .uncork() call
  this.corked = 0;

  // a flag to be able to tell if the onwrite cb is called immediately,
  // or on a later tick.  We set this to true at first, because any
  // actions that shouldn't happen until "later" should generally also
  // not happen before the first write call.
  this.sync = true;

  // a flag to know if we're processing previously buffered items, which
  // may call the _write() callback in the same tick, so that we don't
  // end up in an overlapped onwrite situation.
  this.bufferProcessing = false;

  // the callback that's passed to _write(chunk,cb)
  this.onwrite = function (er) {
    onwrite(stream, er);
  };

  // the callback that the user supplies to write(chunk,encoding,cb)
  this.writecb = null;

  // the amount that is being written when _write is called.
  this.writelen = 0;
  this.bufferedRequest = null;
  this.lastBufferedRequest = null;

  // number of pending user-supplied write callbacks
  // this must be 0 before 'finish' can be emitted
  this.pendingcb = 0;

  // emit prefinish if the only thing we're waiting for is _write cbs
  // This is relevant for synchronous Transform streams
  this.prefinished = false;

  // True if the error was already emitted and should not be thrown again
  this.errorEmitted = false;

  // count buffered requests
  this.bufferedRequestCount = 0;

  // allocate the first CorkedRequest, there is always
  // one allocated and free to use, and we maintain at most two
  this.corkedRequestsFree = new CorkedRequest(this);
}
WritableState.prototype.getBuffer = function getBuffer() {
  var current = this.bufferedRequest;
  var out = [];
  while (current) {
    out.push(current);
    current = current.next;
  }
  return out;
};
(function () {
  try {
    Object.defineProperty(WritableState.prototype, 'buffer', {
      get: internalUtil.deprecate(function () {
        return this.getBuffer();
      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
    });
  } catch (_) {}
})();

// Test _writableState for inheritance to account for Duplex streams,
// whose prototype chain only points to Readable.
var realHasInstance;
if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
  realHasInstance = Function.prototype[Symbol.hasInstance];
  Object.defineProperty(Writable, Symbol.hasInstance, {
    value: function value(object) {
      if (realHasInstance.call(this, object)) return true;
      if (this !== Writable) return false;
      return object && object._writableState instanceof WritableState;
    }
  });
} else {
  realHasInstance = function realHasInstance(object) {
    return object instanceof this;
  };
}
function Writable(options) {
  Duplex = Duplex || __webpack_require__(24611);

  // Writable ctor is applied to Duplexes, too.
  // `realHasInstance` is necessary because using plain `instanceof`
  // would return false, as no `_writableState` property is attached.

  // Trying to use the custom `instanceof` for Writable here will also break the
  // Node.js LazyTransform implementation, which has a non-trivial getter for
  // `_writableState` that would lead to infinite recursion.
  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
    return new Writable(options);
  }
  this._writableState = new WritableState(options, this);

  // legacy.
  this.writable = true;
  if (options) {
    if (typeof options.write === 'function') this._write = options.write;
    if (typeof options.writev === 'function') this._writev = options.writev;
    if (typeof options.destroy === 'function') this._destroy = options.destroy;
    if (typeof options["final"] === 'function') this._final = options["final"];
  }
  Stream.call(this);
}

// Otherwise people can pipe Writable streams, which is just wrong.
Writable.prototype.pipe = function () {
  this.emit('error', new Error('Cannot pipe, not readable'));
};
function writeAfterEnd(stream, cb) {
  var er = new Error('write after end');
  // TODO: defer error events consistently everywhere, not just the cb
  stream.emit('error', er);
  pna.nextTick(cb, er);
}

// Checks that a user-supplied chunk is valid, especially for the particular
// mode the stream is in. Currently this means that `null` is never accepted
// and undefined/non-string values are only allowed in object mode.
function validChunk(stream, state, chunk, cb) {
  var valid = true;
  var er = false;
  if (chunk === null) {
    er = new TypeError('May not write null values to stream');
  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
    er = new TypeError('Invalid non-string/buffer chunk');
  }
  if (er) {
    stream.emit('error', er);
    pna.nextTick(cb, er);
    valid = false;
  }
  return valid;
}
Writable.prototype.write = function (chunk, encoding, cb) {
  var state = this._writableState;
  var ret = false;
  var isBuf = !state.objectMode && _isUint8Array(chunk);
  if (isBuf && !Buffer.isBuffer(chunk)) {
    chunk = _uint8ArrayToBuffer(chunk);
  }
  if (typeof encoding === 'function') {
    cb = encoding;
    encoding = null;
  }
  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
  if (typeof cb !== 'function') cb = nop;
  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
    state.pendingcb++;
    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
  }
  return ret;
};
Writable.prototype.cork = function () {
  var state = this._writableState;
  state.corked++;
};
Writable.prototype.uncork = function () {
  var state = this._writableState;
  if (state.corked) {
    state.corked--;
    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
  }
};
Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
  // node::ParseEncoding() requires lower case.
  if (typeof encoding === 'string') encoding = encoding.toLowerCase();
  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
  this._writableState.defaultEncoding = encoding;
  return this;
};
function decodeChunk(state, chunk, encoding) {
  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
    chunk = Buffer.from(chunk, encoding);
  }
  return chunk;
}
Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
  // making it explicit this property is not enumerable
  // because otherwise some prototype manipulation in
  // userland will fail
  enumerable: false,
  get: function get() {
    return this._writableState.highWaterMark;
  }
});

// if we're already writing something, then just put this
// in the queue, and wait our turn.  Otherwise, call _write
// If we return false, then we need a drain event, so set that flag.
function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
  if (!isBuf) {
    var newChunk = decodeChunk(state, chunk, encoding);
    if (chunk !== newChunk) {
      isBuf = true;
      encoding = 'buffer';
      chunk = newChunk;
    }
  }
  var len = state.objectMode ? 1 : chunk.length;
  state.length += len;
  var ret = state.length < state.highWaterMark;
  // we must ensure that previous needDrain will not be reset to false.
  if (!ret) state.needDrain = true;
  if (state.writing || state.corked) {
    var last = state.lastBufferedRequest;
    state.lastBufferedRequest = {
      chunk: chunk,
      encoding: encoding,
      isBuf: isBuf,
      callback: cb,
      next: null
    };
    if (last) {
      last.next = state.lastBufferedRequest;
    } else {
      state.bufferedRequest = state.lastBufferedRequest;
    }
    state.bufferedRequestCount += 1;
  } else {
    doWrite(stream, state, false, len, chunk, encoding, cb);
  }
  return ret;
}
function doWrite(stream, state, writev, len, chunk, encoding, cb) {
  state.writelen = len;
  state.writecb = cb;
  state.writing = true;
  state.sync = true;
  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
  state.sync = false;
}
function onwriteError(stream, state, sync, er, cb) {
  --state.pendingcb;
  if (sync) {
    // defer the callback if we are being called synchronously
    // to avoid piling up things on the stack
    pna.nextTick(cb, er);
    // this can emit finish, and it will always happen
    // after error
    pna.nextTick(finishMaybe, stream, state);
    stream._writableState.errorEmitted = true;
    stream.emit('error', er);
  } else {
    // the caller expect this to happen before if
    // it is async
    cb(er);
    stream._writableState.errorEmitted = true;
    stream.emit('error', er);
    // this can emit finish, but finish must
    // always follow error
    finishMaybe(stream, state);
  }
}
function onwriteStateUpdate(state) {
  state.writing = false;
  state.writecb = null;
  state.length -= state.writelen;
  state.writelen = 0;
}
function onwrite(stream, er) {
  var state = stream._writableState;
  var sync = state.sync;
  var cb = state.writecb;
  onwriteStateUpdate(state);
  if (er) onwriteError(stream, state, sync, er, cb);else {
    // Check if we're actually ready to finish, but don't emit yet
    var finished = needFinish(state);
    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
      clearBuffer(stream, state);
    }
    if (sync) {
      /*<replacement>*/
      asyncWrite(afterWrite, stream, state, finished, cb);
      /*</replacement>*/
    } else {
      afterWrite(stream, state, finished, cb);
    }
  }
}
function afterWrite(stream, state, finished, cb) {
  if (!finished) onwriteDrain(stream, state);
  state.pendingcb--;
  cb();
  finishMaybe(stream, state);
}

// Must force callback to be called on nextTick, so that we don't
// emit 'drain' before the write() consumer gets the 'false' return
// value, and has a chance to attach a 'drain' listener.
function onwriteDrain(stream, state) {
  if (state.length === 0 && state.needDrain) {
    state.needDrain = false;
    stream.emit('drain');
  }
}

// if there's something in the buffer waiting, then process it
function clearBuffer(stream, state) {
  state.bufferProcessing = true;
  var entry = state.bufferedRequest;
  if (stream._writev && entry && entry.next) {
    // Fast case, write everything using _writev()
    var l = state.bufferedRequestCount;
    var buffer = new Array(l);
    var holder = state.corkedRequestsFree;
    holder.entry = entry;
    var count = 0;
    var allBuffers = true;
    while (entry) {
      buffer[count] = entry;
      if (!entry.isBuf) allBuffers = false;
      entry = entry.next;
      count += 1;
    }
    buffer.allBuffers = allBuffers;
    doWrite(stream, state, true, state.length, buffer, '', holder.finish);

    // doWrite is almost always async, defer these to save a bit of time
    // as the hot path ends with doWrite
    state.pendingcb++;
    state.lastBufferedRequest = null;
    if (holder.next) {
      state.corkedRequestsFree = holder.next;
      holder.next = null;
    } else {
      state.corkedRequestsFree = new CorkedRequest(state);
    }
    state.bufferedRequestCount = 0;
  } else {
    // Slow case, write chunks one-by-one
    while (entry) {
      var chunk = entry.chunk;
      var encoding = entry.encoding;
      var cb = entry.callback;
      var len = state.objectMode ? 1 : chunk.length;
      doWrite(stream, state, false, len, chunk, encoding, cb);
      entry = entry.next;
      state.bufferedRequestCount--;
      // if we didn't call the onwrite immediately, then
      // it means that we need to wait until it does.
      // also, that means that the chunk and cb are currently
      // being processed, so move the buffer counter past them.
      if (state.writing) {
        break;
      }
    }
    if (entry === null) state.lastBufferedRequest = null;
  }
  state.bufferedRequest = entry;
  state.bufferProcessing = false;
}
Writable.prototype._write = function (chunk, encoding, cb) {
  cb(new Error('_write() is not implemented'));
};
Writable.prototype._writev = null;
Writable.prototype.end = function (chunk, encoding, cb) {
  var state = this._writableState;
  if (typeof chunk === 'function') {
    cb = chunk;
    chunk = null;
    encoding = null;
  } else if (typeof encoding === 'function') {
    cb = encoding;
    encoding = null;
  }
  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);

  // .end() fully uncorks
  if (state.corked) {
    state.corked = 1;
    this.uncork();
  }

  // ignore unnecessary end() calls.
  if (!state.ending && !state.finished) endWritable(this, state, cb);
};
function needFinish(state) {
  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
}
function callFinal(stream, state) {
  stream._final(function (err) {
    state.pendingcb--;
    if (err) {
      stream.emit('error', err);
    }
    state.prefinished = true;
    stream.emit('prefinish');
    finishMaybe(stream, state);
  });
}
function prefinish(stream, state) {
  if (!state.prefinished && !state.finalCalled) {
    if (typeof stream._final === 'function') {
      state.pendingcb++;
      state.finalCalled = true;
      pna.nextTick(callFinal, stream, state);
    } else {
      state.prefinished = true;
      stream.emit('prefinish');
    }
  }
}
function finishMaybe(stream, state) {
  var need = needFinish(state);
  if (need) {
    prefinish(stream, state);
    if (state.pendingcb === 0) {
      state.finished = true;
      stream.emit('finish');
    }
  }
  return need;
}
function endWritable(stream, state, cb) {
  state.ending = true;
  finishMaybe(stream, state);
  if (cb) {
    if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);
  }
  state.ended = true;
  stream.writable = false;
}
function onCorkedFinish(corkReq, state, err) {
  var entry = corkReq.entry;
  corkReq.entry = null;
  while (entry) {
    var cb = entry.callback;
    state.pendingcb--;
    cb(err);
    entry = entry.next;
  }
  if (state.corkedRequestsFree) {
    state.corkedRequestsFree.next = corkReq;
  } else {
    state.corkedRequestsFree = corkReq;
  }
}
Object.defineProperty(Writable.prototype, 'destroyed', {
  get: function get() {
    if (this._writableState === undefined) {
      return false;
    }
    return this._writableState.destroyed;
  },
  set: function set(value) {
    // we ignore the value if the stream
    // has not been initialized yet
    if (!this._writableState) {
      return;
    }

    // backward compatibility, the user is explicitly
    // managing destroyed
    this._writableState.destroyed = value;
  }
});
Writable.prototype.destroy = destroyImpl.destroy;
Writable.prototype._undestroy = destroyImpl.undestroy;
Writable.prototype._destroy = function (err, cb) {
  this.end();
  cb(err);
};

/***/ }),

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

"use strict";


function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}
var Buffer = (__webpack_require__(89047).Buffer);
var util = __webpack_require__(52361);
function copyBuffer(src, target, offset) {
  src.copy(target, offset);
}
module.exports = function () {
  function BufferList() {
    _classCallCheck(this, BufferList);
    this.head = null;
    this.tail = null;
    this.length = 0;
  }
  BufferList.prototype.push = function push(v) {
    var entry = {
      data: v,
      next: null
    };
    if (this.length > 0) this.tail.next = entry;else this.head = entry;
    this.tail = entry;
    ++this.length;
  };
  BufferList.prototype.unshift = function unshift(v) {
    var entry = {
      data: v,
      next: this.head
    };
    if (this.length === 0) this.tail = entry;
    this.head = entry;
    ++this.length;
  };
  BufferList.prototype.shift = function shift() {
    if (this.length === 0) return;
    var ret = this.head.data;
    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
    --this.length;
    return ret;
  };
  BufferList.prototype.clear = function clear() {
    this.head = this.tail = null;
    this.length = 0;
  };
  BufferList.prototype.join = function join(s) {
    if (this.length === 0) return '';
    var p = this.head;
    var ret = '' + p.data;
    while (p = p.next) {
      ret += s + p.data;
    }
    return ret;
  };
  BufferList.prototype.concat = function concat(n) {
    if (this.length === 0) return Buffer.alloc(0);
    if (this.length === 1) return this.head.data;
    var ret = Buffer.allocUnsafe(n >>> 0);
    var p = this.head;
    var i = 0;
    while (p) {
      copyBuffer(p.data, ret, i);
      i += p.data.length;
      p = p.next;
    }
    return ret;
  };
  return BufferList;
}();
if (util && util.inspect && util.inspect.custom) {
  module.exports.prototype[util.inspect.custom] = function () {
    var obj = util.inspect({
      length: this.length
    });
    return this.constructor.name + ' ' + obj;
  };
}

/***/ }),

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

"use strict";


/*<replacement>*/
var pna = __webpack_require__(48927);
/*</replacement>*/

// undocumented cb() API, needed for core, not for public API
function destroy(err, cb) {
  var _this = this;
  var readableDestroyed = this._readableState && this._readableState.destroyed;
  var writableDestroyed = this._writableState && this._writableState.destroyed;
  if (readableDestroyed || writableDestroyed) {
    if (cb) {
      cb(err);
    } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
      pna.nextTick(emitErrorNT, this, err);
    }
    return this;
  }

  // we set destroyed to true before firing error callbacks in order
  // to make it re-entrance safe in case destroy() is called within callbacks

  if (this._readableState) {
    this._readableState.destroyed = true;
  }

  // if this is a duplex stream mark the writable part as destroyed as well
  if (this._writableState) {
    this._writableState.destroyed = true;
  }
  this._destroy(err || null, function (err) {
    if (!cb && err) {
      pna.nextTick(emitErrorNT, _this, err);
      if (_this._writableState) {
        _this._writableState.errorEmitted = true;
      }
    } else if (cb) {
      cb(err);
    }
  });
  return this;
}
function undestroy() {
  if (this._readableState) {
    this._readableState.destroyed = false;
    this._readableState.reading = false;
    this._readableState.ended = false;
    this._readableState.endEmitted = false;
  }
  if (this._writableState) {
    this._writableState.destroyed = false;
    this._writableState.ended = false;
    this._writableState.ending = false;
    this._writableState.finished = false;
    this._writableState.errorEmitted = false;
  }
}
function emitErrorNT(self, err) {
  self.emit('error', err);
}
module.exports = {
  destroy: destroy,
  undestroy: undestroy
};

/***/ }),

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

"use strict";


module.exports = __webpack_require__(19620).EventEmitter;

/***/ }),

/***/ 8237:
/***/ ((module, exports, __webpack_require__) => {

"use strict";


exports = module.exports = __webpack_require__(66751);
exports.Stream = exports;
exports.Readable = exports;
exports.Writable = __webpack_require__(70679);
exports.Duplex = __webpack_require__(24611);
exports.Transform = __webpack_require__(84951);
exports.PassThrough = __webpack_require__(33684);

/***/ }),

/***/ 36012:
/***/ ((module) => {

"use strict";


function ReInterval(callback, interval, args) {
  var self = this;
  this._callback = callback;
  this._args = args;
  this._interval = setInterval(callback, interval, this._args);
  this.reschedule = function (interval) {
    // if no interval entered, use the interval passed in on creation
    if (!interval) interval = self._interval;
    if (self._interval) clearInterval(self._interval);
    self._interval = setInterval(self._callback, interval, self._args);
  };
  this.clear = function () {
    if (self._interval) {
      clearInterval(self._interval);
      self._interval = undefined;
    }
  };
  this.destroy = function () {
    if (self._interval) {
      clearInterval(self._interval);
    }
    self._callback = undefined;
    self._interval = undefined;
    self._args = undefined;
  };
}
function reInterval() {
  if (typeof arguments[0] !== 'function') throw new Error('callback needed');
  if (typeof arguments[1] !== 'number') throw new Error('interval needed');
  var args;
  if (arguments.length > 0) {
    args = new Array(arguments.length - 2);
    for (var i = 0; i < args.length; i++) {
      args[i] = arguments[i + 2];
    }
  }
  return new ReInterval(arguments[0], arguments[1], args);
}
module.exports = reInterval;

/***/ }),

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

"use strict";


module.exports = __webpack_require__(83424)();

/***/ }),

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

"use strict";
/* provided dependency */ var Buffer = __webpack_require__(80365)["Buffer"];


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); }
module.exports = rfdc;
function copyBuffer(cur) {
  if (cur instanceof Buffer) {
    return Buffer.from(cur);
  }
  return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length);
}
function rfdc(opts) {
  opts = opts || {};
  if (opts.circles) return rfdcCircles(opts);
  return opts.proto ? cloneProto : clone;
  function cloneArray(a, fn) {
    var keys = Object.keys(a);
    var a2 = new Array(keys.length);
    for (var i = 0; i < keys.length; i++) {
      var k = keys[i];
      var cur = a[k];
      if (_typeof(cur) !== 'object' || cur === null) {
        a2[k] = cur;
      } else if (cur instanceof Date) {
        a2[k] = new Date(cur);
      } else if (ArrayBuffer.isView(cur)) {
        a2[k] = copyBuffer(cur);
      } else {
        a2[k] = fn(cur);
      }
    }
    return a2;
  }
  function clone(o) {
    if (_typeof(o) !== 'object' || o === null) return o;
    if (o instanceof Date) return new Date(o);
    if (Array.isArray(o)) return cloneArray(o, clone);
    if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone));
    if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone));
    var o2 = {};
    for (var k in o) {
      if (Object.hasOwnProperty.call(o, k) === false) continue;
      var cur = o[k];
      if (_typeof(cur) !== 'object' || cur === null) {
        o2[k] = cur;
      } else if (cur instanceof Date) {
        o2[k] = new Date(cur);
      } else if (cur instanceof Map) {
        o2[k] = new Map(cloneArray(Array.from(cur), clone));
      } else if (cur instanceof Set) {
        o2[k] = new Set(cloneArray(Array.from(cur), clone));
      } else if (ArrayBuffer.isView(cur)) {
        o2[k] = copyBuffer(cur);
      } else {
        o2[k] = clone(cur);
      }
    }
    return o2;
  }
  function cloneProto(o) {
    if (_typeof(o) !== 'object' || o === null) return o;
    if (o instanceof Date) return new Date(o);
    if (Array.isArray(o)) return cloneArray(o, cloneProto);
    if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto));
    if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto));
    var o2 = {};
    for (var k in o) {
      var cur = o[k];
      if (_typeof(cur) !== 'object' || cur === null) {
        o2[k] = cur;
      } else if (cur instanceof Date) {
        o2[k] = new Date(cur);
      } else if (cur instanceof Map) {
        o2[k] = new Map(cloneArray(Array.from(cur), cloneProto));
      } else if (cur instanceof Set) {
        o2[k] = new Set(cloneArray(Array.from(cur), cloneProto));
      } else if (ArrayBuffer.isView(cur)) {
        o2[k] = copyBuffer(cur);
      } else {
        o2[k] = cloneProto(cur);
      }
    }
    return o2;
  }
}
function rfdcCircles(opts) {
  var refs = [];
  var refsNew = [];
  return opts.proto ? cloneProto : clone;
  function cloneArray(a, fn) {
    var keys = Object.keys(a);
    var a2 = new Array(keys.length);
    for (var i = 0; i < keys.length; i++) {
      var k = keys[i];
      var cur = a[k];
      if (_typeof(cur) !== 'object' || cur === null) {
        a2[k] = cur;
      } else if (cur instanceof Date) {
        a2[k] = new Date(cur);
      } else if (ArrayBuffer.isView(cur)) {
        a2[k] = copyBuffer(cur);
      } else {
        var index = refs.indexOf(cur);
        if (index !== -1) {
          a2[k] = refsNew[index];
        } else {
          a2[k] = fn(cur);
        }
      }
    }
    return a2;
  }
  function clone(o) {
    if (_typeof(o) !== 'object' || o === null) return o;
    if (o instanceof Date) return new Date(o);
    if (Array.isArray(o)) return cloneArray(o, clone);
    if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone));
    if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone));
    var o2 = {};
    refs.push(o);
    refsNew.push(o2);
    for (var k in o) {
      if (Object.hasOwnProperty.call(o, k) === false) continue;
      var cur = o[k];
      if (_typeof(cur) !== 'object' || cur === null) {
        o2[k] = cur;
      } else if (cur instanceof Date) {
        o2[k] = new Date(cur);
      } else if (cur instanceof Map) {
        o2[k] = new Map(cloneArray(Array.from(cur), clone));
      } else if (cur instanceof Set) {
        o2[k] = new Set(cloneArray(Array.from(cur), clone));
      } else if (ArrayBuffer.isView(cur)) {
        o2[k] = copyBuffer(cur);
      } else {
        var i = refs.indexOf(cur);
        if (i !== -1) {
          o2[k] = refsNew[i];
        } else {
          o2[k] = clone(cur);
        }
      }
    }
    refs.pop();
    refsNew.pop();
    return o2;
  }
  function cloneProto(o) {
    if (_typeof(o) !== 'object' || o === null) return o;
    if (o instanceof Date) return new Date(o);
    if (Array.isArray(o)) return cloneArray(o, cloneProto);
    if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto));
    if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto));
    var o2 = {};
    refs.push(o);
    refsNew.push(o2);
    for (var k in o) {
      var cur = o[k];
      if (_typeof(cur) !== 'object' || cur === null) {
        o2[k] = cur;
      } else if (cur instanceof Date) {
        o2[k] = new Date(cur);
      } else if (cur instanceof Map) {
        o2[k] = new Map(cloneArray(Array.from(cur), cloneProto));
      } else if (cur instanceof Set) {
        o2[k] = new Set(cloneArray(Array.from(cur), cloneProto));
      } else if (ArrayBuffer.isView(cur)) {
        o2[k] = copyBuffer(cur);
      } else {
        var i = refs.indexOf(cur);
        if (i !== -1) {
          o2[k] = refsNew[i];
        } else {
          o2[k] = cloneProto(cur);
        }
      }
    }
    refs.pop();
    refsNew.pop();
    return o2;
  }
}

/***/ }),

/***/ 89047:
/***/ ((module, exports, __webpack_require__) => {

"use strict";


/* eslint-disable node/no-deprecated-api */
var buffer = __webpack_require__(80365);
var Buffer = buffer.Buffer;

// alternative to using Object.keys for old browsers
function copyProps(src, dst) {
  for (var key in src) {
    dst[key] = src[key];
  }
}
if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
  module.exports = buffer;
} else {
  // Copy properties from require('buffer')
  copyProps(buffer, exports);
  exports.Buffer = SafeBuffer;
}
function SafeBuffer(arg, encodingOrOffset, length) {
  return Buffer(arg, encodingOrOffset, length);
}

// Copy static methods from Buffer
copyProps(Buffer, SafeBuffer);
SafeBuffer.from = function (arg, encodingOrOffset, length) {
  if (typeof arg === 'number') {
    throw new TypeError('Argument must not be a number');
  }
  return Buffer(arg, encodingOrOffset, length);
};
SafeBuffer.alloc = function (size, fill, encoding) {
  if (typeof size !== 'number') {
    throw new TypeError('Argument must be a number');
  }
  var buf = Buffer(size);
  if (fill !== undefined) {
    if (typeof encoding === 'string') {
      buf.fill(fill, encoding);
    } else {
      buf.fill(fill);
    }
  } else {
    buf.fill(0);
  }
  return buf;
};
SafeBuffer.allocUnsafe = function (size) {
  if (typeof size !== 'number') {
    throw new TypeError('Argument must be a number');
  }
  return Buffer(size);
};
SafeBuffer.allocUnsafeSlow = function (size) {
  if (typeof size !== 'number') {
    throw new TypeError('Argument must be a number');
  }
  return buffer.SlowBuffer(size);
};

/***/ }),

/***/ 67738:
/***/ ((module) => {

"use strict";


module.exports = shift;
function shift(stream) {
  var rs = stream._readableState;
  if (!rs) return null;
  return rs.objectMode || typeof stream._duplexState === 'number' ? stream.read() : stream.read(getStateLength(rs));
}
function getStateLength(state) {
  if (state.buffer.length) {
    // Since node 6.3.0 state.buffer is a BufferList not an array
    if (state.buffer.head) {
      return state.buffer.head.data.length;
    }
    return state.buffer[0].length;
  }
  return state.length;
}

/***/ }),

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

"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.



/*<replacement>*/
var Buffer = (__webpack_require__(89047).Buffer);
/*</replacement>*/

var isEncoding = Buffer.isEncoding || function (encoding) {
  encoding = '' + encoding;
  switch (encoding && encoding.toLowerCase()) {
    case 'hex':
    case 'utf8':
    case 'utf-8':
    case 'ascii':
    case 'binary':
    case 'base64':
    case 'ucs2':
    case 'ucs-2':
    case 'utf16le':
    case 'utf-16le':
    case 'raw':
      return true;
    default:
      return false;
  }
};
function _normalizeEncoding(enc) {
  if (!enc) return 'utf8';
  var retried;
  while (true) {
    switch (enc) {
      case 'utf8':
      case 'utf-8':
        return 'utf8';
      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return 'utf16le';
      case 'latin1':
      case 'binary':
        return 'latin1';
      case 'base64':
      case 'ascii':
      case 'hex':
        return enc;
      default:
        if (retried) return; // undefined
        enc = ('' + enc).toLowerCase();
        retried = true;
    }
  }
}
;

// Do not cache `Buffer.isEncoding` when checking encoding names as some
// modules monkey-patch it to support additional encodings
function normalizeEncoding(enc) {
  var nenc = _normalizeEncoding(enc);
  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
  return nenc || enc;
}

// StringDecoder provides an interface for efficiently splitting a series of
// buffers into a series of JS strings without breaking apart multi-byte
// characters.
exports.s = StringDecoder;
function StringDecoder(encoding) {
  this.encoding = normalizeEncoding(encoding);
  var nb;
  switch (this.encoding) {
    case 'utf16le':
      this.text = utf16Text;
      this.end = utf16End;
      nb = 4;
      break;
    case 'utf8':
      this.fillLast = utf8FillLast;
      nb = 4;
      break;
    case 'base64':
      this.text = base64Text;
      this.end = base64End;
      nb = 3;
      break;
    default:
      this.write = simpleWrite;
      this.end = simpleEnd;
      return;
  }
  this.lastNeed = 0;
  this.lastTotal = 0;
  this.lastChar = Buffer.allocUnsafe(nb);
}
StringDecoder.prototype.write = function (buf) {
  if (buf.length === 0) return '';
  var r;
  var i;
  if (this.lastNeed) {
    r = this.fillLast(buf);
    if (r === undefined) return '';
    i = this.lastNeed;
    this.lastNeed = 0;
  } else {
    i = 0;
  }
  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
  return r || '';
};
StringDecoder.prototype.end = utf8End;

// Returns only complete characters in a Buffer
StringDecoder.prototype.text = utf8Text;

// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
StringDecoder.prototype.fillLast = function (buf) {
  if (this.lastNeed <= buf.length) {
    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
    return this.lastChar.toString(this.encoding, 0, this.lastTotal);
  }
  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
  this.lastNeed -= buf.length;
};

// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
// continuation byte. If an invalid byte is detected, -2 is returned.
function utf8CheckByte(_byte) {
  if (_byte <= 0x7F) return 0;else if (_byte >> 5 === 0x06) return 2;else if (_byte >> 4 === 0x0E) return 3;else if (_byte >> 3 === 0x1E) return 4;
  return _byte >> 6 === 0x02 ? -1 : -2;
}

// Checks at most 3 bytes at the end of a Buffer in order to detect an
// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
// needed to complete the UTF-8 character (if applicable) are returned.
function utf8CheckIncomplete(self, buf, i) {
  var j = buf.length - 1;
  if (j < i) return 0;
  var nb = utf8CheckByte(buf[j]);
  if (nb >= 0) {
    if (nb > 0) self.lastNeed = nb - 1;
    return nb;
  }
  if (--j < i || nb === -2) return 0;
  nb = utf8CheckByte(buf[j]);
  if (nb >= 0) {
    if (nb > 0) self.lastNeed = nb - 2;
    return nb;
  }
  if (--j < i || nb === -2) return 0;
  nb = utf8CheckByte(buf[j]);
  if (nb >= 0) {
    if (nb > 0) {
      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
    }
    return nb;
  }
  return 0;
}

// Validates as many continuation bytes for a multi-byte UTF-8 character as
// needed or are available. If we see a non-continuation byte where we expect
// one, we "replace" the validated continuation bytes we've seen so far with
// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding
// behavior. The continuation byte check is included three times in the case
// where all of the continuation bytes for a character exist in the same buffer.
// It is also done this way as a slight performance increase instead of using a
// loop.
function utf8CheckExtraBytes(self, buf, p) {
  if ((buf[0] & 0xC0) !== 0x80) {
    self.lastNeed = 0;
    return "\uFFFD";
  }
  if (self.lastNeed > 1 && buf.length > 1) {
    if ((buf[1] & 0xC0) !== 0x80) {
      self.lastNeed = 1;
      return "\uFFFD";
    }
    if (self.lastNeed > 2 && buf.length > 2) {
      if ((buf[2] & 0xC0) !== 0x80) {
        self.lastNeed = 2;
        return "\uFFFD";
      }
    }
  }
}

// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
function utf8FillLast(buf) {
  var p = this.lastTotal - this.lastNeed;
  var r = utf8CheckExtraBytes(this, buf, p);
  if (r !== undefined) return r;
  if (this.lastNeed <= buf.length) {
    buf.copy(this.lastChar, p, 0, this.lastNeed);
    return this.lastChar.toString(this.encoding, 0, this.lastTotal);
  }
  buf.copy(this.lastChar, p, 0, buf.length);
  this.lastNeed -= buf.length;
}

// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
// partial character, the character's bytes are buffered until the required
// number of bytes are available.
function utf8Text(buf, i) {
  var total = utf8CheckIncomplete(this, buf, i);
  if (!this.lastNeed) return buf.toString('utf8', i);
  this.lastTotal = total;
  var end = buf.length - (total - this.lastNeed);
  buf.copy(this.lastChar, 0, end);
  return buf.toString('utf8', i, end);
}

// For UTF-8, a replacement character is added when ending on a partial
// character.
function utf8End(buf) {
  var r = buf && buf.length ? this.write(buf) : '';
  if (this.lastNeed) return r + "\uFFFD";
  return r;
}

// UTF-16LE typically needs two bytes per character, but even if we have an even
// number of bytes available, we need to check if we end on a leading/high
// surrogate. In that case, we need to wait for the next two bytes in order to
// decode the last character properly.
function utf16Text(buf, i) {
  if ((buf.length - i) % 2 === 0) {
    var r = buf.toString('utf16le', i);
    if (r) {
      var c = r.charCodeAt(r.length - 1);
      if (c >= 0xD800 && c <= 0xDBFF) {
        this.lastNeed = 2;
        this.lastTotal = 4;
        this.lastChar[0] = buf[buf.length - 2];
        this.lastChar[1] = buf[buf.length - 1];
        return r.slice(0, -1);
      }
    }
    return r;
  }
  this.lastNeed = 1;
  this.lastTotal = 2;
  this.lastChar[0] = buf[buf.length - 1];
  return buf.toString('utf16le', i, buf.length - 1);
}

// For UTF-16LE we do not explicitly append special replacement characters if we
// end on a partial character, we simply let v8 handle that.
function utf16End(buf) {
  var r = buf && buf.length ? this.write(buf) : '';
  if (this.lastNeed) {
    var end = this.lastTotal - this.lastNeed;
    return r + this.lastChar.toString('utf16le', 0, end);
  }
  return r;
}
function base64Text(buf, i) {
  var n = (buf.length - i) % 3;
  if (n === 0) return buf.toString('base64', i);
  this.lastNeed = 3 - n;
  this.lastTotal = 3;
  if (n === 1) {
    this.lastChar[0] = buf[buf.length - 1];
  } else {
    this.lastChar[0] = buf[buf.length - 2];
    this.lastChar[1] = buf[buf.length - 1];
  }
  return buf.toString('base64', i, buf.length - n);
}
function base64End(buf) {
  var r = buf && buf.length ? this.write(buf) : '';
  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
  return r;
}

// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
function simpleWrite(buf) {
  return buf.toString(this.encoding);
}
function simpleEnd(buf) {
  return buf && buf.length ? this.write(buf) : '';
}

/***/ }),

/***/ 57008:
/***/ ((module) => {

"use strict";


/**
 * When source maps are enabled, `style-loader` uses a link element with a data-uri to
 * embed the css on the page. This breaks all relative urls because now they are relative to a
 * bundle instead of the current page.
 *
 * One solution is to only use full urls, but that may be impossible.
 *
 * Instead, this function "fixes" the relative urls to be absolute according to the current page location.
 *
 * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.
 *
 */

module.exports = function (css) {
  // get current location
  var location = typeof window !== "undefined" && window.location;
  if (!location) {
    throw new Error("fixUrls requires window.location");
  }

  // blank or null?
  if (!css || typeof css !== "string") {
    return css;
  }
  var baseUrl = location.protocol + "//" + location.host;
  var currentDir = baseUrl + location.pathname.replace(/\/[^\/]*$/, "/");

  // convert each url(...)
  /*
  This regular expression is just a way to recursively match brackets within
  a string.
  	 /url\s*\(  = Match on the word "url" with any whitespace after it and then a parens
     (  = Start a capturing group
       (?:  = Start a non-capturing group
           [^)(]  = Match anything that isn't a parentheses
           |  = OR
           \(  = Match a start parentheses
               (?:  = Start another non-capturing groups
                   [^)(]+  = Match anything that isn't a parentheses
                   |  = OR
                   \(  = Match a start parentheses
                       [^)(]*  = Match anything that isn't a parentheses
                   \)  = Match a end parentheses
               )  = End Group
               *\) = Match anything and then a close parens
           )  = Close non-capturing group
           *  = Match anything
        )  = Close capturing group
   \)  = Match a close parens
  	 /gi  = Get all matches, not the first.  Be case insensitive.
   */
  var fixedCss = css.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function (fullMatch, origUrl) {
    // strip quotes (if they exist)
    var unquotedOrigUrl = origUrl.trim().replace(/^"(.*)"$/, function (o, $1) {
      return $1;
    }).replace(/^'(.*)'$/, function (o, $1) {
      return $1;
    });

    // already a full url? no change
    if (/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(unquotedOrigUrl)) {
      return fullMatch;
    }

    // convert the url to a full url
    var newUrl;
    if (unquotedOrigUrl.indexOf("//") === 0) {
      //TODO: should we add protocol?
      newUrl = unquotedOrigUrl;
    } else if (unquotedOrigUrl.indexOf("/") === 0) {
      // path should be relative to the base url
      newUrl = baseUrl + unquotedOrigUrl; // already starts with '/'
    } else {
      // path should be relative to current directory
      newUrl = currentDir + unquotedOrigUrl.replace(/^\.\//, ""); // Strip leading './'
    }

    // send back the fixed url(...)
    return "url(" + JSON.stringify(newUrl) + ")";
  });

  // send back the fixed css
  return fixedCss;
};

/***/ }),

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

"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.



function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var punycode = __webpack_require__(72231);
var util = __webpack_require__(24973);
exports.parse = urlParse;
exports.resolve = urlResolve;
exports.resolveObject = urlResolveObject;
exports.format = urlFormat;
exports.Url = Url;
function Url() {
  this.protocol = null;
  this.slashes = null;
  this.auth = null;
  this.host = null;
  this.port = null;
  this.hostname = null;
  this.hash = null;
  this.search = null;
  this.query = null;
  this.pathname = null;
  this.path = null;
  this.href = null;
}

// Reference: RFC 3986, RFC 1808, RFC 2396

// define these here so at least they only have to be
// compiled once on the first module load.
var protocolPattern = /^([a-z0-9.+-]+:)/i,
  portPattern = /:[0-9]*$/,
  // Special case for a simple path URL
  simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
  // RFC 2396: characters reserved for delimiting URLs.
  // We actually just auto-escape these.
  delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'],
  // RFC 2396: characters not allowed for various reasons.
  unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims),
  // Allowed by RFCs, but cause of XSS attacks.  Always escape these.
  autoEscape = ['\''].concat(unwise),
  // Characters that are never ever allowed in a hostname.
  // Note that any invalid chars are also handled, but these
  // are the ones that are *expected* to be seen, so we fast-path
  // them.
  nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),
  hostEndingChars = ['/', '?', '#'],
  hostnameMaxLen = 255,
  hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,
  hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
  // protocols that can allow "unsafe" and "unwise" chars.
  unsafeProtocol = {
    'javascript': true,
    'javascript:': true
  },
  // protocols that never have a hostname.
  hostlessProtocol = {
    'javascript': true,
    'javascript:': true
  },
  // protocols that always contain a // bit.
  slashedProtocol = {
    'http': true,
    'https': true,
    'ftp': true,
    'gopher': true,
    'file': true,
    'http:': true,
    'https:': true,
    'ftp:': true,
    'gopher:': true,
    'file:': true
  },
  querystring = __webpack_require__(61946);
function urlParse(url, parseQueryString, slashesDenoteHost) {
  if (url && util.isObject(url) && url instanceof Url) return url;
  var u = new Url();
  u.parse(url, parseQueryString, slashesDenoteHost);
  return u;
}
Url.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {
  if (!util.isString(url)) {
    throw new TypeError("Parameter 'url' must be a string, not " + _typeof(url));
  }

  // Copy chrome, IE, opera backslash-handling behavior.
  // Back slashes before the query string get converted to forward slashes
  // See: https://code.google.com/p/chromium/issues/detail?id=25916
  var queryIndex = url.indexOf('?'),
    splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',
    uSplit = url.split(splitter),
    slashRegex = /\\/g;
  uSplit[0] = uSplit[0].replace(slashRegex, '/');
  url = uSplit.join(splitter);
  var rest = url;

  // trim before proceeding.
  // This is to support parse stuff like "  http://foo.com  \n"
  rest = rest.trim();
  if (!slashesDenoteHost && url.split('#').length === 1) {
    // Try fast path regexp
    var simplePath = simplePathPattern.exec(rest);
    if (simplePath) {
      this.path = rest;
      this.href = rest;
      this.pathname = simplePath[1];
      if (simplePath[2]) {
        this.search = simplePath[2];
        if (parseQueryString) {
          this.query = querystring.parse(this.search.substr(1));
        } else {
          this.query = this.search.substr(1);
        }
      } else if (parseQueryString) {
        this.search = '';
        this.query = {};
      }
      return this;
    }
  }
  var proto = protocolPattern.exec(rest);
  if (proto) {
    proto = proto[0];
    var lowerProto = proto.toLowerCase();
    this.protocol = lowerProto;
    rest = rest.substr(proto.length);
  }

  // figure out if it's got a host
  // user@server is *always* interpreted as a hostname, and url
  // resolution will treat //foo/bar as host=foo,path=bar because that's
  // how the browser resolves relative URLs.
  if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {
    var slashes = rest.substr(0, 2) === '//';
    if (slashes && !(proto && hostlessProtocol[proto])) {
      rest = rest.substr(2);
      this.slashes = true;
    }
  }
  if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {
    // there's a hostname.
    // the first instance of /, ?, ;, or # ends the host.
    //
    // If there is an @ in the hostname, then non-host chars *are* allowed
    // to the left of the last @ sign, unless some host-ending character
    // comes *before* the @-sign.
    // URLs are obnoxious.
    //
    // ex:
    // http://a@b@c/ => user:a@b host:c
    // http://a@b?@c => user:a host:c path:/?@c

    // v0.12 TODO(isaacs): This is not quite how Chrome does things.
    // Review our test case against browsers more comprehensively.

    // find the first instance of any hostEndingChars
    var hostEnd = -1;
    for (var i = 0; i < hostEndingChars.length; i++) {
      var hec = rest.indexOf(hostEndingChars[i]);
      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;
    }

    // at this point, either we have an explicit point where the
    // auth portion cannot go past, or the last @ char is the decider.
    var auth, atSign;
    if (hostEnd === -1) {
      // atSign can be anywhere.
      atSign = rest.lastIndexOf('@');
    } else {
      // atSign must be in auth portion.
      // http://a@b/c@d => host:b auth:a path:/c@d
      atSign = rest.lastIndexOf('@', hostEnd);
    }

    // Now we have a portion which is definitely the auth.
    // Pull that off.
    if (atSign !== -1) {
      auth = rest.slice(0, atSign);
      rest = rest.slice(atSign + 1);
      this.auth = decodeURIComponent(auth);
    }

    // the host is the remaining to the left of the first non-host char
    hostEnd = -1;
    for (var i = 0; i < nonHostChars.length; i++) {
      var hec = rest.indexOf(nonHostChars[i]);
      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;
    }
    // if we still have not hit it, then the entire thing is a host.
    if (hostEnd === -1) hostEnd = rest.length;
    this.host = rest.slice(0, hostEnd);
    rest = rest.slice(hostEnd);

    // pull out port.
    this.parseHost();

    // we've indicated that there is a hostname,
    // so even if it's empty, it has to be present.
    this.hostname = this.hostname || '';

    // if hostname begins with [ and ends with ]
    // assume that it's an IPv6 address.
    var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';

    // validate a little.
    if (!ipv6Hostname) {
      var hostparts = this.hostname.split(/\./);
      for (var i = 0, l = hostparts.length; i < l; i++) {
        var part = hostparts[i];
        if (!part) continue;
        if (!part.match(hostnamePartPattern)) {
          var newpart = '';
          for (var j = 0, k = part.length; j < k; j++) {
            if (part.charCodeAt(j) > 127) {
              // we replace non-ASCII char with a temporary placeholder
              // we need this to make sure size of hostname is not
              // broken by replacing non-ASCII by nothing
              newpart += 'x';
            } else {
              newpart += part[j];
            }
          }
          // we test again with ASCII char only
          if (!newpart.match(hostnamePartPattern)) {
            var validParts = hostparts.slice(0, i);
            var notHost = hostparts.slice(i + 1);
            var bit = part.match(hostnamePartStart);
            if (bit) {
              validParts.push(bit[1]);
              notHost.unshift(bit[2]);
            }
            if (notHost.length) {
              rest = '/' + notHost.join('.') + rest;
            }
            this.hostname = validParts.join('.');
            break;
          }
        }
      }
    }
    if (this.hostname.length > hostnameMaxLen) {
      this.hostname = '';
    } else {
      // hostnames are always lower case.
      this.hostname = this.hostname.toLowerCase();
    }
    if (!ipv6Hostname) {
      // IDNA Support: Returns a punycoded representation of "domain".
      // It only converts parts of the domain name that
      // have non-ASCII characters, i.e. it doesn't matter if
      // you call it with a domain that already is ASCII-only.
      this.hostname = punycode.toASCII(this.hostname);
    }
    var p = this.port ? ':' + this.port : '';
    var h = this.hostname || '';
    this.host = h + p;
    this.href += this.host;

    // strip [ and ] from the hostname
    // the host field still retains them, though
    if (ipv6Hostname) {
      this.hostname = this.hostname.substr(1, this.hostname.length - 2);
      if (rest[0] !== '/') {
        rest = '/' + rest;
      }
    }
  }

  // now rest is set to the post-host stuff.
  // chop off any delim chars.
  if (!unsafeProtocol[lowerProto]) {
    // First, make 100% sure that any "autoEscape" chars get
    // escaped, even if encodeURIComponent doesn't think they
    // need to be.
    for (var i = 0, l = autoEscape.length; i < l; i++) {
      var ae = autoEscape[i];
      if (rest.indexOf(ae) === -1) continue;
      var esc = encodeURIComponent(ae);
      if (esc === ae) {
        esc = escape(ae);
      }
      rest = rest.split(ae).join(esc);
    }
  }

  // chop off from the tail first.
  var hash = rest.indexOf('#');
  if (hash !== -1) {
    // got a fragment string.
    this.hash = rest.substr(hash);
    rest = rest.slice(0, hash);
  }
  var qm = rest.indexOf('?');
  if (qm !== -1) {
    this.search = rest.substr(qm);
    this.query = rest.substr(qm + 1);
    if (parseQueryString) {
      this.query = querystring.parse(this.query);
    }
    rest = rest.slice(0, qm);
  } else if (parseQueryString) {
    // no query string, but parseQueryString still requested
    this.search = '';
    this.query = {};
  }
  if (rest) this.pathname = rest;
  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {
    this.pathname = '/';
  }

  //to support http.request
  if (this.pathname || this.search) {
    var p = this.pathname || '';
    var s = this.search || '';
    this.path = p + s;
  }

  // finally, reconstruct the href based on what has been validated.
  this.href = this.format();
  return this;
};

// format a parsed object into a url string
function urlFormat(obj) {
  // ensure it's an object, and not a string url.
  // If it's an obj, this is a no-op.
  // this way, you can call url_format() on strings
  // to clean up potentially wonky urls.
  if (util.isString(obj)) obj = urlParse(obj);
  if (!(obj instanceof Url)) return Url.prototype.format.call(obj);
  return obj.format();
}
Url.prototype.format = function () {
  var auth = this.auth || '';
  if (auth) {
    auth = encodeURIComponent(auth);
    auth = auth.replace(/%3A/i, ':');
    auth += '@';
  }
  var protocol = this.protocol || '',
    pathname = this.pathname || '',
    hash = this.hash || '',
    host = false,
    query = '';
  if (this.host) {
    host = auth + this.host;
  } else if (this.hostname) {
    host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');
    if (this.port) {
      host += ':' + this.port;
    }
  }
  if (this.query && util.isObject(this.query) && Object.keys(this.query).length) {
    query = querystring.stringify(this.query);
  }
  var search = this.search || query && '?' + query || '';
  if (protocol && protocol.substr(-1) !== ':') protocol += ':';

  // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.
  // unless they had them to begin with.
  if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {
    host = '//' + (host || '');
    if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;
  } else if (!host) {
    host = '';
  }
  if (hash && hash.charAt(0) !== '#') hash = '#' + hash;
  if (search && search.charAt(0) !== '?') search = '?' + search;
  pathname = pathname.replace(/[?#]/g, function (match) {
    return encodeURIComponent(match);
  });
  search = search.replace('#', '%23');
  return protocol + host + pathname + search + hash;
};
function urlResolve(source, relative) {
  return urlParse(source, false, true).resolve(relative);
}
Url.prototype.resolve = function (relative) {
  return this.resolveObject(urlParse(relative, false, true)).format();
};
function urlResolveObject(source, relative) {
  if (!source) return relative;
  return urlParse(source, false, true).resolveObject(relative);
}
Url.prototype.resolveObject = function (relative) {
  if (util.isString(relative)) {
    var rel = new Url();
    rel.parse(relative, false, true);
    relative = rel;
  }
  var result = new Url();
  var tkeys = Object.keys(this);
  for (var tk = 0; tk < tkeys.length; tk++) {
    var tkey = tkeys[tk];
    result[tkey] = this[tkey];
  }

  // hash is always overridden, no matter what.
  // even href="" will remove it.
  result.hash = relative.hash;

  // if the relative url is empty, then there's nothing left to do here.
  if (relative.href === '') {
    result.href = result.format();
    return result;
  }

  // hrefs like //foo/bar always cut to the protocol.
  if (relative.slashes && !relative.protocol) {
    // take everything except the protocol from relative
    var rkeys = Object.keys(relative);
    for (var rk = 0; rk < rkeys.length; rk++) {
      var rkey = rkeys[rk];
      if (rkey !== 'protocol') result[rkey] = relative[rkey];
    }

    //urlParse appends trailing / to urls like http://www.example.com
    if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {
      result.path = result.pathname = '/';
    }
    result.href = result.format();
    return result;
  }
  if (relative.protocol && relative.protocol !== result.protocol) {
    // if it's a known url protocol, then changing
    // the protocol does weird things
    // first, if it's not file:, then we MUST have a host,
    // and if there was a path
    // to begin with, then we MUST have a path.
    // if it is file:, then the host is dropped,
    // because that's known to be hostless.
    // anything else is assumed to be absolute.
    if (!slashedProtocol[relative.protocol]) {
      var keys = Object.keys(relative);
      for (var v = 0; v < keys.length; v++) {
        var k = keys[v];
        result[k] = relative[k];
      }
      result.href = result.format();
      return result;
    }
    result.protocol = relative.protocol;
    if (!relative.host && !hostlessProtocol[relative.protocol]) {
      var relPath = (relative.pathname || '').split('/');
      while (relPath.length && !(relative.host = relPath.shift())) {
        ;
      }
      if (!relative.host) relative.host = '';
      if (!relative.hostname) relative.hostname = '';
      if (relPath[0] !== '') relPath.unshift('');
      if (relPath.length < 2) relPath.unshift('');
      result.pathname = relPath.join('/');
    } else {
      result.pathname = relative.pathname;
    }
    result.search = relative.search;
    result.query = relative.query;
    result.host = relative.host || '';
    result.auth = relative.auth;
    result.hostname = relative.hostname || relative.host;
    result.port = relative.port;
    // to support http.request
    if (result.pathname || result.search) {
      var p = result.pathname || '';
      var s = result.search || '';
      result.path = p + s;
    }
    result.slashes = result.slashes || relative.slashes;
    result.href = result.format();
    return result;
  }
  var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',
    isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',
    mustEndAbs = isRelAbs || isSourceAbs || result.host && relative.pathname,
    removeAllDots = mustEndAbs,
    srcPath = result.pathname && result.pathname.split('/') || [],
    relPath = relative.pathname && relative.pathname.split('/') || [],
    psychotic = result.protocol && !slashedProtocol[result.protocol];

  // if the url is a non-slashed url, then relative
  // links like ../.. should be able
  // to crawl up to the hostname, as well.  This is strange.
  // result.protocol has already been set by now.
  // Later on, put the first path part into the host field.
  if (psychotic) {
    result.hostname = '';
    result.port = null;
    if (result.host) {
      if (srcPath[0] === '') srcPath[0] = result.host;else srcPath.unshift(result.host);
    }
    result.host = '';
    if (relative.protocol) {
      relative.hostname = null;
      relative.port = null;
      if (relative.host) {
        if (relPath[0] === '') relPath[0] = relative.host;else relPath.unshift(relative.host);
      }
      relative.host = null;
    }
    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');
  }
  if (isRelAbs) {
    // it's absolute.
    result.host = relative.host || relative.host === '' ? relative.host : result.host;
    result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;
    result.search = relative.search;
    result.query = relative.query;
    srcPath = relPath;
    // fall through to the dot-handling below.
  } else if (relPath.length) {
    // it's relative
    // throw away the existing file, and take the new path instead.
    if (!srcPath) srcPath = [];
    srcPath.pop();
    srcPath = srcPath.concat(relPath);
    result.search = relative.search;
    result.query = relative.query;
  } else if (!util.isNullOrUndefined(relative.search)) {
    // just pull out the search.
    // like href='?foo'.
    // Put this after the other two cases because it simplifies the booleans
    if (psychotic) {
      result.hostname = result.host = srcPath.shift();
      //occationaly the auth can get stuck only in host
      //this especially happens in cases like
      //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
      var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;
      if (authInHost) {
        result.auth = authInHost.shift();
        result.host = result.hostname = authInHost.shift();
      }
    }
    result.search = relative.search;
    result.query = relative.query;
    //to support http.request
    if (!util.isNull(result.pathname) || !util.isNull(result.search)) {
      result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');
    }
    result.href = result.format();
    return result;
  }
  if (!srcPath.length) {
    // no path at all.  easy.
    // we've already handled the other stuff above.
    result.pathname = null;
    //to support http.request
    if (result.search) {
      result.path = '/' + result.search;
    } else {
      result.path = null;
    }
    result.href = result.format();
    return result;
  }

  // if a url ENDs in . or .., then it must get a trailing slash.
  // however, if it ends in anything else non-slashy,
  // then it must NOT get a trailing slash.
  var last = srcPath.slice(-1)[0];
  var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';

  // strip single dots, resolve double dots to parent dir
  // if the path tries to go above the root, `up` ends up > 0
  var up = 0;
  for (var i = srcPath.length; i >= 0; i--) {
    last = srcPath[i];
    if (last === '.') {
      srcPath.splice(i, 1);
    } else if (last === '..') {
      srcPath.splice(i, 1);
      up++;
    } else if (up) {
      srcPath.splice(i, 1);
      up--;
    }
  }

  // if the path is allowed to go above the root, restore leading ..s
  if (!mustEndAbs && !removeAllDots) {
    for (; up--; up) {
      srcPath.unshift('..');
    }
  }
  if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {
    srcPath.unshift('');
  }
  if (hasTrailingSlash && srcPath.join('/').substr(-1) !== '/') {
    srcPath.push('');
  }
  var isAbsolute = srcPath[0] === '' || srcPath[0] && srcPath[0].charAt(0) === '/';

  // put the host back
  if (psychotic) {
    result.hostname = result.host = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';
    //occationaly the auth can get stuck only in host
    //this especially happens in cases like
    //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
    var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;
    if (authInHost) {
      result.auth = authInHost.shift();
      result.host = result.hostname = authInHost.shift();
    }
  }
  mustEndAbs = mustEndAbs || result.host && srcPath.length;
  if (mustEndAbs && !isAbsolute) {
    srcPath.unshift('');
  }
  if (!srcPath.length) {
    result.pathname = null;
    result.path = null;
  } else {
    result.pathname = srcPath.join('/');
  }

  //to support request.http
  if (!util.isNull(result.pathname) || !util.isNull(result.search)) {
    result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');
  }
  result.auth = relative.auth || result.auth;
  result.slashes = result.slashes || relative.slashes;
  result.href = result.format();
  return result;
};
Url.prototype.parseHost = function () {
  var host = this.host;
  var port = portPattern.exec(host);
  if (port) {
    port = port[0];
    if (port !== ':') {
      this.port = port.substr(1);
    }
    host = host.substr(0, host.length - port.length);
  }
  if (host) this.hostname = host;
};

/***/ }),

/***/ 24973:
/***/ ((module) => {

"use strict";


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); }
module.exports = {
  isString: function isString(arg) {
    return typeof arg === 'string';
  },
  isObject: function isObject(arg) {
    return _typeof(arg) === 'object' && arg !== null;
  },
  isNull: function isNull(arg) {
    return arg === null;
  },
  isNullOrUndefined: function isNullOrUndefined(arg) {
    return arg == null;
  }
};

/***/ }),

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

"use strict";


/**
 * Module exports.
 */

module.exports = deprecate;

/**
 * Mark that a method should not be used.
 * Returns a modified function which warns once by default.
 *
 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
 *
 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
 * will throw an Error when invoked.
 *
 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
 * will invoke `console.trace()` instead of `console.error()`.
 *
 * @param {Function} fn - the function to deprecate
 * @param {String} msg - the string to print to the console when `fn` is invoked
 * @returns {Function} a new "deprecated" version of `fn`
 * @api public
 */

function deprecate(fn, msg) {
  if (config('noDeprecation')) {
    return fn;
  }
  var warned = false;
  function deprecated() {
    if (!warned) {
      if (config('throwDeprecation')) {
        throw new Error(msg);
      } else if (config('traceDeprecation')) {
        console.trace(msg);
      } else {
        console.warn(msg);
      }
      warned = true;
    }
    return fn.apply(this, arguments);
  }
  return deprecated;
}

/**
 * Checks `localStorage` for boolean values for the given `name`.
 *
 * @param {String} name
 * @returns {Boolean}
 * @api private
 */

function config(name) {
  // accessing global.localStorage can trigger a DOMException in sandboxed iframes
  try {
    if (!__webpack_require__.g.localStorage) return false;
  } catch (_) {
    return false;
  }
  var val = __webpack_require__.g.localStorage[name];
  if (null == val) return false;
  return String(val).toLowerCase() === 'true';
}

/***/ }),

/***/ 92126:
/***/ ((module) => {

"use strict";


// Returns a wrapper function that returns a wrapped callback
// The wrapper function should do some stuff, and return a
// presumably different callback function.
// This makes sure that own properties are retained, so that
// decorations and such are not lost along the way.
module.exports = wrappy;
function wrappy(fn, cb) {
  if (fn && cb) return wrappy(fn)(cb);
  if (typeof fn !== 'function') throw new TypeError('need wrapper function');
  Object.keys(fn).forEach(function (k) {
    wrapper[k] = fn[k];
  });
  return wrapper;
  function wrapper() {
    var args = new Array(arguments.length);
    for (var i = 0; i < args.length; i++) {
      args[i] = arguments[i];
    }
    var ret = fn.apply(this, args);
    var cb = args[args.length - 1];
    if (typeof ret === 'function' && ret !== cb) {
      Object.keys(cb).forEach(function (k) {
        ret[k] = cb[k];
      });
    }
    return ret;
  }
}

/***/ }),

/***/ 8604:
/***/ ((module) => {

"use strict";


module.exports = function () {
  throw new Error('ws does not work in the browser. Browser clients must use the native ' + 'WebSocket object');
};

/***/ }),

/***/ 84450:
/***/ ((module) => {

"use strict";


module.exports = extend;
var hasOwnProperty = Object.prototype.hasOwnProperty;
function extend() {
  var target = {};
  for (var i = 0; i < arguments.length; i++) {
    var source = arguments[i];
    for (var key in source) {
      if (hasOwnProperty.call(source, key)) {
        target[key] = source[key];
      }
    }
  }
  return target;
}

/***/ }),

/***/ 89980:
/***/ ((module) => {

"use strict";


module.exports = function (Yallist) {
  Yallist.prototype[Symbol.iterator] = /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
    var walker;
    return regeneratorRuntime.wrap(function _callee$(_context) {
      while (1) {
        switch (_context.prev = _context.next) {
          case 0:
            walker = this.head;
          case 1:
            if (!walker) {
              _context.next = 7;
              break;
            }
            _context.next = 4;
            return walker.value;
          case 4:
            walker = walker.next;
            _context.next = 1;
            break;
          case 7:
          case "end":
            return _context.stop();
        }
      }
    }, _callee, this);
  });
};

/***/ }),

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

"use strict";


module.exports = Yallist;
Yallist.Node = Node;
Yallist.create = Yallist;
function Yallist(list) {
  var self = this;
  if (!(self instanceof Yallist)) {
    self = new Yallist();
  }
  self.tail = null;
  self.head = null;
  self.length = 0;
  if (list && typeof list.forEach === 'function') {
    list.forEach(function (item) {
      self.push(item);
    });
  } else if (arguments.length > 0) {
    for (var i = 0, l = arguments.length; i < l; i++) {
      self.push(arguments[i]);
    }
  }
  return self;
}
Yallist.prototype.removeNode = function (node) {
  if (node.list !== this) {
    throw new Error('removing node which does not belong to this list');
  }
  var next = node.next;
  var prev = node.prev;
  if (next) {
    next.prev = prev;
  }
  if (prev) {
    prev.next = next;
  }
  if (node === this.head) {
    this.head = next;
  }
  if (node === this.tail) {
    this.tail = prev;
  }
  node.list.length--;
  node.next = null;
  node.prev = null;
  node.list = null;
  return next;
};
Yallist.prototype.unshiftNode = function (node) {
  if (node === this.head) {
    return;
  }
  if (node.list) {
    node.list.removeNode(node);
  }
  var head = this.head;
  node.list = this;
  node.next = head;
  if (head) {
    head.prev = node;
  }
  this.head = node;
  if (!this.tail) {
    this.tail = node;
  }
  this.length++;
};
Yallist.prototype.pushNode = function (node) {
  if (node === this.tail) {
    return;
  }
  if (node.list) {
    node.list.removeNode(node);
  }
  var tail = this.tail;
  node.list = this;
  node.prev = tail;
  if (tail) {
    tail.next = node;
  }
  this.tail = node;
  if (!this.head) {
    this.head = node;
  }
  this.length++;
};
Yallist.prototype.push = function () {
  for (var i = 0, l = arguments.length; i < l; i++) {
    push(this, arguments[i]);
  }
  return this.length;
};
Yallist.prototype.unshift = function () {
  for (var i = 0, l = arguments.length; i < l; i++) {
    unshift(this, arguments[i]);
  }
  return this.length;
};
Yallist.prototype.pop = function () {
  if (!this.tail) {
    return undefined;
  }
  var res = this.tail.value;
  this.tail = this.tail.prev;
  if (this.tail) {
    this.tail.next = null;
  } else {
    this.head = null;
  }
  this.length--;
  return res;
};
Yallist.prototype.shift = function () {
  if (!this.head) {
    return undefined;
  }
  var res = this.head.value;
  this.head = this.head.next;
  if (this.head) {
    this.head.prev = null;
  } else {
    this.tail = null;
  }
  this.length--;
  return res;
};
Yallist.prototype.forEach = function (fn, thisp) {
  thisp = thisp || this;
  for (var walker = this.head, i = 0; walker !== null; i++) {
    fn.call(thisp, walker.value, i, this);
    walker = walker.next;
  }
};
Yallist.prototype.forEachReverse = function (fn, thisp) {
  thisp = thisp || this;
  for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
    fn.call(thisp, walker.value, i, this);
    walker = walker.prev;
  }
};
Yallist.prototype.get = function (n) {
  for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
    // abort out of the list early if we hit a cycle
    walker = walker.next;
  }
  if (i === n && walker !== null) {
    return walker.value;
  }
};
Yallist.prototype.getReverse = function (n) {
  for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
    // abort out of the list early if we hit a cycle
    walker = walker.prev;
  }
  if (i === n && walker !== null) {
    return walker.value;
  }
};
Yallist.prototype.map = function (fn, thisp) {
  thisp = thisp || this;
  var res = new Yallist();
  for (var walker = this.head; walker !== null;) {
    res.push(fn.call(thisp, walker.value, this));
    walker = walker.next;
  }
  return res;
};
Yallist.prototype.mapReverse = function (fn, thisp) {
  thisp = thisp || this;
  var res = new Yallist();
  for (var walker = this.tail; walker !== null;) {
    res.push(fn.call(thisp, walker.value, this));
    walker = walker.prev;
  }
  return res;
};
Yallist.prototype.reduce = function (fn, initial) {
  var acc;
  var walker = this.head;
  if (arguments.length > 1) {
    acc = initial;
  } else if (this.head) {
    walker = this.head.next;
    acc = this.head.value;
  } else {
    throw new TypeError('Reduce of empty list with no initial value');
  }
  for (var i = 0; walker !== null; i++) {
    acc = fn(acc, walker.value, i);
    walker = walker.next;
  }
  return acc;
};
Yallist.prototype.reduceReverse = function (fn, initial) {
  var acc;
  var walker = this.tail;
  if (arguments.length > 1) {
    acc = initial;
  } else if (this.tail) {
    walker = this.tail.prev;
    acc = this.tail.value;
  } else {
    throw new TypeError('Reduce of empty list with no initial value');
  }
  for (var i = this.length - 1; walker !== null; i--) {
    acc = fn(acc, walker.value, i);
    walker = walker.prev;
  }
  return acc;
};
Yallist.prototype.toArray = function () {
  var arr = new Array(this.length);
  for (var i = 0, walker = this.head; walker !== null; i++) {
    arr[i] = walker.value;
    walker = walker.next;
  }
  return arr;
};
Yallist.prototype.toArrayReverse = function () {
  var arr = new Array(this.length);
  for (var i = 0, walker = this.tail; walker !== null; i++) {
    arr[i] = walker.value;
    walker = walker.prev;
  }
  return arr;
};
Yallist.prototype.slice = function (from, to) {
  to = to || this.length;
  if (to < 0) {
    to += this.length;
  }
  from = from || 0;
  if (from < 0) {
    from += this.length;
  }
  var ret = new Yallist();
  if (to < from || to < 0) {
    return ret;
  }
  if (from < 0) {
    from = 0;
  }
  if (to > this.length) {
    to = this.length;
  }
  for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
    walker = walker.next;
  }
  for (; walker !== null && i < to; i++, walker = walker.next) {
    ret.push(walker.value);
  }
  return ret;
};
Yallist.prototype.sliceReverse = function (from, to) {
  to = to || this.length;
  if (to < 0) {
    to += this.length;
  }
  from = from || 0;
  if (from < 0) {
    from += this.length;
  }
  var ret = new Yallist();
  if (to < from || to < 0) {
    return ret;
  }
  if (from < 0) {
    from = 0;
  }
  if (to > this.length) {
    to = this.length;
  }
  for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
    walker = walker.prev;
  }
  for (; walker !== null && i > from; i--, walker = walker.prev) {
    ret.push(walker.value);
  }
  return ret;
};
Yallist.prototype.splice = function (start, deleteCount) {
  if (start > this.length) {
    start = this.length - 1;
  }
  if (start < 0) {
    start = this.length + start;
  }
  for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
    walker = walker.next;
  }
  var ret = [];
  for (var i = 0; walker && i < deleteCount; i++) {
    ret.push(walker.value);
    walker = this.removeNode(walker);
  }
  if (walker === null) {
    walker = this.tail;
  }
  if (walker !== this.head && walker !== this.tail) {
    walker = walker.prev;
  }
  for (var i = 0; i < (arguments.length <= 2 ? 0 : arguments.length - 2); i++) {
    walker = insert(this, walker, i + 2 < 2 || arguments.length <= i + 2 ? undefined : arguments[i + 2]);
  }
  return ret;
};
Yallist.prototype.reverse = function () {
  var head = this.head;
  var tail = this.tail;
  for (var walker = head; walker !== null; walker = walker.prev) {
    var p = walker.prev;
    walker.prev = walker.next;
    walker.next = p;
  }
  this.head = tail;
  this.tail = head;
  return this;
};
function insert(self, node, value) {
  var inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self);
  if (inserted.next === null) {
    self.tail = inserted;
  }
  if (inserted.prev === null) {
    self.head = inserted;
  }
  self.length++;
  return inserted;
}
function push(self, item) {
  self.tail = new Node(item, self.tail, null, self);
  if (!self.head) {
    self.head = self.tail;
  }
  self.length++;
}
function unshift(self, item) {
  self.head = new Node(item, null, self.head, self);
  if (!self.tail) {
    self.tail = self.head;
  }
  self.length++;
}
function Node(value, prev, next, list) {
  if (!(this instanceof Node)) {
    return new Node(value, prev, next, list);
  }
  this.list = list;
  this.value = value;
  if (prev) {
    prev.next = this;
    this.prev = prev;
  } else {
    this.prev = null;
  }
  if (next) {
    next.prev = this;
    this.next = next;
  } else {
    this.next = null;
  }
}
try {
  // add if support for Symbol.iterator is present
  __webpack_require__(89980)(Yallist);
} catch (er) {}

/***/ }),

/***/ 68042:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-autocomplete-input {\r\n    display: inline-block;\r\n    position: relative;\r\n    box-sizing: border-box;\r\n    border: solid 1px #d6d6d6;\r\n}\r\n\r\n.absol-autocomplete-input.absol-disabled {\r\n    pointer-events: none;\r\n    color: rgb(84, 84, 84);\r\n    background-color: rgb(235, 235, 228);\r\n}\r\n\r\n.absol-autocomplete-input>input {\r\n    min-width: 100%;\r\n    min-height: 100%;\r\n    box-sizing: border-box;\r\n    background-color: transparent;\r\n    border: none;\r\n    outline: none;\r\n}\r\n\r\n\r\n.absol-autocomplete-input-dropdown {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 100%;\r\n    min-width: 100%;\r\n    z-index: 1005;\r\n    border: solid 1px rgb(169, 169, 169);\r\n    box-sizing: border-box;\r\n    background-color: white;\r\n}\r\n\r\n.absol-autocomplete-input-dropdown .as-bscroller{\r\n    overflow-y: auto;\r\n}\r\n\r\n.absol-autocomplete-input-dropdown.top {\r\n    top: auto;\r\n    bottom: 100%;\r\n}\r\n\r\n.absol-autocomplete-input-item {\r\n    height: 30px;\r\n}\r\n\r\n.absol-autocomplete-input-item:hover {\r\n    background-color: rgba(169, 169, 169, 0.18605);\r\n    cursor: pointer;\r\n}\r\n\r\n.absol-autocomplete-input-item.active,\r\n.absol-autocomplete-input-item.active:hover {\r\n    background-color: rgba(169, 169, 169, 0.37209);\r\n}\r\n\r\n.absol-autocomplete-input-item-text {\r\n    line-height: 30px;\r\n    margin-left: 5px;\r\n    margin-right: 5px;\r\n}", ""]);



/***/ }),

/***/ 63608:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-has-board-table-drag,\r\n.as-has-board-table-drag * {\r\n    cursor: grabbing;\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}\r\n\r\n\r\n\r\n.as-board-table {\r\n    overflow: visible;\r\n    position: relative;\r\n\r\n}\r\n\r\n.as-board-drag-zone {\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}\r\n\r\n\r\n.as-board {\r\n    white-space: normal;\r\n    box-sizing: border-box;\r\n    position: relative;\r\n    vertical-align: middle;\r\n}\r\n\r\n/**\r\nBug note: don't put fixed position element to a element which has transform\r\n */\r\n.as-board-moving {\r\n    transform-origin: 30% 55%;\r\n    transform: rotate(5deg);\r\n    transition: transform 0.05s;\r\n    user-select: none;\r\n    pointer-events: none;\r\n    position: fixed !important;\r\n    z-index: 2000;\r\n}\r\n\r\n\r\n.as-board-place-holder {\r\n    opacity: 0.3;\r\n}\r\n\r\n.as-board-table-prevent-context {\r\n    position: fixed;\r\n    --x: -10000px;\r\n    --y: -10000px;\r\n    left: calc(var(--x) - 100px);\r\n    top: calc(var(--y) - 100px);\r\n    opacity: 0;\r\n    z-index: 100000000;\r\n    width: 200px;\r\n    height: 200px;\r\n    cursor: default;\r\n    -webkit-user-select: none;\r\n    -webkit-touch-callout: none;\r\n    -khtml-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    -o-user-select: none;\r\n}", ""]);



/***/ }),

/***/ 19001:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "/* OLD module */\r\n\r\n.absol-bscroller {\r\n    scrollbar-width: thin;\r\n    scrollbar-color: rgba(151, 151, 151, 0.4) rgba(220, 220, 220, 0.4);\r\n    overflow: auto;\r\n}\r\n\r\n\r\n.absol-bscroller::-webkit-scrollbar {\r\n    width: 6px;\r\n    height: 6px;\r\n}\r\n\r\n.absol-bscroller::-webkit-scrollbar-track {\r\n    background: rgba(220, 220, 220, 0.4);\r\n}\r\n\r\n.absol-bscroller::-webkit-scrollbar-thumb {\r\n    background: rgba(182, 182, 182, 0.4);\r\n}\r\n\r\n.absol-bscroller::-webkit-scrollbar-thumb:hover {\r\n    background: rgba(32, 32, 32, 0.4);\r\n}\r\n\r\n.absol-bscroller::-webkit-scrollbar-thumb:active {\r\n    background: rgba(13, 13, 13, 0.6);\r\n}\r\n\r\n.absol-bscroller.dark,\r\n.dark .absol-bscroller {\r\n    scrollbar-color: rgba(104, 104, 104, 0.4) rgba(35, 35, 35, 0.4);\r\n}\r\n\r\n\r\n.absol-bscroller.dark::-webkit-scrollbar-track,\r\n.dark .absol-bscroller::-webkit-scrollbar-track {\r\n    background: rgba(35, 35, 35, 0.4);\r\n}\r\n\r\n.absol-bscroller.dark::-webkit-scrollbar-thumb,\r\n.dark .absol-bscroller::-webkit-scrollbar-thumb {\r\n    background: rgba(73, 73, 73, 0.4);\r\n}\r\n\r\n.absol-bscroller.dark::-webkit-scrollbar-thumb:hover,\r\n.dark .absol-bscroller::-webkit-scrollbar-thumb:hover {\r\n    background: rgba(223, 223, 223, 0.4);\r\n}\r\n\r\n.absol-bscroller.dark::-webkit-scrollbar-thumb:active,\r\n.dark .absol-bscroller::-webkit-scrollbar-thumb:active {\r\n    background: rgba(242, 242, 242, 0.6);\r\n}\r\n\r\n/*******************************************/\r\n.as-bscroller {\r\n    scrollbar-width: thin;\r\n    scrollbar-color: rgba(151, 151, 151, 0.4) rgba(220, 220, 220, 0.4);\r\n}\r\n\r\n\r\n.as-bscroller::-webkit-scrollbar {\r\n    width: 6px;\r\n    height: 6px;\r\n}\r\n\r\n.as-bscroller::-webkit-scrollbar-track {\r\n    background: rgba(220, 220, 220, 0.4);\r\n}\r\n\r\n.as-bscroller::-webkit-scrollbar-thumb {\r\n    background: rgba(182, 182, 182, 0.4);\r\n}\r\n\r\n.as-bscroller::-webkit-scrollbar-thumb:hover {\r\n    background: rgba(32, 32, 32, 0.4);\r\n}\r\n\r\n.as-bscroller::-webkit-scrollbar-thumb:active {\r\n    background: rgba(13, 13, 13, 0.6);\r\n}\r\n\r\n.as-bscroller.dark,\r\n.dark .as-bscroller,\r\n.as-dark .as-bscroller,\r\n.as-dark.as-bscroller\r\n{\r\n    scrollbar-color: rgba(104, 104, 104, 0.4) rgba(150, 150, 150, 0.4);\r\n}\r\n\r\n\r\n.as-bscroller.dark::-webkit-scrollbar-track,\r\n.dark .as-bscroller::-webkit-scrollbar-track,\r\n.as-dark .as-bscroller::-webkit-scrollbar-track,\r\n.as-dark.as-bscroller::-webkit-scrollbar-track\r\n{\r\n    background: rgba(150, 150, 150, 0.4);\r\n}\r\n\r\n.as-bscroller.dark::-webkit-scrollbar-thumb,\r\n.dark .as-bscroller::-webkit-scrollbar-thumb,\r\n.as-dark .as-bscroller::-webkit-scrollbar-thumb,\r\n.as-dark.as-bscroller::-webkit-scrollbar-thumb\r\n{\r\n    background: rgba(104, 104, 104, 0.4);\r\n}\r\n\r\n.as-bscroller.dark::-webkit-scrollbar-thumb:hover,\r\n.dark .as-bscroller::-webkit-scrollbar-thumb:hover,\r\n.as-dark .as-bscroller::-webkit-scrollbar-thumb:hover,\r\n.as-dark.as-bscroller::-webkit-scrollbar-thumb:hover\r\n{\r\n    background: rgba(223, 223, 223, 0.4);\r\n}\r\n\r\n.as-bscroller.dark::-webkit-scrollbar-thumb:active,\r\n.dark .as-bscroller::-webkit-scrollbar-thumb:active,\r\n.as-dark .as-bscroller::-webkit-scrollbar-thumb:active,\r\n.as-dark.as-bscroller::-webkit-scrollbar-thumb:active\r\n{\r\n    background: rgba(242, 242, 242, 0.6);\r\n}", ""]);



/***/ }),

/***/ 1682:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-button-array {\r\n    font-size: 1rem;\r\n    border: 1px solid #006ce5;\r\n    display: inline-block;\r\n    border-radius: 0.2em;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-button-array-item {\r\n    text-align: center;\r\n    font-size: inherit;\r\n    height: 2em;\r\n    border: none;\r\n    box-sizing: border-box;\r\n    padding-left: 0.35714em;\r\n    padding-right: 0.35714em;\r\n    outline: none;\r\n    color: #006ce5;\r\n    background-color: white;\r\n    border-radius: 0;\r\n    transition: background-color 0.1s, color 0.1s;\r\n    margin: 0;\r\n}\r\n\r\n.as-button-array-item:not(:first-child) {\r\n    border-left: 1px solid #006ce5;\r\n    border-right: none;\r\n}\r\n\r\n\r\n.as-button-array-item.as-active {\r\n    color: white;\r\n    background-color: #006ce5;\r\n}", ""]);



/***/ }),

/***/ 71843:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-button-range-wrapper {\r\n    border-top: 1px solid rgb(209, 209, 213);\r\n    border-bottom: 1px solid rgb(209, 209, 213);\r\n}\r\n\r\n.as-button-range {\r\n    position: relative;\r\n    overflow-y: hidden;\r\n    height: var(--height);\r\n    box-sizing: border-box;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    --underline-left: 0;\r\n    --underline-width: 0;\r\n    --height: 2em;\r\n}\r\n\r\n.as-button-range-scroller {\r\n    font-size: inherit;\r\n    height: calc(var(--height) + 17px);\r\n    box-sizing: border-box;\r\n    overflow-x: scroll;\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0.5em;\r\n    right: 0.5em;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-button-range-scroller::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: var(--underline-left);\r\n    width: var(--underline-width);\r\n    height: 0.2em;\r\n    top: calc(var(--height) - 0.2em);\r\n    background-color: rgb(0, 106, 255);\r\n    transition: left 0.2s, width 0.2s;\r\n}\r\n\r\n.as-button-range-left-ctn,\r\n.as-button-range-right-ctn {\r\n    position: absolute;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.as-button-range-right-ctn::after,\r\n.as-button-range-left-ctn::before {\r\n    content: \"\";\r\n    height: 100%;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-button-range-left-ctn {\r\n    left: 0;\r\n}\r\n\r\n.as-button-range-right-ctn {\r\n    right: 0;\r\n}\r\n\r\n.as-button-range-right-btn,\r\n.as-button-range-left-btn {\r\n    font-size: inherit;\r\n    padding: 0;\r\n    margin: 0;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    border: none;\r\n    outline: none;\r\n    color: rgb(0, 106, 266);\r\n    background-color: rgba(255, 255, 255, 0.5);\r\n    border-radius: 0.5em;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-button-range-left-btn {\r\n    -webkit-box-shadow: 1em 2px 1.5em -1em rgba(255, 255, 255, 0.62);\r\n    -moz-box-shadow: 1em 2px 1.5em -1em rgba(255, 255, 255, 0.62);\r\n    box-shadow: 1em 2px 1.5em -1em rgba(255, 255, 255, 0.62);\r\n}\r\n\r\n.as-button-range-right-btn {\r\n    -webkit-box-shadow: -1em 2px 1.5em -1em rgba(255, 255, 255, 0.62);\r\n    -moz-box-shadow: -1em 2px 1.5em -1em rgba(255, 255, 255, 0.62);\r\n    box-shadow: -1em 2px 1.5em -1em rgba(255, 255, 255, 0.62);\r\n}\r\n\r\n.as-button-range-right-btn polygon,\r\n.as-button-range-left-btn polygon {\r\n    fill: #2488FF;\r\n}\r\n\r\n.as-button-range-right-btn:disabled,\r\n.as-button-range-left-btn:disabled {\r\n    display: none;\r\n}\r\n\r\n.as-button-range-left-btn > svg,\r\n.as-button-range-right-btn > svg {\r\n    width: 1.25em;\r\n    height: 1.25em;\r\n    margin-left: -0.25em;\r\n    margin-right: -0.25em;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.as-button-range-item {\r\n    outline: none;\r\n    font-size: inherit;\r\n    padding: 0 0.5em;\r\n    margin: 0;\r\n    height: var(--height);\r\n    border: none;\r\n    background-color: transparent;\r\n    color: black;\r\n}\r\n\r\n.as-button-range-item.as-active {\r\n    color: rgb(87, 157, 255);\r\n}", ""]);



/***/ }),

/***/ 26106:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-calendar-input {\r\n    font-size: 1rem;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    width: 7em;\r\n    height: 2em;\r\n    box-sizing: content-box;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    border: solid 1px #d6d6d6;\r\n    border-radius: 0.2em;\r\n}\r\n\r\n.absol-calendar-input.as-border-none {\r\n    border: none;\r\n}\r\n\r\n.absol-calendar-input.as-border-none > input {\r\n    text-align: left;\r\n    padding-left: 0;\r\n}\r\n\r\n.absol-calendar-input > input {\r\n    text-align: center;\r\n    width: 100%;\r\n    height: 100%;\r\n    outline: none;\r\n    border: none;\r\n    background: transparent;\r\n    padding: 0;\r\n    font: inherit;\r\n}\r\n\r\n.absol-calendar-input:not(.as-read-only) input {\r\n    cursor: pointer;\r\n}\r\n\r\n.absol-calendar-input:not(.as-read-only) > input:hover,\r\n.absol-calendar-input:not(.as-read-only) > input:focus {\r\n    color: red;\r\n}\r\n\r\n.absol-calendar-input.absol-disabled {\r\n    pointer-events: none;\r\n    background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.absol-calendar-input.absol-disabled input {\r\n    color: var(--as-disabled-text-color);\r\n}\r\n", ""]);



/***/ }),

/***/ 23368:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "/** align middle in table cell **/\r\n.KPIsimpletableclass td > .absol-checkbox:first-child:last-child,\r\n.KPIsimpletableclass td > .absol-checkbox.as-no-label:first-child:last-child .as-checkbox-input {\r\n    display: block;\r\n    margin: auto;\r\n}\r\n\r\n.cardsimpletableclass > table > tbody > tr > td > .absol-checkbox:first-child:last-child {\r\n    display: block;\r\n}\r\n\r\n.absol-checkbox {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    line-height: 16px;\r\n}\r\n\r\n.absol-checkbox:not(.as-read-only):not(.as-disabled) {\r\n    cursor: pointer;\r\n    user-select: none;\r\n}\r\n\r\n.absol-checkbox.right > .absol-checkbox-label.as-right {\r\n    display: none;\r\n}\r\n\r\n\r\n.absol-checkbox:not(.right) > .absol-checkbox-label.as-left {\r\n    display: none;\r\n}\r\n\r\n.absol-checkbox-label {\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n}\r\n\r\n\r\n.absol-checkbox-label.as-left {\r\n    padding-right: 0.3em;\r\n}\r\n\r\n\r\n.absol-checkbox-label.as-right {\r\n    padding-left: 0.3em;\r\n}\r\n\r\n.absol-checkbox.as-no-label {\r\n    width: calc(1em + 2px);\r\n    height: calc(1em + 2px);\r\n}\r\n\r\n\r\n.absol-checkbox.as-no-label .absol-checkbox-label {\r\n    display: none;\r\n}\r\n\r\n.absol-checkbox.as-no-label .as-checkbox-input {\r\n    display: block;\r\n}\r\n\r\n.absol-checkbox.as-disabled .absol-checkbox-label {\r\n    color: var(--as-disabled-text-color);\r\n}\r\n\r\n\r\n.absol-checkbox.as-wrap-text {\r\n    white-space: nowrap;\r\n}\r\n\r\n.absol-checkbox.as-wrap-text .absol-checkbox-label {\r\n    white-space: normal;\r\n}\r\n\r\n.absol-checkbox.as-wrap-text > * {\r\n    vertical-align: top;\r\n}\r\n\r\n.absol-checkbox.as-wrap-text .absol-checkbox-label {\r\n    max-width: calc(100% - 24px);\r\n}\r\n\r\n.absol-checkbox.as-read-only .as-checkbox-input {\r\n    pointer-events: none;\r\n}\r\n\r\n.absol-checkbox.as-read-only.as-border-none .bound {\r\n    display: none;\r\n}", ""]);



/***/ }),

/***/ 2943:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-checkbox-button{\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-checkbox-button .absol-checkbox-icon{\r\n    display: block;\r\n}", ""]);



/***/ }),

/***/ 76241:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ":root {\r\n    --candy-border-color: #929292;\r\n    --candy-hover-background-color: #eeeee9;\r\n    --candy-disabled-background-color: #ebebe4;\r\n}\r\n\r\nlabel.as-checkbox-input {\r\n    display: inline-block;\r\n    position: relative;\r\n    width: calc(1em + 2px);\r\n    height: calc(1em + 2px);\r\n    font-size: inherit;\r\n    box-sizing: border-box;\r\n    vertical-align: middle;\r\n    border-radius: 0.25em;\r\n    padding: 0;\r\n    margin: 0; /*fix boostrap override*/\r\n    overflow: hidden;\r\n}\r\n\r\n.as-checkbox-input:not(.as-read-only):not(.as-disabled){\r\n    cursor: pointer;\r\n}\r\n\r\n\r\nlabel.as-checkbox-input:hover:not(.as-read-only) .bound,\r\n.absol-checkbox:hover:not(.as-read-only) .bound {\r\n    fill: var(--candy-hover-background-color);\r\n}\r\n\r\n.as-checkbox-input .tick,\r\n.as-checkbox-input .minus {\r\n    fill: #606060;\r\n}\r\n\r\n\r\n.as-checkbox-input input.as-checkbox-input-value {\r\n    font-size: inherit;\r\n    position: absolute;\r\n    right: 100%;\r\n    top: 0;\r\n    opacity: 0.0;\r\n    z-index: -100000000000;\r\n}\r\n\r\ninput.as-checkbox-input-value:not(:checked) ~ svg .tick {\r\n    opacity: 0;\r\n}\r\n\r\n.as-checkbox-input.as-has-minus .minus {\r\n    opacity: 1;\r\n}\r\n\r\n.as-checkbox-input .minus,\r\ninput.as-checkbox-input-value:checked ~ svg .minus {\r\n    opacity: 0;\r\n}\r\n\r\n\r\nlabel.as-checkbox-input .bound {\r\n    stroke: var(--candy-border-color);\r\n    fill: white;\r\n}\r\n\r\nlabel.as-checkbox-input .tick {\r\n    opacity: 1;\r\n    transition: opacity 0.1s;\r\n}\r\n\r\nlabel.as-checkbox-input .minus {\r\n    transition: opacity 0.1s;\r\n}\r\n\r\nlabel.as-checkbox-input.as-disabled > svg .bound,\r\nlabel.as-checkbox-input.as-disabled:hover > svg .bound {\r\n    stroke: #929292;\r\n    fill: #ebebe4;\r\n}\r\n\r\n\r\n.as-checkbox-input > svg {\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n.as-checkbox-input.as-read-only.as-border-none .bound{\r\n    display: none;\r\n}", ""]);



/***/ }),

/***/ 16172:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-check-list-box.as-select-list-box {\r\n    width: calc(var(--select-list-estimate-width) + 2px + 5px + 23px + 7px);\r\n    --as-width-limit: calc(100vw - 20px);\r\n}\r\n\r\n.as-check-list-box.as-select-list-box.as-enable-search .as-select-list-box-scroller {\r\n    max-height: calc(var(--max-height) - 2em - 10px - 2em - 1px);\r\n}\r\n\r\n.as-check-list-box.as-select-list-box .as-select-list-box-scroller {\r\n    max-height: calc(var(--max-height) - 2em - 1px);\r\n}\r\n\r\n\r\n.as-check-list-box.as-select-list-box .absol-selectlist-item-text {\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    max-width: calc(var(--as-width-limit) - 0.7em - 2.5em);\r\n}\r\n", ""]);



/***/ }),

/***/ 72254:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-check-list-item {\r\n    padding-left: 0.35em;\r\n    height: calc(30rem / 14);\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n}\r\n\r\n.as-check-list-item-checkbox {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-check-list-item-checkbox .as-checkbox-input-check-icon{\r\n    display: block;\r\n\r\n}\r\n\r\n.absol-selectlist-item.as-check-list-item > span {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    line-height: calc(30rem / 14);\r\n}\r\n\r\n.absol-selectlist-item.as-check-list-item .absol-selectlist-item-desc {\r\n    line-height: calc(25rem / 14);\r\n}\r\n\r\n.as-check-list-item.as-no-select .as-check-list-item-checkbox {\r\n    visibility: hidden;\r\n}\r\n\r\n.as-check-list-item.as-no-select {\r\n    pointer-events: none;\r\n}", ""]);



/***/ }),

/***/ 75021:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-select-list-box-page > .as-check-tree-item {\r\n    width: 100%;\r\n}\r\n\r\n.as-check-tree-box {\r\n    min-width: 18em;\r\n}\r\n\r\n.as-check-tree-box.as-no-transition label.as-checkbox-input .minus,\r\n.as-check-tree-box.as-no-transition label.as-checkbox-input .tick {\r\n    transition: none;\r\n}\r\n\r\n\r\n.as-check-tree-box.as-select-list-box.as-enable-search .as-select-list-box-scroller {\r\n    max-height: calc(var(--max-height) - 2em - 10px - 2em - 1px);\r\n}\r\n\r\n.as-check-tree-box.as-select-list-box .as-select-list-box-scroller {\r\n    max-height: calc(var(--max-height) - 2em - 1px);\r\n}\r\n\r\n/***********************************************************************************************************************/\r\n\r\n.am-check-tree-box .as-dropdown-box-footer,\r\n.am-check-tree-box\r\n{\r\n    min-width: 18em;\r\n}\r\n\r\n.am-check-tree-box-list {\r\n    --text-width: 100%;\r\n    --desc-width: 0;\r\n}\r\n\r\n.am-check-tree-box-modal:not(.as-enable-search) .absol-search-text-input {\r\n    visibility: hidden;\r\n    opacity: 0;\r\n    pointer-events: none;\r\n}\r\n\r\n.am-check-tree-box .as-check-tree-box-scroller {\r\n    max-height: calc(100vh - var(--modal-margin-top) - 100px);\r\n}\r\n\r\n.am-check-tree-box {\r\n    width: var(--select-list-estimate-width);\r\n    /*max-width: calc(100vw - 20px);*/\r\n}\r\n\r\n.am-check-tree-box .as-check-tree-box-content {\r\n    /*max-width: calc(100vw - 20px);*/\r\n}\r\n\r\n.am-check-tree-box.as-has-desc {\r\n    --text-width: 50%;\r\n    --desc-width: 50%;\r\n}\r\n\r\n\r\n.am-check-tree-box-body {\r\n    overflow-y: auto;\r\n    max-height: calc(80vh - 2em);\r\n}\r\n\r\n.am-check-tree-box.as-enable-search .am-check-tree-box-body {\r\n    max-height: calc(80vh - 4em - 10px);\r\n}\r\n\r\n.am-check-tree-item {\r\n    display: block;\r\n    white-space: nowrap;\r\n    position: relative;\r\n    width: 100%;\r\n    overflow: hidden;\r\n    --level: 0;\r\n    --icon-width: 0px;\r\n}\r\n\r\n\r\n.am-check-tree-item.as-has-icon {\r\n    --icon-width: 2.7em;\r\n}\r\n\r\n\r\n.am-check-tree-item-toggle-ctn,\r\n.am-check-tree-item-icon-ctn,\r\n.am-check-tree-item-checkbox-ctn {\r\n    position: absolute;\r\n    white-space: nowrap;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.am-check-tree-item-toggle-ctn {\r\n    left: calc(2em * var(--level) + 0.2em);\r\n    width: 1.5em;\r\n    text-align: center;\r\n}\r\n\r\n.am-check-tree-item-toggle-ctn > svg {\r\n    width: 0.7em;\r\n    height: 0.7em;\r\n}\r\n\r\n\r\n.am-check-tree-item-icon-ctn {\r\n    left: calc(2em * var(--level) + 3.2em);\r\n}\r\n\r\n.am-check-tree-item-checkbox-ctn {\r\n    left: calc(2em * var(--level) + 1.7em)\r\n}\r\n\r\n.am-check-tree-item-icon-ctn > svg {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n\r\n}\r\n\r\n\r\n.am-check-tree-item.as-status-open svg .toggle-close,\r\n.am-check-tree-item.as-status-close svg .toggle-open,\r\n.am-check-tree-item:not(.as-status-close):not(.as-status-open) .am-check-tree-item-toggle-ctn {\r\n    display: none;\r\n}\r\n\r\n.am-check-tree-item-icon-ctn::before,\r\n.am-check-tree-item-toggle-ctn::before,\r\n.am-check-tree-item-checkbox-ctn::before {\r\n    content: \"\";\r\n    height: 100%;\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n}\r\n\r\n.am-check-tree-item-icon-ctn:empty {\r\n    display: none;\r\n}\r\n\r\n.am-check-tree-item-icon-ctn > span {\r\n    font-size: 1.8em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.am-check-tree-item-icon-ctn img,\r\n.am-check-tree-item-icon-ctn svg {\r\n    width: 1.8em;\r\n    height: 1.8em;\r\n    display: inline-block;\r\n}\r\n\r\n\r\n.am-check-tree-item-text {\r\n    width: var(--text-width);\r\n    box-sizing: border-box;\r\n    padding: 0.3em 0.5em 0.3em calc(3em + 2em * var(--level) + var(--icon-width));\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    line-height: 1.5;\r\n    white-space: normal;\r\n}\r\n\r\n\r\n.am-check-tree-item-desc {\r\n    display: none;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.am-check-tree-leaf-item:not(.as-is-leaf) .am-check-tree-item-checkbox-ctn {\r\n    display: none;\r\n}\r\n\r\n.am-check-tree-leaf-item:not(.as-is-leaf) .am-check-tree-item-text {\r\n    padding: 0.3em 0.5em 0.3em calc(2em * var(--level) + var(--icon-width) + 1em);\r\n}\r\n\r\n.am-check-tree-leaf-item:not(.as-is-leaf) .am-check-tree-item-icon-ctn {\r\n    left: calc(2em * var(--level) + 1.5em);\r\n}\r\n\r\n.am-check-tree-box-list.as-has-desc .am-check-tree-item-desc {\r\n    display: inline-block;\r\n}\r\n\r\n.am-check-tree-box.as-leaf-only .am-check-tree-item:not(.as-has-leaf) .as-checkbox-input {\r\n    pointer-events: none;\r\n    opacity: 0.2;\r\n}\r\n\r\n\r\n.am-check-tree-box.as-leaf-only:not(.as-has-leaf) .as-select-list-box-check-all {\r\n    pointer-events: none;\r\n    color: var(--as-disabled-text-color);\r\n}\r\n\r\n.am-check-tree-box.as-leaf-only:not(.as-has-leaf) .as-select-list-box-check-all label.as-checkbox-input .bound {\r\n    stroke: #929292;\r\n    fill: #ebebe4;\r\n}\r\n\r\n.as-multi-select-menu-item-ctn:empty::before {\r\n    position: absolute;\r\n    left: 0;\r\n    top: calc(50% - 1em);\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    padding: 0 5px;\r\n    line-height: 2;\r\n}\r\n\r\n.as-multi-select-menu-item-ctn:not(:empty):before,\r\n.as-multi-select-menu.as-read-only .as-multi-select-menu-item-ctn::before,\r\n.as-multi-select-menu.as-disabled .as-multi-select-menu-item-ctn::before {\r\n    display: none;\r\n}\r\n\r\n.as-multi-select-menu-item-ctn[data-placeholder]:empty::before {\r\n    content: attr(data-placeholder);\r\n}\r\n", ""]);



/***/ }),

/***/ 4334:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-check-tree-item {\r\n    font-size: inherit;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    height: 2em;\r\n}\r\n\r\n.as-check-tree-item:focus {\r\n    background-color: unset;\r\n}\r\n\r\n.as-check-tree-item:hover:focus {\r\n    background-color: rgba(169, 169, 172, 0.1);\r\n}\r\n\r\n.as-check-tree-item .as-checkbox-input {\r\n    margin-right: 0.35em;\r\n}\r\n\r\n.as-check-tree-item.as-no-select .as-checkbox-input,\r\n.absol-checkbox.as-no-select {\r\n    pointer-events: none;\r\n    opacity: 0.3;\r\n}\r\n\r\n.as-check-tree-item.as-no-select .as-checkbox-input .bound,\r\n.absol-checkbox.as-no-select .bound {\r\n    stroke: #929292;\r\n    fill: #ebebe4;\r\n}\r\n\r\n.as-check-tree-item.as-no-select .as-checkbox-input .tick,\r\n.as-check-tree-item.as-no-select .as-checkbox-input .minus,\r\n.absol-checkbox.as-no-select .tick,\r\n.absol-checkbox.as-no-select .minus {\r\n    display: none;\r\n    opacity: 0;\r\n    visibility: hidden;\r\n}\r\n\r\n.as-check-tree-item.as-check-unsafe-tree-item {\r\n    padding-right: 45px;\r\n}\r\n\r\n.as-check-unsafe-tree-item .as-check-unsafe-tree-item-action-ctn {\r\n    display: none;\r\n    position: absolute;\r\n    height: 20px;\r\n    right: 5px;\r\n    top: calc(50% - 10px);\r\n    --as-transparent-button-text-color: rgba(107, 107, 108, 0.3);\r\n}\r\n\r\n/*.as-check-unsafe-tree-item.status-close .as-check-unsafe-tree-item-action-ctn,*/\r\n/*.as-check-unsafe-tree-item.status-open .as-check-unsafe-tree-item-action-ctn*/\r\n/*{*/\r\n/*    display: block;*/\r\n/*}*/\r\n\r\n\r\n.as-check-unsafe-tree-item-action-ctn >button{\r\n    width: 25px;\r\n    height: 20px;\r\n}\r\n\r\n/*.as-check-unsafe-tree-item-action-ctn >button:not(:first-child) {*/\r\n/*    margin-left: 5px;*/\r\n/*}*/\r\n\r\n.absol-checkbox.as-no-select {\r\n    visibility: hidden;\r\n}", ""]);



/***/ }),

/***/ 63909:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-chrome-calendar {\r\n    display: inline-block;\r\n    font-family: Helvetica, Arial, sans-serif;\r\n    font-size: 1rem;\r\n    padding: 0.6em;\r\n    border: solid 1px rgb(191, 191, 191);\r\n    box-shadow: 1px 1px 2px rgb(240, 240, 240);\r\n    z-index: 100;\r\n    touch-action: manipulation;\r\n    user-select: none;\r\n    background-color: rgb(255, 255, 255);\r\n    white-space: initial;\r\n    outline: none;\r\n}\r\n\r\n.absol-chrome-calendar * {\r\n    font-size: inherit;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-header {\r\n    white-space: nowrap;\r\n    position: relative;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-title {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.absol-chrome-calendar-header-buttons {\r\n    position: absolute;\r\n    top: 0;\r\n    bottom: 0;\r\n    right: 0;\r\n}\r\n\r\n.absol-chrome-calendar-header-buttons > button {\r\n    font-size: 1em;\r\n    width: 1.5em;\r\n    height: 1.5em;\r\n    padding: 0;\r\n    border-radius: 0.2em;\r\n    border: solid 1px rgb(167, 167, 167);\r\n    background: linear-gradient(rgb(240, 240, 240), rgb(233, 233, 233), rgb(223, 223, 223));\r\n    cursor: pointer;\r\n    outline: none;\r\n    box-shadow: 1px 1px 2px #aaa;\r\n    color: rgb(110, 110, 110);\r\n}\r\n\r\n.absol-chrome-calendar-header-buttons > button:nth-child(2) {\r\n    margin-left: 0.2em;\r\n    margin-right: 0.2em;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-header-buttons > button:active {\r\n    box-shadow: 0px 0px 2px #aaa;\r\n\r\n}\r\n\r\n.absol-chrome-calendar:not(.view-era) .absol-chrome-calendar-title {\r\n    cursor: pointer;\r\n}\r\n\r\n.absol-chrome-calendar-title::after {\r\n    content: \"\\25BC\";\r\n}\r\n\r\n.absol-chrome-calendar[data-view=\"era\"] .absol-chrome-calendar-title::after {\r\n    content: \"\";\r\n}\r\n\r\n.absol-chrome-calendar-title > span {\r\n    line-height: 1.5em;\r\n    min-width: 5em;\r\n    display: inline-block;\r\n}\r\n\r\n.absol-chrome-calendar-instance {\r\n    margin-top: 1em;\r\n    border: solid 1px rgb(140, 140, 140);\r\n    width: calc(14em + 2px);\r\n    position: relative;\r\n    height: calc(8.4em + 3px);\r\n    overflow: hidden;\r\n    box-sizing: border-box;\r\n    /*border*/\r\n}\r\n\r\n.absol-chrome-calendar-dayofweek {\r\n    background-color: rgb(241, 241, 241);\r\n    height: 1.2em;\r\n    white-space: nowrap;\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    z-index: 10;\r\n}\r\n\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-dayofweek::before {\r\n    content: \"wk\";\r\n    text-align: center;\r\n    line-height: 1.2;\r\n    display: inline-block;\r\n    color: rgb(130, 130, 255);\r\n    border-bottom: solid 1px rgb(191, 191, 191);\r\n    border-right: solid 1px rgb(191, 191, 191);\r\n    box-sizing: border-box;\r\n    width: 12.5%;\r\n}\r\n\r\n.absol-chrome-calendar-dayofweek > div {\r\n    text-align: center;\r\n    line-height: 1.2;\r\n    display: inline-block;\r\n    width: calc(100% / 7);\r\n    border-bottom: solid 1px rgb(191, 191, 191);\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-dayofweek > div {\r\n    width: 12.5%;\r\n}\r\n\r\n.absol-chrome-calendar-month-animation-container {\r\n    position: absolute;\r\n    transition: top 0.2s;\r\n}\r\n\r\n.absol-chrome-calendar-month-animation-container.old {\r\n    z-index: 7;\r\n    /* background: red; */\r\n}\r\n\r\n.absol-chrome-calendar-month-animation-container.new {\r\n    z-index: 8;\r\n    /* background: blue; */\r\n}\r\n\r\n.absol-chrome-calendar-month-animation-container > .absol-chrome-calendar-month {\r\n    width: 100%;\r\n    height: 100%;\r\n    margin-top: -1px;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-month {\r\n    width: 100%;\r\n    margin-top: 1.2em;\r\n    background-color: white;\r\n    /*for header*/\r\n}\r\n\r\n.absol-chrome-calendar-month.as-animation {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    width: 100%;\r\n    margin: 0;\r\n    z-index: 8;\r\n    transition: top 0.2s;\r\n    /*opacity: 0.5;*/\r\n}\r\n\r\n.absol-chrome-calendar-month.as-animation div {\r\n    pointer-events: none;\r\n    transition: color 0.2s;\r\n}\r\n\r\n.absol-chrome-calendar[data-view=\"month\"] .absol-chrome-calendar-month {\r\n    display: table;\r\n}\r\n\r\n.absol-chrome-calendar[data-view=\"month\"] .absol-chrome-calendar-dayofweek {\r\n    display: block;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-week-in-month {\r\n    display: table-row;\r\n    height: 1.2em;\r\n}\r\n\r\n.absol-chrome-calendar-week-in-month > div::before {\r\n    content: attr(data-date);\r\n}\r\n\r\n\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-week-in-month::before {\r\n    content: attr(data-week-idx-text);\r\n    display: table-cell;\r\n    text-align: right;\r\n    padding-right: 0.4em;\r\n    color: rgb(130, 130, 255);\r\n    text-shadow: 1px 0 0 currentColor;\r\n    border-right: solid 1px rgb(191, 191, 191);\r\n    width: 12.5%;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-week-in-month > div {\r\n    display: table-cell;\r\n    text-align: right;\r\n    padding-right: 0.4em;\r\n    cursor: pointer;\r\n    box-sizing: border-box;\r\n    width: calc(100% / 7);\r\n}\r\n\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-week-in-month > div {\r\n    width: calc(100% / 8);\r\n}\r\n\r\n\r\n.absol-chrome-calendar[data-level=\"day\"] .absol-chrome-calendar-week-in-month > div:hover,\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-week-in-month.as-hover-in-year > div:not(.as-not-in-year),\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-week-in-month.as-hover-in-year::before,\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-week-in-month.as-hover-not-in-year > .as-not-in-year\r\n{\r\n    background-color: rgb(224, 245, 256);\r\n}\r\n\r\n.absol-chrome-calendar[data-level=\"day\"] .absol-chrome-calendar-not-in-month:not(.as-disabled),\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-not-in-month:not(.as-disabled) {\r\n    color: rgb(140, 140, 140);\r\n}\r\n\r\n.absol-chrome-calendar-today {\r\n    border: inset 1px rgb(191, 191, 191);\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-chrome-calendar-selected,\r\n.absol-chrome-calendar[data-level=\"week\"] .as-week-selected,\r\n.absol-chrome-calendar[data-level=\"quarter\"] .as-quarter-selected,\r\n.absol-chrome-calendar[data-level=\"week\"] .absol-chrome-calendar-week-in-month.as-selected::before\r\n{\r\n    background-color: rgb(188, 205, 236) !important;\r\n}\r\n\r\n.absol-chrome-calendar[data-level=\"week\"] .as-week-selected .absol-chrome-calendar-selected {\r\n    background-color: transparent;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-years {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    z-index: 1;\r\n}\r\n\r\n.absol-chrome-calendar:not([data-view=\"year\"]) .absol-chrome-calendar-years {\r\n    z-index: -10000;\r\n    opacity: 0;\r\n    visibility: hidden;\r\n}\r\n\r\n.absol-chrome-calendar.view-year .absol-chrome-calendar-instance {\r\n    border-color: rgb(77, 114, 254)\r\n}\r\n\r\n.absol-chrome-calendar-month,\r\n.absol-chrome-calendar-dayofweek,\r\n.absol-chrome-calendar-era {\r\n    display: none;\r\n}\r\n\r\n\r\n.absol-chrome-calendar:not(.view-month) .absol-chrome-calendar-title {\r\n    color: rgb(191, 191, 191);\r\n}\r\n\r\n\r\n.absol-chrome-calendar-year {\r\n    overflow: hidden;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-year-head {\r\n    background-color: rgb(241, 241, 241);\r\n    border-bottom: solid 1px rgb(191, 191, 191);\r\n    height: 1.5em;\r\n    text-align: center;\r\n    line-height: 1.5em;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n.absol-chrome-calendar-year:last-child .absol-chrome-calendar-year-head {\r\n    border-bottom: solid 1px rgb(191, 191, 191);\r\n}\r\n\r\n.absol-chrome-calendar-year.start-opening .absol-chrome-calendar-year-months,\r\n.absol-chrome-calendar-year.closing .absol-chrome-calendar-year-months {\r\n    margin-bottom: -6em;\r\n    transition: margin-bottom linear 0.1s;\r\n}\r\n\r\n.absol-chrome-calendar-year.opening .absol-chrome-calendar-year-months,\r\n.absol-chrome-calendar-year.start-closing .absol-chrome-calendar-year-months {\r\n    margin-bottom: 0;\r\n    transition: margin-bottom linear 0.1s;\r\n\r\n}\r\n\r\n.absol-chrome-calendar-year-months {\r\n    width: 100%;\r\n    display: table;\r\n    height: calc(6em + 1px);\r\n    border-bottom: solid 1px rgb(191, 191, 191);\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-chrome-calendar-year-row-months {\r\n    display: table-row;\r\n    line-height: 1.5;\r\n    height: 2em;\r\n}\r\n\r\n.absol-chrome-calendar-year-month {\r\n    text-align: center;\r\n    display: table-cell;\r\n    vertical-align: middle;\r\n}\r\n\r\n.absol-chrome-calendar-year-month:hover,\r\n.absol-chrome-calendar-era-year:hover,\r\n.absol-chrome-calendar[data-level=\"quarter\"] .absol-chrome-calendar-years-content[data-hover-quarter=\"0\"] .absol-chrome-calendar-year-month[data-quarter=\"0\"],\r\n.absol-chrome-calendar[data-level=\"quarter\"] .absol-chrome-calendar-years-content[data-hover-quarter=\"1\"] .absol-chrome-calendar-year-month[data-quarter=\"1\"],\r\n.absol-chrome-calendar[data-level=\"quarter\"] .absol-chrome-calendar-years-content[data-hover-quarter=\"2\"] .absol-chrome-calendar-year-month[data-quarter=\"2\"],\r\n.absol-chrome-calendar[data-level=\"quarter\"] .absol-chrome-calendar-years-content[data-hover-quarter=\"3\"] .absol-chrome-calendar-year-month[data-quarter=\"3\"] {\r\n    background-color: rgb(224, 245, 256);\r\n}\r\n\r\n\r\n.absol-chrome-calendar-years:hover .absol-scrollbar {\r\n    opacity: 1;\r\n\r\n}\r\n\r\n.absol-chrome-calendar-years .absol-scrollbar {\r\n    background-color: rgba(169, 169, 172, 0.2);\r\n    opacity: 0;\r\n    transition: opacity 0.2s;\r\n}\r\n\r\n.absol-chrome-calendar-week-in-month > div.as-disabled,\r\n.absol-chrome-calendar-date-disabled,\r\n.absol-chrome-calendar-era-year.absol-chrome-calendar-date-disabled {\r\n    color: rgb(240, 230, 230);\r\n    pointer-events: none;\r\n    cursor: not-allowed;\r\n}\r\n\r\nbutton.absol-chrome-calendar-button-disabled,\r\n.absol-chrome-calendar button:disabled {\r\n    color: rgb(220, 210, 210);\r\n    pointer-events: none;\r\n    box-shadow: none;\r\n    cursor: not-allowed;\r\n}\r\n\r\n.absol-chrome-calendar-era {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    z-index: 1000000;\r\n    /*width: 100%;*/\r\n    /*height: 100%; */\r\n    width: calc(14em + 17px);\r\n    box-sizing: border-box;\r\n    height: 100%;\r\n    background-color: white;\r\n    box-shadow: 0px 0px 1px 0 black;\r\n    overflow-y: scroll;\r\n    overflow-x: hidden;\r\n    font-size: inherit;\r\n}\r\n\r\n.absol-chrome-calendar[data-view=\"era\"] .absol-chrome-calendar-era {\r\n    display: block;\r\n}\r\n\r\n.absol-chrome-calendar[data-level=\"year\"] .absol-chrome-calendar-era {\r\n    display: block;\r\n}\r\n\r\n.absol-chrome-calendar-era-row {\r\n    width: 14em;\r\n    height: 25%;\r\n    white-space: nowrap;\r\n    font-size: inherit;\r\n}\r\n\r\n.absol-chrome-calendar-era-year {\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    height: 100%;\r\n    width: 25%;\r\n    text-align: center;\r\n    line-height: 2.1em;\r\n    font-size: inherit;\r\n    color: rgb(140, 140, 140);\r\n}\r\n\r\n\r\n.absol-chrome-calendar-in-decade:not(.absol-chrome-calendar-date-disabled) {\r\n    color: black;\r\n}\r\n\r\n/*.absol-chrome-calendar-era*/", ""]);



/***/ }),

/***/ 94142:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".ac-time-input.as-time-24-input {\r\n    width: 13em;\r\n}\r\n\r\n.as-chrome-time-24-picker {\r\n    --next-day-h24-width : 120px;\r\n    --minute-width: 60px;\r\n    font-size: 14px;\r\n\r\n}\r\n\r\n.as-chrome-time-24-picker .as-chrome-time-picker-h24 {\r\n    width: var(--next-day-h24-width);\r\n}\r\n\r\n.as-chrome-time-24-picker .as-chrome-time-picker-list.as-chrome-time-picker-m60 {\r\n    width: var(--minute-width);\r\n}\r\n\r\n.as-chrome-time-24-picker-tomorrow-text {\r\n    display: none;\r\n}\r\n\r\n.as-in-tomorrow.as-chrome-time-picker-btn .as-chrome-time-24-picker-tomorrow-text {\r\n    display: initial;\r\n}\r\n\r\n.as-chrome-time-24-picker .as-chrome-time-picker-btn:disabled {\r\n    pointer-events: none;\r\n}", ""]);



/***/ }),

/***/ 85009:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-chrome-time-picker {\r\n    box-sizing: border-box;\r\n    vertical-align: top;\r\n    display: inline-block;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    font-size: 1rem;\r\n    padding: 0.6em;\r\n    border: solid 1px rgb(191, 191, 191);\r\n    box-shadow: 1px 1px 2px rgb(240, 240, 240);\r\n    z-index: 100;\r\n    touch-action: manipulation;\r\n    user-select: none;\r\n    -webkit-user-select: none; /* Safari */\r\n    -moz-user-select: none; /* Firefox */\r\n    -ms-user-select: none;\r\n    background-color: rgb(255, 255, 255);\r\n    /*width: calc(160px + 1.2em);*/\r\n    height: 12.38em;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-chrome-time-picker.as-24h-clock .as-chrome-time-picker-scroller-h12,\r\n.as-chrome-time-picker:not(.as-24h-clock) .as-chrome-time-picker-scroller-h24,\r\n.as-chrome-time-picker.as-24h-clock .as-chrome-time-picker-period {\r\n    display: none;\r\n}\r\n\r\n.as-chrome-time-picker-period {\r\n    padding-top: 1.43em;\r\n    padding-bottom: 1.43em;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-chrome-time-picker > div:not(:first-child) {\r\n    margin-left: 5px;\r\n}\r\n\r\n\r\n.as-chrome-time-picker-scroller {\r\n    position: relative;\r\n    padding-top: 1.43em;\r\n    padding-bottom: 1.43em;\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    height: 100%;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-chrome-time-picker-scroller-up,\r\n.as-chrome-time-picker-scroller-down {\r\n    position: absolute;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 1.43em;\r\n    padding: 0;\r\n    box-sizing: border-box;\r\n    background-color: transparent;\r\n    border-radius: 3px;\r\n    border: none;\r\n    font-size: inherit;\r\n}\r\n\r\n\r\n.as-chrome-time-picker-scroller-up > span,\r\n.as-chrome-time-picker-scroller-down > span {\r\n    font-size: 1.5em;\r\n}\r\n\r\n.as-chrome-time-picker-scroller-up:hover,\r\n.as-chrome-time-picker-scroller-down:hover {\r\n    background-color: rgba(169, 169, 169, 0.2);\r\n}\r\n\r\n.as-chrome-time-picker-scroller-up {\r\n    top: -5px;\r\n}\r\n\r\n.as-chrome-time-picker-scroller-down {\r\n    bottom: -5px;\r\n}\r\n\r\n\r\n.as-chrome-time-picker-viewport {\r\n    width: 3.6em;\r\n    height: 100%;\r\n    overflow: hidden;\r\n    white-space: normal;\r\n    display: inline-block;\r\n    vertical-align: top;\r\n}\r\n\r\n\r\n.as-chrome-time-picker-list.as-chrome-time-picker-m60 {\r\n    width: 120px;\r\n    overflow: hidden;\r\n    position: relative;\r\n}\r\n\r\n.as-chrome-time-picker-list.as-chrome-time-picker-m60>button {\r\n    display: block;\r\n    position: absolute;\r\n    left: 0;\r\n    width: 100%;\r\n    font-size: inherit;\r\n}\r\n\r\n.as-chrome-time-picker-list {\r\n    height: 100%;\r\n    overflow-y: scroll;\r\n    width: calc(100% + 18px);\r\n}\r\n\r\n.as-chrome-time-picker-btn {\r\n    font-size: inherit;\r\n    height: 2em;\r\n    width: 100%;\r\n    padding: 0;\r\n    border: none;\r\n    background-color: transparent;\r\n    color: black;\r\n}\r\n\r\n.as-chrome-time-picker-btn:disabled {\r\n    color: #dddddd;\r\n}\r\n\r\n.as-chrome-time-picker-btn:hover {\r\n    background-color: rgb(224, 245, 256);\r\n}\r\n\r\n.as-chrome-time-picker-btn.as-selected {\r\n    background-color: rgb(188, 205, 236);\r\n    border-radius: 3px;\r\n}\r\n\r\n.as-chrome-time-picker-btn > span {\r\n    font-size: calc(16em / 14);\r\n}\r\n\r\n\r\n\r\n", ""]);



/***/ }),

/***/ 9680:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-circle-section-label {\r\n    position: relative;\r\n    -webkit-print-color-adjust: exact;\r\n    /*friendly print*/\r\n}\r\n\r\n.as-circle-section-label-text {\r\n    position: relative;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    font-size: 1em;\r\n    padding-right: 2.5em;\r\n    color: white;\r\n    font-weight: bold;\r\n    z-index: 2;\r\n}\r\n\r\n\r\n.as-circle-section-label-index {\r\n    position: relative;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    text-align: center;\r\n    color: rgb(30, 162, 245);\r\n    font-weight: 900;\r\n    z-index: 2;\r\n}\r\n\r\n\r\n@media print {\r\n    .as-circle-section-label-text {\r\n        color: white !important;\r\n    }\r\n\r\n    .as-circle-section-label-index {\r\n        color: rgb(30, 162, 245) !important;\r\n    }\r\n}\r\n\r\n\r\n.as-circle-section-label-background {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    bottom: 0;\r\n    z-index: 1;\r\n}\r\n\r\n.as-circle-section-label-background>svg {\r\n    display: block;\r\n}\r\n\r\n.as-circle-section-label-index-box {\r\n    stroke: rgb(129, 211, 246);\r\n    fill: white;\r\n    stroke-width: 2.5;\r\n}\r\n\r\n.as-circle-section-label-arrow {\r\n    stroke: rgb(30, 162, 245);\r\n    fill: none;\r\n    stroke-linecap: round;\r\n}\r\n\r\n.as-circle-section-label-text-box {\r\n    fill: rgb(30, 162, 245);\r\n    stroke: none;\r\n}\r\n\r\n.as-circle-section-label-arrow-marker-path {\r\n    fill: rgb(30, 162, 245);\r\n    stroke: none;\r\n}", ""]);



/***/ }),

/***/ 76457:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".cke_panel {\r\n    z-index: 1000000000 !important;\r\n}\r\n\r\n\r\nspan.cke_button_icon.cke_button__as-variable-box-ico_icon {\r\n    background-size: cover;\r\n    background-image: url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiICB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgPHBhdGggZmlsbD0iIzAwMDBmZiIgZD0iTTE5IDNINUMzLjkgMyAzIDMuOSAzIDVWMTlDMyAyMC4xIDMuOSAyMSA1IDIxSDE5QzIwLjEgMjEgMjEgMjAuMSAyMSAxOVY1QzIxIDMuOSAyMC4xIDMgMTkgM003LjQgMThDNS45IDE2LjUgNSAxNC4zIDUgMTJTNS45IDcuNSA3LjQgNkw5IDYuN0M3LjcgNy45IDcgOS45IDcgMTJTNy43IDE2LjEgOSAxNy4zTDcuNCAxOE0xMi43IDE1TDExLjkgMTNMMTAuNSAxNUg5TDExLjMgMTEuOUwxMCA5SDExLjNMMTIuMSAxMUwxMy41IDlIMTVMMTIuOCAxMkwxNC4xIDE1SDEyLjdNMTYuNiAxOEwxNSAxNy4zQzE2LjMgMTYgMTcgMTQuMSAxNyAxMlMxNi4zIDcuOSAxNSA2LjdMMTYuNiA2QzE4LjEgNy41IDE5IDkuNyAxOSAxMlMxOC4xIDE2LjUgMTYuNiAxOFoiIC8+Cjwvc3ZnPg==\");\r\n}\r\n\r\nspan.cke_button_icon.cke_button__as-expression-box-ico_icon {\r\n    background-size: cover;\r\n    background-image: url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiICB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgIDxwYXRoIGZpbGw9IiMwMDAwMDAiIGQ9Ik01LDNIN1Y1SDVWMTBBMiwyIDAgMCwxIDMsMTJBMiwyIDAgMCwxIDUsMTRWMTlIN1YyMUg1QzMuOTMsMjAuNzMgMywyMC4xIDMsMTlWMTVBMiwyIDAgMCwwIDEsMTNIMFYxMUgxQTIsMiAwIDAsMCAzLDlWNUEyLDIgMCAwLDEgNSwzTTE5LDNBMiwyIDAgMCwxIDIxLDVWOUEyLDIgMCAwLDAgMjMsMTFIMjRWMTNIMjNBMiwyIDAgMCwwIDIxLDE1VjE5QTIsMiAwIDAsMSAxOSwyMUgxN1YxOUgxOVYxNEEyLDIgMCAwLDEgMjEsMTJBMiwyIDAgMCwxIDE5LDEwVjVIMTdWM0gxOU0xMiwxNUExLDEgMCAwLDEgMTMsMTZBMSwxIDAgMCwxIDEyLDE3QTEsMSAwIDAsMSAxMSwxNkExLDEgMCAwLDEgMTIsMTVNOCwxNUExLDEgMCAwLDEgOSwxNkExLDEgMCAwLDEgOCwxN0ExLDEgMCAwLDEgNywxNkExLDEgMCAwLDEgOCwxNU0xNiwxNUExLDEgMCAwLDEgMTcsMTZBMSwxIDAgMCwxIDE2LDE3QTEsMSAwIDAsMSAxNSwxNkExLDEgMCAwLDEgMTYsMTVaIiAvPgo8L3N2Zz4=\");\r\n}\r\n\r\nspan.cke_button_icon.cke_button__insert_video_icon {\r\n    background-size: cover;\r\n    background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgIDxwYXRoIGZpbGw9IiMwMDAwMDAiIGQ9Ik0xOSwxOUg1VjVIMTlNMTksM0g1QTIsMiAwIDAsMCAzLDVWMTlBMiwyIDAgMCwwIDUsMjFIMTlBMiwyIDAgMCwwIDIxLDE5VjVDMjEsMy44OSAyMC4xLDMgMTksM00xMCw4VjE2TDE1LDEyTDEwLDhaIiAvPgo8L3N2Zz4=\");\r\n}\r\n\r\n\r\ndiv.as-ck-inline-short-text {\r\n    border: 1px solid #dddddd;\r\n    height: 30px;\r\n    line-height: 28px;\r\n    font-size: 14px;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    padding-left: var(--as-input-horizontal-padding);\r\n    padding-right: var(--as-input-horizontal-padding);\r\n    outline: none;\r\n    overflow: hidden;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-ck-inline-short-text p {\r\n    padding: 0;\r\n    margin: 0;\r\n}\r\n\r\n.as-ck-inline-short-text p::after {\r\n    content: \"\";\r\n}\r\n\r\n.as-ck-inline-short-text .cke_reset.cke_widget_drag_handler_container {\r\n    visibility: hidden;\r\n    opacity: 0;\r\n    display: none;\r\n}\r\n\r\n.cke.cke_browser_webkit {\r\n    z-index: 2000000 !important;\r\n}\r\n\r\n.cke.cke_browser_webkit.as-hidden {\r\n    opacity: 0;\r\n    visibility: hidden;\r\n    pointer-events: none;\r\n}\r\n\r\n.cke.as-has-sticky-toolbar {\r\n    border-top: none;\r\n}\r\n\r\n.cke.as-has-sticky-toolbar > .cke_inner > .cke_top {\r\n    border-top: 1px solid #d1d1d1;\r\n    z-index: 100;\r\n}\r\n", ""]);



/***/ }),

/***/ 15118:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-color-picker-button {\r\n    width: 45px;\r\n    height: 30px;\r\n    border-radius: 3px;\r\n    border: 1px solid #d6d6d6;\r\n    background-color: transparent;\r\n    padding: 5px;\r\n    outline: none;\r\n}\r\n\r\n.as-color-picker-button-inner {\r\n    height: 100%;\r\n    width: 100%;\r\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAaSURBVBhXYzh8+PD///8hJAOcBSRxyRw+DABJUCox2kjvSgAAAABJRU5ErkJggg==');\r\n    background-size: 1.5em;\r\n    image-rendering: optimizeSpeed;\r\n    /* STOP SMOOTHING, GIVE ME SPEED  */\r\n    image-rendering: -moz-crisp-edges;\r\n    /* Firefox                        */\r\n    image-rendering: -o-crisp-edges;\r\n    /* Opera                          */\r\n    image-rendering: -webkit-optimize-contrast;\r\n    /* Chrome (and eventually Safari) */\r\n    image-rendering: pixelated;\r\n    /* Chrome */\r\n    image-rendering: optimize-contrast;\r\n    /* CSS3 Proposed                  */\r\n    -ms-interpolation-mode: nearest-neighbor;\r\n    /* IE8+                           */\r\n}\r\n\r\n.as-color-picker-button-inner-value {\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n.as-color-picker-button-fol {\r\n    z-index: 1000;\r\n}\r\n\r\n.as-color-picker-button[data-mode=\"HEX6\"] .as-null .as-color-cell-value {\r\n    display: none;\r\n}\r\n\r\n.as-color-picker-button.as-border-none{\r\n    border: none;\r\n}\r\n\r\n.as-select-color-scheme-menu-dropdown {\r\n    font-size: 14px;\r\n    padding: 5px;\r\n}\r\n\r\n.as-select-color-scheme-menu {\r\n    box-sizing: border-box;\r\n    padding-right: 30px;\r\n    padding-left: 5px;\r\n}\r\n\r\n.as-select-color-scheme-menu::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n}\r\n\r\n.as-select-color-scheme-menu-selected-item {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-select-color-scheme-menu-selected-item .as-scsm-item-cell {\r\n    width: 20px;\r\n    height: 20px;\r\n}\r\n\r\n.as-scsm-item-list-row {\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-scsm-item-wrapper {\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    padding: 7px;\r\n}\r\n\r\n.as-scsm-item {\r\n\r\n    border-radius: 4px;\r\n    overflow: hidden;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-scsm-item-wrapper:hover .as-scsm-item:not(.as-selected) {\r\n    box-shadow: 0px 0px 0px 2px rgba(107, 159, 255, 0.5);\r\n}\r\n\r\n.as-scsm-item.as-selected {\r\n    box-shadow: 0px 0px 0px 2px #1464f6;\r\n}\r\n\r\n.as-scsm-item-row {\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-scsm-item-cell {\r\n    width: 1.2em;\r\n    height: 1.2em;\r\n    display: inline-block;\r\n    vertical-align: top;\r\n}", ""]);



/***/ }),

/***/ 15132:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-text-input {\r\n    border-style: solid;\r\n    border-width: 1px;\r\n    border-radius: var(--as-input-border-radius);\r\n    border-color: var(--as-input-border-color);\r\n    outline: none;\r\n    height: var(--as-input-height);\r\n    padding-left: var(--as-input-vertical-padding);\r\n    font-size: inherit;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-text-input[readonly].as-border-none {\r\n    border: none;\r\n    padding-left: 0;\r\n    padding-right: 0;\r\n}\r\n\r\ninput[type=\"text\"].as-text-input:disabled,\r\ntextarea.as-text-input:disabled {\r\n    background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n\r\n.as-blink-text {\r\n    --blink-duration: 1s;\r\n    --text-color: black;\r\n    animation-name: as-anim-text-blink-1-1;\r\n    animation-duration: var(--blink-duration);\r\n    animation-iteration-count: infinite;\r\n}\r\n\r\n\r\n@keyframes as-anim-text-blink-1-1 {\r\n    0% {\r\n        color: var(--text-color);\r\n    }\r\n    49% {\r\n        color: var(--text-color);\r\n    }\r\n    50% {\r\n        color: transparent;\r\n    }\r\n    99% {\r\n        color: transparent;\r\n    }\r\n    100% {\r\n        color: var(--text-color);\r\n    }\r\n}\r\n\r\n.as-mti-star {\r\n    font-family: 'Material Icons';\r\n    color: #ffa834;\r\n    font-size: var(--icon-font-size);\r\n    -webkit-font-smoothing: antialiased;\r\n}\r\n\r\n.as-mti-star::before {\r\n    content: \"star\";\r\n}\r\n\r\n.as-cursor-pointer {\r\n    cursor: pointer;\r\n}\r\n\r\n\r\n.as-table-grid {\r\n    display: table;\r\n}\r\n\r\n.as-table-grid.as-inline {\r\n    display: inline-table;\r\n}\r\n\r\n.as-table-grid-row {\r\n    display: table-row;\r\n}\r\n\r\n\r\n.as-table-grid-cell {\r\n    display: table-cell;\r\n}\r\n\r\n\r\n.as-pseudo-align-child-center {\r\n    text-align: center;\r\n}\r\n\r\n.as-pseudo-align-child-center::before {\r\n    height: 100%;\r\n    content: \"\";\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n}\r\n\r\n.as-pseudo-align-child-center > * {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.as-transparent-button {\r\n    background-color: transparent;\r\n    border: none;\r\n    padding: 0;\r\n    margin: 0;\r\n    font-size: inherit;\r\n    color: var(--as-transparent-button-text-color);\r\n}\r\n\r\n.as-transparent-button:hover {\r\n    color: var(--as-transparent-button-text-hover-color);\r\n}\r\n\r\n\r\n.as-transparent-button:active {\r\n    color: var(--as-transparent-button-text-active-color);\r\n}\r\n\r\n.as-transparent-button .mdi {\r\n    font-size: 1.5em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-transparent-button > svg,\r\n.as-transparent-button > img {\r\n    width: 1.5em;\r\n    height: 1.5em;\r\n}\r\n\r\n\r\n.as-transparent-button.as-variant-danger {\r\n    color: var(--variant-color-danger);\r\n}\r\n\r\n.as-transparent-button.as-variant-danger:hover {\r\n    color: #c03542;\r\n}\r\n\r\n\r\n\r\n.as-transparent-button.as-variant-danger:active{\r\n    color: #ef0d23;\r\n}\r\n\r\nbutton.as-transparent-button:disabled {\r\n    color: #dddddd;\r\n}\r\n\r\n.as-section-text-n-line {\r\n    position: relative;\r\n    display: block;\r\n    padding-bottom: 5px;\r\n}\r\n\r\n.as-section-text-n-line span {\r\n    background-color: white;\r\n    position: relative;\r\n    z-index: 2;\r\n    padding-right: 5px;\r\n    display: inline-block;\r\n}\r\n\r\n\r\n.as-section-text-n-line::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    z-index: 1;\r\n    left: 0;\r\n    right: 0;\r\n    top: calc(50% - 1px);\r\n    border-top: 1px solid #dddddd;\r\n}\r\n", ""]);



/***/ }),

/***/ 2526:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-compact-data-grid-editor {\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    font-size: 14px;\r\n    border: 1px solid #dddddd;\r\n    box-sizing: border-box;\r\n\r\n}\r\n\r\n\r\n.as-cag-var-mng {\r\n    padding: 10px;\r\n    border-bottom: 1px solid #dddddd;\r\n    background-color: #fefefe;\r\n}\r\n\r\n.as-cag-var {\r\n    display: inline-block;\r\n    padding: 5px 10px;\r\n    background-color: #0a90eb;\r\n    border-radius: 5px;\r\n\r\n    color: white;\r\n    cursor: move;\r\n    user-select: none;\r\n}\r\n\r\n.as-cag-var::after {\r\n    content: attr(data-default-title);\r\n    font-weight: inherit;\r\n    font-style: inherit;\r\n}\r\n\r\n.as-cag-var:not([data-default-title]) {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-cag-var.as-focus {\r\n    box-shadow: 0px 0px 2px 2px rgba(255, 153, 0, 0.75);\r\n}\r\n\r\n/*.as-cag-var::before {*/\r\n/*    content: \"[title]: \";*/\r\n/*}*/\r\n\r\n.as-cag-var[data-title]::before {\r\n    content: attr(data-title) \": \";\r\n    font-style: italic;\r\n\r\n}\r\n\r\n.as-cag-var[data-title=\"\"]::before {\r\n    display: none;\r\n}\r\n\r\n.as-clone-var {\r\n    box-shadow: 0px 0px 0px 4px rgba(70, 70, 90, 0.95) !important;\r\n    background-color: rgba(255, 255, 255, 0.7);\r\n    color: rgba(0, 0, 0, 0.7);\r\n}\r\n\r\n.as-cag-var-mng .as-cag-var {\r\n    margin-bottom: 5px;\r\n}\r\n\r\n.as-cag-var:not(:last-child) {\r\n    margin-right: 10px;\r\n}\r\n\r\n\r\n.as-cdg-table {\r\n    margin: 15px;\r\n    border-collapse: collapse;\r\n    user-select: none;\r\n}\r\n\r\n.as-cdg-table > thead {\r\n    background-color: #e3e2e2;\r\n}\r\n\r\n.as-cdg-table > thead.as-hidden {\r\n    display: none;\r\n}\r\n\r\n.as-cdg-table > thead th {\r\n    border-color: #aaaaaa;\r\n    height: 40px;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-cdg-table > thead pre{\r\n    white-space: pre-wrap;\r\n    font-family: inherit;\r\n    outline: none;\r\n    line-height: 1.5;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-cdg-table > thead pre:focus {\r\n    background-color: rgba(255, 255, 255, 0.5);\r\n}\r\n\r\n.as-ca-cell:empty {\r\n    padding: 10px 30px;\r\n    text-align: center;\r\n}\r\n\r\n.as-cdg-table > tbody .as-ca-cell:empty::before {\r\n    content: \"+\";\r\n    font-size: 1.1em;\r\n    color: #1da1ff;\r\n    pointer-events: none;\r\n}\r\n\r\n.as-ca-cell {\r\n    /*border: 1px dashed rgba(150, 150, 250, 0.3);*/\r\n    border: 1px solid #dddddd;\r\n    white-space: nowrap;\r\n    padding: 5px 20px;\r\n    position: relative;\r\n}\r\n\r\n.as-ca-cell.as-hovering,\r\n.as-ca-cell.as-hovering.as-selected {\r\n    background-color: rgba(78, 246, 162, 0.15);\r\n}\r\n\r\n\r\n.as-ca-cell.as-selected {\r\n    background-color: rgba(78, 222, 246, 0.25);\r\n}\r\n\r\n.as-ca-cell.as-drag-over::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    right: 0;\r\n    display: block;\r\n    border: 2px solid #ff922a;\r\n    pointer-events: none;\r\n}\r\n\r\n.as-ca-cell.as-drag-over.as-bf {\r\n    --hover-x: 20px;\r\n\r\n}\r\n\r\n.as-ca-cell.as-drag-over.as-bf::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    top: 4px;\r\n    bottom: 4px;\r\n    width: 6px;\r\n    border-radius: 3px;\r\n    background-color: #0a90eb;\r\n    left: calc(var(--hover-x) - 8px);\r\n    animation-name: as_ca_bf_blink;\r\n    animation-duration: 0.5s;\r\n    animation-iteration-count: infinite;\r\n}\r\n\r\n\r\n@keyframes as_ca_bf_blink {\r\n    0% {\r\n        background-color: #0a90eb;\r\n    }\r\n    50% {\r\n        background-color: transparent;\r\n    }\r\n    100% {\r\n        background-color: #0a90eb;\r\n    }\r\n}\r\n\r\n\r\n.as-cdg-variable-edit-dialog .as-table-grid-cell {\r\n    padding: 5px 10px;\r\n}\r\n\r\n.as-cdg-variable-edit-dialog button {\r\n    min-width: 100px;\r\n}\r\n\r\n\r\n.as-cdg-variable-edit-dialog input[type=\"text\"] {\r\n    width: 200px;\r\n}\r\n\r\n\r\n.as-compact-data-grid-editor-body {\r\n    overflow: auto;\r\n}\r\n\r\n.as-compact-data-grid-editor .as-table-of-text-input-tool .as-ribbon-button {\r\n    width: 80px;\r\n}\r\n\r\n.as-compact-data-grid-editor .as-table-of-text-input-tool .as-ribbon-button svg {\r\n    width: 24px;\r\n    height: 24px;\r\n}\r\n\r\n.as-toggle-header-ico:not(.as-show-header) .as-icon-add {\r\n    display: none;\r\n}\r\n\r\n.as-toggle-header-ico .as-icon-minus {\r\n    stroke: red !important;\r\n}\r\n\r\n.as-toggle-header-ico.as-show-header .as-icon-minus,\r\n.as-toggle-header-ico.as-show-header .as-icon-add {\r\n    stroke: blue !important;\r\n}", ""]);



/***/ }),

/***/ 64273:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-context-menu-hook {\r\n    position: absolute;\r\n    z-index: -100000;\r\n    width: 14px;\r\n    height: 14px;\r\n    top: 0;\r\n    opacity: 0;\r\n    resize: none;\r\n    cursor: default;\r\n}\r\n\r\n.absol-context-hinge-fixed-container {\r\n    position: fixed;\r\n    left: 0;\r\n    top: 0;\r\n    z-index: 1000000001;\r\n}\r\n\r\n.absol-context-hinge {\r\n    position: relative;\r\n    width: 0;\r\n    height: 0;\r\n}\r\n\r\n.absol-context-hinge > .absol-context-menu {\r\n    position: absolute;\r\n    top: -10000px;\r\n    left: -10000px;\r\n    visibility: hidden;\r\n    z-index: 1000000000;\r\n    display: inline-block;\r\n}\r\n\r\n.absol-context-hinge .absol-vmenu,\r\n.absol-context-hinge .absol-hmenu {\r\n    padding-top: 0.4em;\r\n    padding-bottom: 0.4em;\r\n    /* background-color: rgb(37, 37, 38);\r\n    -webkit-box-shadow: 2px 2px 9px 0px rgba(7, 7, 7, 1);\r\n    -moz-box-shadow: 2px 2px 9px 0px rgb(7, 7, 7, 1);\r\n    box-shadow: 2px 2px 9px 0px rgba(7, 7, 7, 1); */\r\n    color: black;\r\n    background-color: rgb(252, 252, 255);\r\n    -webkit-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    -moz-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n}\r\n\r\n.absol-context-menu-anchor.dark .absol-hmenu,\r\n.absol-context-menu-anchor.dark .absol-vmenu,\r\n.dark .absol-context-menu-anchor .absol-hmenu,\r\n.dark .absol-context-menu-anchor .absol-vmenu {\r\n    background-color: rgb(37, 37, 38);\r\n}\r\n\r\n\r\n.absol-context-menu-anchor {\r\n    position: fixed;\r\n    z-index: -1000;\r\n    left: 0;\r\n    top: 0;\r\n    display: block;\r\n    opacity: 0;\r\n    visibility: hidden;\r\n    font-size: inherit;\r\n}\r\n\r\n.absol-context-menu-anchor > textarea {\r\n    width: 160px;\r\n    height: 160px;\r\n    margin: 0;\r\n    resize: none;\r\n    border: none;\r\n    opacity: 0;\r\n    cursor: default;\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n}\r\n\r\n.absol-context-menu-anchor.absol-active {\r\n    z-index: 1000000000 !important;\r\n    opacity: 1;\r\n    visibility: visible;\r\n}\r\n\r\n\r\n.absol-context-menu-anchor .absol-vmenu,\r\n.absol-context-menu-anchor .absol-hmenu {\r\n    padding-top: 0.4em;\r\n    padding-bottom: 0.4em;\r\n    color: black;\r\n    background-color: rgb(252, 252, 255);\r\n    -webkit-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    -moz-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n}\r\n\r\n\r\n.absol-context-menu-anchor .absol-dropright > .absol-dropright-content {\r\n    -webkit-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    -moz-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n}\r\n\r\n\r\n.as-system-context-menu {\r\n    /** nothing here, to define use system context menu**/\r\n}\r\n\r\n.as-context-menu-ctn {\r\n    font-size: var(--as-context-menu-font-size);\r\n    font-family: var(--as-input-font-family);\r\n}\r\n\r\n.as-context-menu-ctn.as-anchor-modal,\r\n.absol-context-menu-anchor.as-anchor-modal {\r\n    position: fixed;\r\n    z-index: 800000000;\r\n    left: 0 !important;\r\n    right: 0 !important;;\r\n    top: 0 !important;;\r\n    bottom: 0 !important;;\r\n    box-sizing: border-box;\r\n    text-align: center;\r\n    background-color: rgba(155, 155, 155, 0.3);\r\n}\r\n\r\n.as-context-menu-ctn.as-anchor-modal::before,\r\n.as-context-menu-ctn.as-anchor-modal > .absol-vmenu,\r\n.absol-context-menu-anchor.as-anchor-modal::before,\r\n.absol-context-menu-anchor.as-anchor-modal > .absol-vmenu {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-context-menu-ctn.as-anchor-modal > .absol-vmenu,\r\n.absol-context-menu-anchor.as-anchor-modal > .absol-vmenu {\r\n    text-align: left;\r\n}\r\n\r\n\r\n.as-context-menu-ctn.as-anchor-modal::before,\r\n.absol-context-menu-anchor.as-anchor-modal::before {\r\n    content: \"\";\r\n    height: 100%;\r\n}\r\n\r\n.as-context-menu-ctn.as-anchor-modal > .absol-vmenu,\r\n.absol-context-menu-anchor.as-anchor-modal > .absol-vmenu {\r\n    min-width: 70%;\r\n    max-width: calc(100% - 10px);\r\n    max-height: calc(100% - 10px);\r\n}\r\n\r\n.as-quick-menu {\r\n    font-size: 1rem;\r\n}\r\n\r\n.as-quick-menu {\r\n    --available-height: calc(100vh - 20px);\r\n    max-height: var(--available-height);\r\n}\r\n\r\n.absol-context-menu-anchor.as-anchor-modal .as-quick-menu {\r\n    max-height: calc(100vh - 20px);\r\n}", ""]);



/***/ }),

/***/ 96048:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-countdown-clock {\r\n    width: 7em;\r\n    height: 7em;\r\n    border-radius: 50%;\r\n    position: relative;\r\n    display:inline-block;\r\n    font-family: Consolas;\r\n}\r\n\r\n.as-countdown-clock-border-wrapper{\r\n    pointer-events:none;\r\n    position: absolute;\r\n    box-sizing: border-box;\r\n    left: 0.2em;\r\n    right: 0.2em;\r\n    top: 0.2em;\r\n    bottom: 0.2em;\r\n    filter: drop-shadow(0 0px 1px rgb(100, 200, 255));\r\n}\r\n\r\n.as-countdown-clock-border {\r\n    width: 100%;\r\n    height: 100%;\r\n    border: solid 0.2em rgb(100, 200, 255);\r\n    border-radius: 50%;\r\n    object-fit: cover;\r\n}\r\n\r\n.as-countdown-clock-text {\r\n    position: absolute;\r\n    left: 50%;\r\n    top: 50%;\r\n    transform:translate(-50%, -50%);\r\n    font-size: 2em;\r\n}\r\n\r\n.as-countdown-clock div,\r\n.as-countdown-clock span\r\n{\r\n    font-family: inherit;\r\n}", ""]);



/***/ }),

/***/ 67338:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-countdown-text {\r\n\r\n}\r\n", ""]);



/***/ }),

/***/ 3397:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-date-input {\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    font-size: 1rem;\r\n    border: 1px solid #ddd;\r\n    border-radius: 3px;\r\n    height: calc(2em + 2px);\r\n    width: 10.5em;\r\n    box-sizing: border-box;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    position: relative;\r\n    background-color: white;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-date-input[data-format] {\r\n    --format-width: 8.5em;\r\n    width: calc(var(--format-width) + 2em + 1em);\r\n}\r\n\r\n.as-date-input-text {\r\n    outline: none;\r\n    width: calc(100% - 29px);\r\n    height: 100%;\r\n    border: none;\r\n    background-color: transparent;\r\n    display: block;\r\n    padding: 0 0 0 var(--as-input-horizontal-padding);\r\n    font: inherit;\r\n    box-sizing: border-box;\r\n\r\n}\r\n\r\n.as-date-input-icon-ctn {\r\n    font-size: inherit;\r\n    border-left: 1px solid #ddd;\r\n    border-right: none;\r\n    border-top: none;\r\n    border-bottom: none;\r\n    text-align: center;\r\n    position: absolute;\r\n    right: 0;\r\n    width: calc(2em + 1px);\r\n    box-sizing: border-box;\r\n    top: 0;\r\n    height: 100%;\r\n    background-color: rgba(169, 169, 169, 0.1);\r\n    cursor: pointer;\r\n    color: black;\r\n    padding: 0;\r\n}\r\n\r\n\r\n.as-date-input-icon-ctn:hover {\r\n    background-color: rgba(169, 169, 169, 0.25);\r\n}\r\n\r\n.as-date-input-icon-ctn:active {\r\n    background-color: rgba(169, 169, 169, 0.5);\r\n}\r\n\r\n\r\n.as-date-input-icon-ctn > span {\r\n    line-height: 28px;\r\n    font-size: calc(16em / 14);\r\n    display: inline-block;\r\n    padding: 0;\r\n}\r\n\r\n.as-date-input.as-read-only .as-date-input-icon-ctn {\r\n    pointer-events: none;\r\n}\r\n\r\n.as-date-input.as-disabled {\r\n    color: var(--as-disabled-text-color);\r\n    pointer-events: none;\r\n}\r\n\r\n.as-date-input.as-disabled input {\r\n    background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.as-date-input.as-value-null .as-date-input-clear-btn,\r\n.as-date-input.as-must-not-null .as-date-input-clear-btn {\r\n    display: none;\r\n}\r\n\r\n.as-date-input-clear-btn {\r\n    font-size: inherit;\r\n    position: absolute;\r\n    right: 2em;\r\n    height: 2em;\r\n    padding: 0 0.3em;\r\n    top: calc(50% - 1em);\r\n    box-sizing: border-box;\r\n    background-color: transparent;\r\n    border: none;\r\n    color: #bbb;\r\n    visibility: hidden;\r\n}\r\n\r\n.as-date-input.as-read-only .as-date-input-clear-btn {\r\n    display: none;\r\n}\r\n\r\n.as-date-input-clear-btn:hover {\r\n    color: rgb(132, 132, 132)\r\n}\r\n\r\n.as-date-input-clear-btn:active {\r\n    color: #525555;\r\n}\r\n\r\n.as-date-input-text:focus + .as-date-input-clear-btn,\r\n.as-date-input:hover .as-date-input-clear-btn {\r\n    visibility: visible;\r\n}\r\n\r\n.as-date-input.as-border-none {\r\n    border: transparent;\r\n    background-color: transparent;\r\n}\r\n\r\n.as-date-input.as-border-none .as-date-input-icon-ctn {\r\n    display: none;\r\n}\r\n\r\n.as-date-input.as-border-none .as-date-input-text {\r\n    width: 100%;\r\n    padding-left: 0;\r\n}\r\n\r\n.as-date-n-level-input {\r\n    white-space: nowrap;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    margin: 5px;\r\n    position: relative;\r\n    width: 13.5em;\r\n    height: calc(2em + 2px);\r\n}\r\n\r\n.as-date-n-level-input .as-date-input {\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n.as-date-n-level-input-select-level {\r\n    position: absolute;\r\n    left: 1px;\r\n    top: 1px;\r\n    width: 2em;\r\n    height: 2em;\r\n    padding: 0;\r\n}\r\n\r\n\r\n.as-date-n-level-input.as-disabled .as-date-n-level-input-select-level {\r\n    opacity: 0.5;\r\n    pointer-events: none;\r\n}\r\n\r\n.as-date-n-level-input.as-read-only .as-date-n-level-input-select-level {\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n.as-date-n-level-input .as-date-input-text {\r\n    padding-left: calc(var(--as-input-horizontal-padding) + 2em);\r\n    width: calc(100% - 2em - 1px);\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-date-n-level-input.as-border-none.as-read-only .as-date-input {\r\n    border: none;\r\n}\r\n\r\n\r\n.as-date-n-level-input.as-border-none.as-read-only .as-date-input-text {\r\n    width: 100%;\r\n    text-align: left;\r\n    padding-left: 0;\r\n}\r\n.as-date-n-level-input.as-border-none.as-read-only button {\r\n    display: none;\r\n}\r\n", ""]);



/***/ }),

/***/ 45406:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-date-in-year-follower {\r\n    z-index: 900000000;\r\n}\r\n\r\n.as-date-in-year-picker {\r\n    font-size: 1rem;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    /*width: 20em;*/\r\n    box-sizing: border-box;\r\n    border: 1px solid #dddddd;\r\n    display: inline-block;\r\n    padding: calc(10em / 14) calc(5rem / 14);\r\n    box-shadow: 1px 1px 2px rgb(240, 240, 240);\r\n    background-color: white;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-table {\r\n    display: table;\r\n}\r\n\r\n.as-date-in-year-picker-row {\r\n    display: table-row;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-row:first-child {\r\n    text-align: center;\r\n    line-height: 1.5;\r\n}\r\n\r\n.as-date-in-year-picker-cell {\r\n    display: table-cell;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-cell:first-child {\r\n    padding-right: 10px;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-month-col {\r\n    position: relative;\r\n    padding-top: calc(25em / 14);\r\n    padding-bottom: calc(25em / 14);\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-date-in-year-picker-month-viewport {\r\n    width: calc(50em / 14);\r\n    overflow: hidden;\r\n\r\n}\r\n\r\n.as-date-in-year-picker-month-scroller {\r\n    width: calc(100% + 17px);\r\n    height: 8em;\r\n    overflow-y: scroll;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\nbutton.as-date-in-year-picker-month {\r\n    font-size: inherit;\r\n    height: 2em;\r\n    width: calc(50em / 14);\r\n    padding: 0;\r\n    border: none;\r\n    background-color: transparent;\r\n}\r\n\r\nbutton.as-date-in-year-picker-month:hover {\r\n    background-color: rgb(224, 245, 256);\r\n}\r\n\r\nbutton.as-date-in-year-picker-month.as-selected {\r\n    background-color: rgb(188, 205, 236);\r\n    border-radius: 3px;\r\n}\r\n\r\nbutton.as-date-in-year-picker-month > span {\r\n    font-size: calc(16rem / 14);\r\n}\r\n\r\n\r\n.as-chrome-time-picker-scroller-up:hover,\r\n.as-chrome-time-picker-scroller-down:hover {\r\n    background-color: rgba(169, 169, 169, 0.2);\r\n}\r\n\r\n\r\n.as-date-in-year-picker-month-btn {\r\n    position: absolute;\r\n    left: 0;\r\n    font-size: inherit;\r\n    height: calc(20em / 14);\r\n    width: calc(50em / 14);\r\n    padding: 0;\r\n    border: none;\r\n    background-color: transparent;\r\n    box-sizing: border-box;\r\n    border-radius: 3px;\r\n}\r\n\r\n.as-date-in-year-picker-month-btn.as-up {\r\n    top: 0;\r\n}\r\n\r\n.as-date-in-year-picker-month-btn.as-down {\r\n    bottom: 0;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-month-btn:hover {\r\n    background-color: rgba(169, 169, 169, 0.2);\r\n}\r\n\r\n.as-date-in-year-picker-month-btn > span {\r\n    font-size: 1.5em;\r\n    user-select: none;\r\n    -moz-user-select: none;\r\n    -webkit-user-select: none;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-days {\r\n    display: inline-table;\r\n    vertical-align: middle;\r\n    border: solid 1px rgb(190, 190, 190);\r\n}\r\n\r\n.as-date-in-year-picker-week {\r\n    display: table-row;\r\n}\r\n\r\n.as-date-in-year-picker-day {\r\n    display: table-cell;\r\n    text-align: right;\r\n    padding: calc(5em / 14);\r\n    line-height: calc(20em / 14);\r\n    font-size: inherit;\r\n    user-select: none;\r\n    -moz-user-select: none;\r\n    -webkit-user-select: none;\r\n}\r\n\r\n\r\n.as-date-in-year-picker-day:hover {\r\n    background-color: rgb(224, 245, 256);\r\n    cursor: default;\r\n}\r\n\r\n.as-date-in-year-picker-day.as-selected {\r\n    background-color: rgb(188, 205, 236);\r\n}\r\n\r\n\r\n.as-date-time-input.as-date-in-year-input {\r\n    width: calc(8em + 2px);\r\n}\r\n\r\n.as-date-in-year-input.as-must-not-null .as-time-input-clear-btn,\r\n.as-date-in-year-input.as-empty .as-time-input-clear-btn {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-date-in-year-follower {\r\n    z-index: 1000000;\r\n}", ""]);



/***/ }),

/***/ 37437:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-date-time-input {\r\n    border: 1px solid #ddd;\r\n    border-radius: 3px;\r\n    height: calc(2em + 2px);\r\n    width: calc(14em + 2px);\r\n    box-sizing: border-box;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    position: relative;\r\n    background-color: white;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-date-time-input.as-disabled {\r\n    color: var(--as-disabled-text-color);\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n.as-date-time-input input {\r\n    font-size: inherit;\r\n    outline: none;\r\n    width: calc(100% - 2em - 1px);\r\n    height: 100%;\r\n    border: none;\r\n    display: block;\r\n    padding: 0 0 0 var(--as-input-horizontal-padding);\r\n    -webkit-user-select: auto;\r\n    user-select: auto;\r\n    -webkit-user-drag: none;\r\n    color: inherit;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-date-time-input.as-disabled input {\r\n    background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.as-date-time-input-icon-btn {\r\n    border-right: none;\r\n    border-top: none;\r\n    border-bottom: none;\r\n    border-left: 1px solid #ddd;\r\n    position: absolute;\r\n    right: 0;\r\n    width: calc(2em + 1px);\r\n    box-sizing: border-box;\r\n    top: 0;\r\n    bottom: 0;\r\n    background-color: rgba(169, 169, 169, 0.1);\r\n    cursor: pointer;\r\n    border-radius: 0;\r\n    color: inherit;\r\n    font-size: inherit;\r\n    padding: 0;\r\n}\r\n\r\n.as-date-time-input-icon-btn > span {\r\n    font-size: calc(16em / 14);\r\n}\r\n\r\n\r\n.as-date-time-input-icon-btn:hover {\r\n    background-color: rgba(169, 169, 169, 0.25);\r\n}\r\n\r\n.as-date-time-input-icon-btn:active {\r\n    background-color: rgba(169, 169, 169, 0.5);\r\n}\r\n\r\n\r\n.as-date-time-input-icon-btn.as-disabled {\r\n    color: rgb(102, 102, 102);\r\n    pointer-events: none;\r\n}\r\n\r\n.as-date-time-input-follower {\r\n    box-sizing: border-box;\r\n    background-color: white;\r\n    border: 1px solid #ddd;\r\n    padding: 5px;\r\n}\r\n\r\n.as-date-time-input-date-picker {\r\n    border: none;\r\n    box-shadow: none;\r\n}\r\n\r\n.as-date-time-input-picker-header {\r\n    text-align: right;\r\n    padding-bottom: 5px;\r\n}\r\n\r\n\r\n.as-date-time-input-picker-btn {\r\n    height: 20px;\r\n    min-width: 25px;\r\n    padding: 0 5px;\r\n    box-sizing: border-box;\r\n    font-size: inherit;\r\n    border: 1px solid rgb(47, 82, 143);\r\n    background-color: rgb(68, 144, 196);\r\n    color: white;\r\n    border-radius: 0;\r\n}\r\n\r\n.as-date-time-input-picker-btn:active {\r\n    background-color: rgb(50, 122, 169);\r\n}\r\n\r\n\r\n.as-chrome-time-picker.as-date-time-input-time-picker {\r\n    height: 11.8em;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-date-time-input-picker-ctn {\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-date-time-input-picker-ctn > div {\r\n    display: inline-block;\r\n    white-space: initial;\r\n    vertical-align: top;\r\n}\r\n\r\n.as-date-time-input-follower > div {\r\n    border-color: white;\r\n}\r\n\r\n.as-date-time-input:hover .as-time-input-clear-btn {\r\n    visibility: visible;\r\n}\r\n\r\n.as-date-time-input.as-must-not-null .as-time-input-clear-btn,\r\n.as-date-time-input.as-read-only .as-time-input-clear-btn {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-date-time-input.as-read-only .as-date-time-input-icon-btn {\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n.as-date-time-input.as-border-none {\r\n    border: none;\r\n}\r\n\r\n\r\n.as-date-time-input.as-border-none .as-date-time-input-icon-btn {\r\n    display: none;\r\n}\r\n\r\n.as-date-time-input.as-border-none input {\r\n    width: 100%;\r\n    padding-left: 0;\r\n}", ""]);



/***/ }),

/***/ 74100:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-debug-task {\r\n    position: fixed;\r\n    right: 10px;\r\n    bottom: 10px;\r\n    z-index: 999999;\r\n    border-radius: 4px;\r\n    background: rgba(169, 169, 171, 0.3);\r\n    border: solid 1px rgba(21, 21, 214, 0.5);\r\n    min-width: 45px;\r\n    min-height: 30px;\r\n    font-size: 12px;\r\n    padding: 5px;\r\n    pointer-events: none;\r\n}\r\n\r\n.absol-debug-task-name{\r\n    color: darkcyan;\r\n}\r\n\r\n.absol-debug-task-value{\r\n    color: rgb(159, 8, 197);\r\n}", ""]);



/***/ }),

/***/ 6478:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ":root {\r\n    --as-input-height: calc(2rem + 2px);\r\n    --as-input-font-size: 1rem;\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: 1rem;\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.25);\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    --as-list-item-hover-background-color: #efefef;\r\n    --as-list-item-selected-background-color: #dfdfdf;\r\n\r\n\r\n    --modal-margin-top: 10vh;\r\n    --icon-font-size: 1.42857142857rem;\r\n}\r\n\r\n", ""]);



/***/ }),

/***/ 21908:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-draggable-stack {\r\n    position: relative;\r\n}\r\n\r\n.absol-draggable-stack .drag-zone {\r\n    touch-action: none;\r\n}\r\n\r\n.absol-draggable-stack > .as-dragging {\r\n    opacity: 0.2 !important;\r\n}\r\n\r\n.absol-draggable-stack-child-container.as-dragging {\r\n    opacity: 0.2 !important;\r\n}\r\n\r\n.absol-draggable-stack-clone-container {\r\n    position: fixed;\r\n    left: 0;\r\n    top: 0;\r\n    z-index: 100000;\r\n    user-select: none;\r\n    -moz-user-select: none;\r\n    -webkit-user-select: none;\r\n    -ms-user-select: none;\r\n    pointer-events: all;\r\n    opacity: 0.5;\r\n    background: white;\r\n}\r\n\r\n.absol-draggable-vstack > .absol-draggable-stack-clone-container {\r\n    left: 0;\r\n    right: 0;\r\n\r\n}\r\n\r\n.absol-draggable-stack-clone-container * {\r\n    pointer-events: none !important;\r\n}\r\n\r\n.absol-draggable-stack-clone-container > * {\r\n    width: 100% !important;\r\n    height: 100% !important;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n.absol-draggable-stack-clone-container.home-going {\r\n    transition: top 0.2s;\r\n}\r\n\r\n.absol-draggable-stack-dest-line {\r\n    position: absolute;\r\n    z-index: 99;\r\n    box-sizing: content-box;\r\n}\r\n\r\n.absol-draggable-vstack > .absol-draggable-stack-dest-line {\r\n    transition: top 0.1s;\r\n    left: 0;\r\n    right: 0;\r\n    border-top: solid 3px rgb(74, 174, 233);\r\n    border-bottom: solid 3px rgb(74, 174, 233);\r\n}\r\n\r\n\r\n.absol-draggable-hstack {\r\n    --dest-x: 0px;\r\n}\r\n\r\n.absol-draggable-hstack.as-has-dragging::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    transition: left 0.1s;\r\n    top: 0;\r\n    bottom: 0;\r\n    left: calc(var(--dest-x) - 3px);\r\n    border-left: solid 3px rgb(74, 174, 233);\r\n    border-right: solid 3px rgb(74, 174, 233);\r\n}\r\n\r\n.absol-draggable-hstack.as-no-change::after {\r\n    visibility: hidden;\r\n}\r\n\r\n\r\n.absol-draggable-hstack > * {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.absol-draggable-vstack {\r\n    --dest-y: unset;\r\n}\r\n\r\n/**.as-state-drag*/\r\n.absol-draggable-vstack.as-state-drag::after {\r\n    content: \"\";\r\n    display: block;\r\n    position: absolute;\r\n    top: calc(var(--dest-y) - 3px);\r\n    left: 0;\r\n    right: 0;\r\n    transition: top 0.1s;\r\n    border-top: solid 3px rgb(74, 174, 233);\r\n    border-bottom: solid 3px rgb(74, 174, 233);\r\n    z-index: 999;\r\n}\r\n\r\n\r\n.absol-draggable-vstack.as-state-no-change::after {\r\n    visibility: hidden;\r\n}", ""]);



/***/ }),

/***/ 16189:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "\r\n/**********************************************************************************************************************/\r\ndiv.as-dropdown-box-common-style {\r\n    -webkit-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    -moz-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    border: solid 1px rgb(100, 100, 255);\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    background-color: white;\r\n}\r\n\r\n.as-dropdown-box-footer {\r\n    height: calc(2em + 1px);\r\n    border-top: 1px solid #dddddd;\r\n    box-sizing: border-box;\r\n    padding-left: 0.35em;\r\n    white-space: nowrap;\r\n    position: relative;\r\n}\r\n\r\n\r\n.as-dropdown-box-footer > *,\r\n.as-dropdown-box-footer::before,\r\n.as-dropdown-box-footer-right::before,\r\n.as-dropdown-box-footer-right > * {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-dropdown-box-footer-right::before,\r\n.as-dropdown-box-footer::before {\r\n    content: \"\";\r\n    height: 100%;\r\n}\r\n\r\n.as-dropdown-box-footer > *:not(:last-child) {\r\n    margin-right: 6.5em;\r\n}\r\n\r\n.as-dropdown-box-footer .absol-checkbox-label.as-right {\r\n    padding-left: 0.35em;\r\n}\r\n\r\n.as-dropdown-box-footer-right {\r\n    position: absolute;\r\n    right: 10px;\r\n    top: 0;\r\n    height: 100%;\r\n}\r\n\r\n.as-dropdown-box-footer a {\r\n    cursor: pointer;\r\n    margin-left: 30px;\r\n}\r\n\r\n.as-dropdown-box-footer a:hover {\r\n    color: #1da1ff;\r\n}\r\n\r\n.as-dropdown-box-footer a.as-select-list-box-cancel-btn {\r\n    color: #888888;\r\n}\r\n\r\n.as-dropdown-box-footer a.as-select-list-box-close-btn {\r\n    padding: 0 10px;\r\n}\r\n\r\n.as-dropdown-box-footer a.as-select-list-box-cancel-btn:hover {\r\n    color: #ea2121;\r\n}\r\n\r\n/********** MOBILE ***************/\r\n\r\n.am-modal.am-dropdown-box-modal{\r\n    z-index: 100001000;\r\n}\r\n\r\n.am-dropdown-box {\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    font-size: 1rem;\r\n    max-width: 95vw;\r\n}\r\n\r\n.am-dropdown-box.as-enable-search .absol-search-text-input,\r\n.am-dropdown-box-modal.as-enable-search .absol-search-text-input\r\n{\r\n    visibility: visible;\r\n}\r\n\r\n.am-dropdown-box-header {\r\n    height: calc(2em + 10px);\r\n    display: block;\r\n    white-space: nowrap;\r\n    box-sizing: border-box;\r\n    padding-top: 5px;\r\n    padding-bottom: 5px;\r\n    padding-left: 10px;\r\n    border-bottom: solid 1px #dddddd;\r\n}\r\n\r\n.am-dropdown-box-header .absol-search-text-input {\r\n    display: inline-block;\r\n    width: calc(100% - 2em - 18px);\r\n    vertical-align: middle;\r\n    box-sizing: border-box;\r\n    background-color: white;\r\n    visibility: hidden;\r\n}\r\n\r\n.am-dropdown-box-close-btn {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    border-radius: 50%;\r\n    padding: 0;\r\n    height: 2em;\r\n    width: 2em;\r\n    font-size: inherit;\r\n    border: none;\r\n    outline: none;\r\n    margin-left: 10px;\r\n    background-color: rgb(255, 255, 255);\r\n    color: #7a7a7a;\r\n    white-space: nowrap;\r\n}\r\n\r\n.am-dropdown-box-close-btn span {\r\n    font-size: 1.5em;\r\n}\r\n\r\n.am-dropdown-box-close-btn:active {\r\n    background-color: rgba(169, 169, 172, 0.3);\r\n}\r\n\r\n.am-dropdown-box-item {\r\n    border-bottom: 1px solid #efefef;\r\n}\r\n", ""]);



/***/ }),

/***/ 36485:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "\r\n.absol-drop-panel-head {\r\n    height: 2.75em;\r\n    line-height: 2.75em;\r\n    -webkit-box-shadow: 0px 3px 4px -3px rgba(0, 0, 0, 0.75);\r\n    -moz-box-shadow: 0px 3px 4px -3px rgba(0, 0, 0, 0.75);\r\n    box-shadow: 0px 3px 4px -3px rgba(0, 0, 0, 0.75);\r\n    background-color: rgba(240, 240, 242);\r\n    color: black;\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n}\r\n\r\n.absol-drop-panel-head .toggler-ico path {\r\n    fill: rgb(104, 104, 104);\r\n}\r\n\r\n\r\n.dark .absol-drop-panel-head {\r\n    background-color: rgba(54, 54, 56);\r\n    color: rgb(204, 204, 204);\r\n}\r\n\r\n.absol-drop-panel.show .absol-drop-panel-body {\r\n    height:auto;\r\n}\r\n\r\n.absol-drop-panel-body {\r\n    transition: height 0.2s;\r\n    height: 0;\r\n    overflow-x: hidden;\r\n    overflow-y: auto;\r\n}\r\n\r\n\r\n.absol-drop-panel.show>.absol-drop-panel-head  .toggle-close{\r\n    display: none;\r\n}\r\n\r\n.absol-drop-panel:not(.show)>.absol-drop-panel-head  .toggle-open{\r\n    display: none;\r\n}\r\n\r\n", ""]);



/***/ }),

/***/ 40468:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-drop-zone {\r\n}", ""]);



/***/ }),

/***/ 94492:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-dual-select-box {\r\n\r\n}\r\n\r\n\r\n.am-dual-select-box .absol-selectlist-item span {\r\n    white-space: normal;\r\n    display: inline-block;\r\n    margin-right: 0;\r\n    line-height: calc(30rem / 14);\r\n}\r\n\r\n.am-mobile-theme.bsc-white .am-dual-select-box .absol-selectlist-item span{\r\n    line-height: calc(30rem / 14);\r\n}\r\n\r\n.am-dual-select-box .absol-selectlist-item {\r\n    height: auto;\r\n}\r\n\r\n.am-mobile-theme.bsc-white .am-dual-select-box .absol-selectlist-item {\r\n    height: auto;\r\n}\r\n\r\n.am-dual-select-box .absol-selectlist-item:not(:last-child) {\r\n    border-bottom: 1px solid #efefef;\r\n}", ""]);



/***/ }),

/***/ 4487:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-dual-select-box {\r\n    -webkit-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    -moz-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    --max-height: 70vh;\r\n    box-sizing: border-box;\r\n    --dual-list-estimate-width: 0;\r\n    width: var(--dual-list-estimate-width);\r\n    z-index: 10000000;\r\n    background-color: white;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    font-size: 1rem;\r\n\r\n}\r\n\r\n.as-dual-select-box-search-ctn {\r\n    padding: 5px;\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n}\r\n\r\n.as-dual-select-box.as-enable-search.as-anchor-6 .as-dual-select-box-search-ctn,\r\n.as-dual-select-box.as-enable-search.as-anchor-5 .as-dual-select-box-search-ctn {\r\n    bottom: 0;\r\n}\r\n\r\n.as-dual-select-box.as-enable-search.as-anchor-6,\r\n.as-dual-select-box.as-enable-search.as-anchor-5 {\r\n    padding-bottom: calc(2rem + 10px);\r\n}\r\n\r\n.as-dual-select-box.as-enable-search.as-anchor-1,\r\n.as-dual-select-box.as-enable-search.as-anchor-2 {\r\n    padding-top: calc(2rem + 10px);\r\n}\r\n\r\n.as-dual-select-box.as-enable-search.as-anchor-1 .as-dual-select-box-search-ctn,\r\n.as-dual-select-box.as-enable-search.as-anchor-2 .as-dual-select-box-search-ctn {\r\n    top: 0;\r\n}\r\n\r\n\r\n.as-dual-select-box-list-ctn {\r\n    white-space: nowrap;\r\n    display: flex;\r\n    align-items: stretch;\r\n}\r\n\r\n.as-dual-select-box:not(.as-enable-search) .as-dual-select-box-search-ctn {\r\n    display: none;\r\n}\r\n\r\n.as-dual-select-box-list {\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    max-height: calc(var(--max-height) - 2em - 2em - 11px);\r\n    overflow-y: auto;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-dual-select-box.as-enable-search .as-dual-select-box-list {\r\n    max-height: calc(var(--max-height) - 6rem - 11px);\r\n}\r\n\r\n.as-dual-select-box-arrow-ctn {\r\n    display: inline-block;\r\n    vertical-align: top;\r\n}\r\n\r\n.as-dual-select-box-arrow-ctn::before,\r\n.as-dual-select-box-arrow-ctn span {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-dual-select-box-arrow-ctn::before {\r\n    content: \"\";\r\n    height: 100%;\r\n}\r\n\r\n\r\n.as-dual-select-box-list:first-child {\r\n    border-right: solid 1px #dddddd;\r\n}\r\n\r\n\r\n.as-dual-select-box-list:last-child {\r\n    border-left: solid 1px #dddddd;\r\n    flex-grow: 1;\r\n}\r\n\r\n.as-dual-select-menu.absol-selectmenu {\r\n    min-width: calc(var(--dual-list-estimate-text-width) + 5.5em);\r\n    --dual-list-estimate-text-width: 20px;\r\n}\r\n\r\n\r\n.am-dual-select-menu .absol-selectmenu-holder-item{\r\n    position: relative;\r\n    height: 100%;\r\n    top: unset;\r\n    bottom: unset;\r\n}\r\n\r\n.am-dual-select-menu{\r\n    width: auto;\r\n}", ""]);



/***/ }),

/***/ 48367:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-dv-exp-tree {\r\n\r\n}\r\n\r\n.as-dv-exp-tree > .absol-exp-node > .absol-exp-node-level {\r\n}\r\n\r\n.as-dv-exp-tree > .absol-exp-node > .absol-radio-button {\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n    margin-right: 5px;\r\n    /*margin-left: 5px;*/\r\n}\r\n\r\n\r\n.as-dv-exp-tree:not(.as-has-radio) > .absol-exp-node > .absol-radio-button {\r\n    /*visibility: hidden;*/\r\n    display: none;\r\n}\r\n\r\n\r\n.as-dv-exp-tree > .absol-exp-node > .as-dv-exp-tree-index {\r\n    box-sizing: border-box;\r\n    padding: 0 0 0 0.5em;\r\n    margin-left: 0.5em;\r\n    outline: none;\r\n    height: 1.2em;\r\n    min-width: 3em;\r\n    box-shadow: 0 0  0 1px #dddddd;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    background-color: white;\r\n}\r\n\r\n.as-dv-exp-tree > .absol-exp-node > .as-dv-exp-tree-index:hover{\r\n    box-shadow: 0 0  0 1px #aaaaaa;\r\n}\r\n\r\n.as-dv-exp-tree:not(.as-has-index-input) > .absol-exp-node > .as-dv-exp-tree-index {\r\n    display: none;\r\n}\r\n\r\n/*.as-dv-exp-tree>.absol-exp-node:not(.status-open):not(.status-close)>.toggler-ico{*/\r\n/*    display: none;*/\r\n/*}*/\r\n\r\n/*.as-dv-exp-tree .absol-exp-node-ext-icon{*/\r\n/*    display: none;*/\r\n/*}*/", ""]);



/***/ }),

/***/ 70131:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ":root {\r\n    --table-row-height: 40px;\r\n}\r\n\r\n\r\n.as-efficient-table-wrapper {\r\n    box-sizing: border-box;\r\n    position: relative;\r\n    overflow: hidden;\r\n    overflow-anchor: none !important;\r\n    scroll-snap-stop: normal !important;\r\n    overscroll-behavior: unset !important;\r\n    scroll-behavior: unset !important;\r\n}\r\n\r\n.as-efficient-table-wrapper > .as-dynamic-table {\r\n    position: relative;\r\n    table-layout: auto;\r\n}\r\n\r\n.as-efficient-table-wrapper.as-headless .as-dynamic-table {\r\n    table-layout: fixed;\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper {\r\n    --dt-content-height: 0px;\r\n    --dt-scroll-bar-width: 17px;\r\n    --dt-content-width: 0;\r\n    --dt-header-height: 0;\r\n    --dt-fixed-x-width: 0;\r\n    --dt-dragging-row-height: 0;\r\n    position: relative;\r\n\r\n    /*padding-right: 17px;*/\r\n    /*padding-bottom: 17px;*/\r\n    box-sizing: border-box;\r\n    height: calc(var(--dt-content-height) + 1px);\r\n    overflow: hidden;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-width-match-parent {\r\n\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-table-layout-fixed table.as-dynamic-table {\r\n    table-layout: fixed;\r\n}\r\n\r\ntd .as-dynamic-table-wrapper .as-dt-header-cell {\r\n    --as-force-min-width: 0;\r\n}\r\n\r\n.as-dynamic-table-wrapper .as-dt-header-cell.as-col-width-auto::before { /*table in table bug*/\r\n    content: \"\";\r\n    display: block;\r\n    width: var(--as-force-min-width);\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-inline {\r\n    max-width: calc(var(--dt-content-width) + var(--dt-scroll-bar-width));\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-x.as-has-fixed-col .as-dynamic-table-viewport::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    top: 0;\r\n    bottom: 0;\r\n    border-right: 2px solid #aaa;\r\n    left: calc(var(--dt-fixed-x-width) - 1px);\r\n    z-index: 20;\r\n    pointer-events: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-y .as-dynamic-table-viewport::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 0;\r\n    width: 100%;\r\n    max-width: var(--dt-content-width);\r\n    border-top: 2px solid #aaa;\r\n    top: calc(var(--dt-header-height) - 1px);\r\n    z-index: 20;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-has-fixed-col {\r\n    max-width: var(--dt-content-width);\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-inline {\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-overflow-x {\r\n    padding-bottom: var(--dt-scroll-bar-width);\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-x {\r\n    height: calc(var(--dt-content-height) + var(--dt-scroll-bar-width));\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-x .as-dynamic-table-hb,\r\n.as-dynamic-table-wrapper.as-overflow-y .as-dynamic-table-vb {\r\n    display: block;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-y {\r\n    padding-right: var(--dt-scroll-bar-width);\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-y.as-width-auto {\r\n    /*max-width: calc(var(--dt-content-width) + var(--dt-scroll-bar-width)); disable for resizer testing*/\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-y.as-has-fixed-col,\r\n.as-dynamic-table-wrapper.as-overflow-y:not(.as-width-match-parent) {\r\n    /*max-width: calc(var(--dt-content-width) + var(--dt-scroll-bar-width));*/\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-adapt-infinity-grow.as-auto-height {\r\n    height: calc(var(--dt-content-height) + 1px) !important;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-adapt-infinity-grow {\r\n    max-height: unset !important;\r\n}\r\n\r\n\r\n.as-dynamic-table-viewport {\r\n    width: 100%;\r\n    height: 100%;\r\n    overflow: hidden;\r\n    position: relative;\r\n}\r\n\r\n\r\n.as-dynamic-table.as-dt-fixed-y,\r\n.as-dynamic-table.as-fixed-x {\r\n    table-layout: fixed;\r\n    width: auto;\r\n    /*display: inline-block;*/\r\n}\r\n\r\n.as-dynamic-table-fixed-x-ctn {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    z-index: 6;\r\n    display: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-has-fixed-col .as-dynamic-table-fixed-x-ctn {\r\n    display: block;\r\n}\r\n\r\n.as-dynamic-table-fixed-xy-ctn {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    z-index: 9;\r\n}\r\n\r\n\r\n.as-dynamic-table-fixed-y-ctn {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    z-index: 6;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-headless .as-dynamic-table-fixed-x-ctn,\r\n.as-dynamic-table-wrapper.as-headless .as-dynamic-table-fixed-y-ctn,\r\n.as-dynamic-table-wrapper.as-headless .as-dynamic-table-fixed-xy-ctn {\r\n    visibility: hidden;\r\n}\r\n\r\n.as-dynamic-table-space {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    width: 100%;\r\n}\r\n\r\n.as-dynamic-table-space > table {\r\n    vertical-align: top;\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-has-fixed-col .as-dynamic-table-space,\r\n.as-dynamic-table-wrapper.as-inline .as-dynamic-table-space {\r\n    width: 8096px;\r\n}\r\n\r\n\r\n.as-dynamic-table-vb {\r\n    position: absolute;\r\n    right: 0;\r\n    top: 0;\r\n    height: 100%;\r\n    width: var(--dt-scroll-bar-width);\r\n    display: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-x .as-dynamic-table-vb {\r\n    height: calc(100% - var(--dt-scroll-bar-width));\r\n}\r\n\r\n.as-dynamic-table-hb {\r\n    position: absolute;\r\n    left: 0;\r\n    bottom: 0;\r\n    width: 100%;\r\n    height: var(--dt-scroll-bar-width);\r\n    display: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-overflow-y .as-dynamic-table-hb {\r\n    width: calc(100% - var(--dt-scroll-bar-width));\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-no-paging .absol-page-selector {\r\n    display: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper .absol-page-selector[data-page-count=\"1\"] {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-dynamic-table-fixed-x-col {\r\n    display: none;\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    width: auto !important;\r\n    z-index: 12;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-has-fixed-col .as-dynamic-table-fixed-x-col {\r\n    display: block;\r\n}\r\n\r\n.as-dynamic-table {\r\n    font-size: 1rem;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    border-collapse: collapse;\r\n    box-sizing: border-box;\r\n    display: inline-table;\r\n    table-layout: fixed;\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper:not(.as-inline) .as-dynamic-table-space .as-dynamic-table {\r\n    /*min-width: 100%;*/\r\n    table-layout: auto;\r\n    /*display: table;*/\r\n}\r\n\r\n.as-dt-header {\r\n    background-color: #d6d6d6;\r\n}\r\n\r\n.as-dt-header-cell {\r\n    font-weight: bold;\r\n    padding: 10px;\r\n    border: 1px solid #ababab;\r\n    position: relative;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-dt-header-cell-resizer {\r\n    position: absolute;\r\n    right: -3px;\r\n    top: 0;\r\n    bottom: 0;\r\n    width: 6px;\r\n    /*border-right: 6px solid transparent;*/\r\n    z-index: 5;\r\n    cursor: col-resize;\r\n    /*display: none;*/\r\n}\r\n\r\n/*\r\n.as-dynamic-table-wrapper[id] .as-dt-header-cell[data-col-id] .as-dt-header-cell-resizer {\r\n    display: block;\r\n}*/\r\n\r\n.as-dt-header-cell[data-sort-key] {\r\n    padding-right: 1.75em;\r\n    cursor: pointer;\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n}\r\n\r\n.as-dt-sort-btn {\r\n    display: none;\r\n    vertical-align: middle;\r\n    line-height: 1.5em;\r\n    position: absolute;\r\n    right: 0.25em;\r\n    top: calc(50% - 0.75em);\r\n    /*color: #a9a9a9;*/\r\n\r\n    height: 1.5em;\r\n    width: 1.5em;\r\n    pointer-events: none;\r\n    color: transparent;\r\n}\r\n\r\n.as-dt-header-cell[data-sort-key] .as-dt-sort-btn {\r\n    display: inline-block;\r\n}\r\n\r\n.as-dt-header-cell[data-sort-order=\"ascending\"] .as-dt-sort-btn .mdi-menu-down,\r\n.as-dt-header-cell[data-sort-order=\"descending\"] .as-dt-sort-btn .mdi-menu-up {\r\n    color: #007bff;\r\n}\r\n\r\n.as-dt-sort-btn span {\r\n    position: absolute;\r\n    display: inline-block;\r\n    left: 0;\r\n    font-size: 2em;\r\n\r\n}\r\n\r\n.as-dt-sort-btn .mdi-menu-up {\r\n    bottom: 0.18em;\r\n}\r\n\r\n\r\n.as-dt-sort-btn .mdi-menu-down {\r\n    top: 0.18em;\r\n}\r\n\r\n\r\n.as-dt-body-row:nth-child(odd) {\r\n    background-color: rgb(245, 245, 245);\r\n}\r\n\r\n.as-dt-body-row:nth-child(even) {\r\n    background-color: white;\r\n}\r\n\r\n.as-dt-body-cell {\r\n    padding: 4px 5px;\r\n    border: 1px solid #ddd;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-dt-body-row .as-drag-zone{\r\n    user-select: none;\r\n}\r\n\r\n.as-dt-body-row .as-drag-zone .mdi,\r\n.as-tree-table-row .as-drag-zone .mdi {\r\n    font-size: 25px;\r\n}\r\n\r\n\r\n.as-dt-body-row {\r\n    height: calc(40em / 14);\r\n}\r\n\r\n.as-dt-body-row {\r\n    height: var(--table-row-height);\r\n}\r\n\r\n.as-dynamic-table-wrapper:not(.as-searching) .as-dt-body-row .as-drag-zone,\r\n.as-tree-table:not(.as-searching) .as-tree-table-row .as-drag-zone {\r\n    cursor: move;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-row-dragging .as-dt-body-row {\r\n    transition: transform 0.2s;\r\n}\r\n\r\n.as-dt-body-row.as-dragging {\r\n    opacity: 0.0;\r\n    /*position: relative;*/\r\n    /*z-index: 1000000;*/\r\n\r\n    /*opacity: 0.8;*/\r\n}\r\n\r\n\r\n.as-dt-body-row.as-after-dragging {\r\n\r\n}\r\n\r\n\r\n.as-dt-body-row-cloned-ctn {\r\n    position: fixed;\r\n    cursor: move;\r\n    opacity: 0.7;\r\n    -webkit-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    -moz-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n\r\n}\r\n\r\n.as-dt-body-row-cloned-ctn > table {\r\n    display: block;\r\n}\r\n\r\n.as-dt-body-row.as-drag-neighbor {\r\n    position: relative;\r\n    z-index: 1;\r\n    transition: transform 0.05s;\r\n\r\n}\r\n\r\n.as-dt-body-row.as-dragging.as-homing {\r\n    transition: transform 0.06s;\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-searching .as-drag-zone {\r\n    opacity: 0.3;\r\n    pointer-events: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper .as-drag-zone {\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n}\r\n\r\n.as-dt-insert-line {\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    border-top: 2px solid blue;\r\n}\r\n\r\n.as-dt-body-cell > .absol-checkbox:last-child:first-child {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-dt-row-index::before {\r\n    content: attr(data-idx);\r\n}\r\n\r\n.as-dt-row-index:not([data-idx])::before {\r\n    content: \"000\";\r\n}\r\n\r\n\r\n.as-dynamic-table-wrapper.as-no-graphic .as-dt-header-cell,\r\n.as-dynamic-table-wrapper.as-no-graphic .as-dt-body-cell {\r\n    border: none;\r\n}\r\n\r\n.as-dynamic-table-wrapper.as-no-graphic .as-dt-header,\r\n.as-dynamic-table-wrapper.as-no-graphic .as-dt-body-row {\r\n    background-color: transparent;\r\n}\r\n\r\n\r\n.absol-single-page-scroller-viewport .as-dynamic-table-wrapper:not(.as-adapt-infinity-grow) {\r\n    max-height: calc(var(--single-page-scroller-height) - 2px);\r\n}\r\n\r\n.absol-single-page-scroller-viewport > div:last-child .as-dynamic-table-wrapper:not(.as-adapt-infinity-grow) {\r\n    max-height: calc(var(--single-page-scroller-height) - 2px);\r\n}\r\n\r\n/*.absol-single-page-scroller-viewport > div:last-child .as-dynamic-table-wrapper.as-overflow-y:not(.as-adapt-infinity-grow) {*/\r\n/*    max-height: calc(var(--single-page-scroller-height) - 2px);*/\r\n/*} try remove this*/\r\n\r\n\r\n/*Keeview modal*/\r\nbody > div > table .as-dynamic-table-wrapper {\r\n    width: var(--dt-content-width);\r\n    max-width: calc(90vw - 50px);\r\n}\r\n\r\nbody > div > table .as-dynamic-table-wrapper.as-overflow-y {\r\n    width: calc(var(--dt-content-width) + var(--dt-scroll-bar-width));\r\n    max-width: calc(90vw - 50px);\r\n}\r\n\r\n/*.as-dynamic-table-wrapper*/\r\n\r\n", ""]);



/***/ }),

/***/ 34854:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "\r\n.absol-editabe-text {\r\n    display: inline;\r\n}\r\n\r\n.absol-editabe-text span {\r\n    font-style: inherit;\r\n    font-size: inherit;\r\n    white-space: pre;\r\n}\r\n\r\n.absol-editabe-text-higne {\r\n    display: inline-block;\r\n    position: relative;\r\n    width: 0px;\r\n    height: 0ox;\r\n}\r\n\r\n.absol-editabe-text-higne input {\r\n    position: absolute;\r\n    display: none;\r\n    border: none;\r\n    top: -2;\r\n    left: -2;\r\n    padding-top: 0px;\r\n    padding-left: 2px;\r\n    padding-bottom: 4px;\r\n    margin: 0;\r\n    background: transparent;\r\n    outline: none;\r\n    font-style: inherit;\r\n    font-size: inherit;\r\n}\r\n\r\n.absol-editabe-text.editing .absol-editabe-text-higne input {\r\n    display: block;\r\n}\r\n\r\n.absol-editabe-text.editing span {\r\n    visibility: hidden;\r\n}\r\n\r\n.absol-editabe-text.editing {\r\n    -webkit-box-shadow: 0px 0px 2px 0px rgba(33, 77, 255, 1);\r\n    -moz-box-shadow: 0px 0px 2px 0px rgba(33, 77, 255, 1);\r\n    box-shadow: 0px 0px 2px 0px rgba(33, 77, 255, 1);\r\n    border-radius: 0.17em;\r\n}\r\n", ""]);



/***/ }),

/***/ 35593:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-emoji-counter {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    color: rgb(38, 141, 145);\r\n    box-sizing: border-box;\r\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.2);\r\n    height:  calc(2rem + 2px);\r\n    text-align: center;\r\n    min-height:  calc(2rem + 2px);\r\n    padding: 0 8px;\r\n    border-radius: calc(1rem + 1px);\r\n    font-size: 1rem;\r\n    background-color: white;\r\n    outline: none;\r\n}\r\n\r\n.as-emoji-counter::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n}\r\n\r\n.as-emoji-counter-sprite {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    width: 1.285em;\r\n    height:  1.285em;\r\n}\r\n\r\n.as-emoji-counter-num {\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    margin-left: 0.2em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    font-size: inherit;\r\n    color: inherit;\r\n    cursor: default;\r\n}\r\n\r\n.as-emoji-counter-num:empty {\r\n    display: none;\r\n}\r\n\r\n.as-emoji-counter.as-zero {\r\n    background-color: rgba(220, 220, 220);\r\n}\r\n\r\n.as-emoji-counter + .as-emoji-counter {\r\n    margin-left: 0.3em;\r\n}", ""]);



/***/ }),

/***/ 5543:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-emoji-picker {\r\n    font-size: calc(12em / 14);\r\n    border: 1px solid #dddddd;\r\n    box-sizing: border-box;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.as-emoji-picker-preview {\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    width: 5.7em;\r\n    height: calc(8em + 30px);\r\n    border-right: 1px solid #dddddd;\r\n    text-align: center;\r\n\r\n}\r\n\r\n\r\n.as-emoji-picker-preview-anim {\r\n    width: 60px;\r\n    height: 60px;\r\n    margin-top: 5px;\r\n}\r\n\r\n.as-emoji-picker-preview-desc {\r\n    font-size: 12px;\r\n    font-weight: bold;\r\n    color: black;\r\n}\r\n\r\n.as-emoji-picker-preview-shortcut {\r\n    font-size: 12px;\r\n    color: rgb(70, 70, 70);\r\n}\r\n\r\n\r\n.as-emoji-picker-list {\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    overflow-y: auto;\r\n    width: calc(100% - 5.7em - 1px);\r\n    height: calc(8em + 30px);\r\n    padding: 5px;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-emoji-picker-item {\r\n    display: inline-block;\r\n    padding: 5px;\r\n    width: 2em;\r\n    height: 2em;\r\n    box-sizing: border-box;\r\n    border-radius: 0.4em;\r\n}\r\n\r\n.as-emoji-picker-item:hover {\r\n    background-color: rgba(169, 169, 170, 0.3);\r\n}\r\n\r\n.as-emoji-picker-item:active {\r\n    background-color: rgba(169, 169, 170, 0.7);\r\n}", ""]);



/***/ }),

/***/ 47110:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-emoji-picker-tooltip {\r\n    --tool-tip-background-color: white;\r\n    filter: drop-shadow(2px 2px 4px rgba(0, 0, 0, 0.5));\r\n}\r\n\r\n.as-emoji-picker-tooltip .absol-tooltip-content {\r\n    display: block;\r\n    padding: 0;\r\n    box-sizing: border-box;\r\n    position: relative;\r\n    white-space: nowrap;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-emoji-picker-tooltip-left-btn,\r\n.as-emoji-picker-tooltip-right-btn {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 60px;\r\n    width: 40px;\r\n    font-size: 25px;\r\n    padding: 0;\r\n    background-color: transparent;\r\n    border: none;\r\n    color: rgb(155, 155, 175);\r\n    outline: none;\r\n}\r\n\r\n.as-emoji-picker-tooltip-left-btn:hover,\r\n.as-emoji-picker-tooltip-right-btn:hover {\r\n    background-color: rgba(156, 156, 156, 0.15);\r\n}\r\n\r\n.as-emoji-picker-tooltip-left-btn:active,\r\n.as-emoji-picker-tooltip-right-btn:active {\r\n    background-color: rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.as-emoji-picker-tooltip-left-btn:disabled,\r\n.as-emoji-picker-tooltip-right-btn:disabled {\r\n    pointer-events: none;\r\n    color: rgb(230, 230, 235);\r\n}\r\n\r\n.as-emoji-picker-tooltip-scroller {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    position: relative;\r\n    width: 360px;\r\n    height: 60px;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-emoji-picker-tooltip-icon-list {\r\n    position: absolute;\r\n    top: 0;\r\n    bottom: 0;\r\n    left: 0;\r\n    white-space: nowrap;\r\n}\r\n\r\n\r\n.as-emoji-picker-tooltip:not(.as-scrolling) .as-emoji-picker-tooltip-icon-list {\r\n    transition: left 0.5s;\r\n}\r\n\r\n.as-emoji-picker-tooltip-icon-btn {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 60px;\r\n    width: 60px;\r\n    padding: 0;\r\n    border: none;\r\n    outline: none;\r\n    background-color: transparent;\r\n}\r\n\r\n\r\n.as-emoji-picker-tooltip-icon {\r\n    transition: width 0.3s, height 0.3s;\r\n    width: 35px;\r\n    height: 35px;\r\n}\r\n\r\n.as-emoji-picker-tooltip-icon-btn:hover .as-emoji-picker-tooltip-icon {\r\n    width: 45px;\r\n    height: 45px;\r\n}\r\n\r\n.as-emoji-picker-tooltip-remove-btn {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 60px;\r\n    width: 60px;\r\n    padding: 0;\r\n    border: none;\r\n    outline: none;\r\n    background-color: transparent;\r\n    font-size: 40px;\r\n    color: rgb(185, 185, 185);\r\n}\r\n\r\n.as-emoji-picker-tooltip-remove-btn:hover {\r\n    color: rgb(255, 30, 30);\r\n}\r\n\r\n\r\n.as-emoji-picker-tooltip:not(.as-mobile) .as-emoji-picker-tooltip-page-indicator {\r\n    display: none;\r\n}\r\n\r\n.as-emoji-picker-tooltip.as-mobile .as-emoji-picker-tooltip-right-btn,\r\n.as-emoji-picker-tooltip.as-mobile .as-emoji-picker-tooltip-left-btn {\r\n    display: none;\r\n}\r\n\r\n\r\n@media (max-width: 410px) and (min-width: 310px) {\r\n    .as-emoji-picker-tooltip-left-btn,\r\n    .as-emoji-picker-tooltip-right-btn {\r\n        height: 36px;\r\n        width: 24px;\r\n        font-size: 15px;\r\n    }\r\n\r\n    .as-emoji-picker-tooltip-scroller {\r\n        width: 216px;\r\n        height: 36px;\r\n    }\r\n\r\n    .as-emoji-picker-tooltip-icon-btn {\r\n        height: 36px;\r\n        width: 36px;\r\n    }\r\n\r\n\r\n    .as-emoji-picker-tooltip-icon {\r\n        width: 21px;\r\n        height: 21px;\r\n    }\r\n\r\n    .as-emoji-picker-tooltip-icon-btn:hover .as-emoji-picker-tooltip-icon {\r\n        width: 27px;\r\n        height: 27px;\r\n    }\r\n\r\n    .as-emoji-picker-tooltip-remove-btn {\r\n        height: 36px;\r\n        width: 36px;\r\n        font-size: 24px;\r\n    }\r\n}\r\n\r\n@media (max-width: 510px) and (min-width: 410px) {\r\n    .as-emoji-picker-tooltip-left-btn,\r\n    .as-emoji-picker-tooltip-right-btn {\r\n        height: 48px;\r\n        width: 32px;\r\n        font-size: 20px;\r\n    }\r\n\r\n\r\n    .as-emoji-picker-tooltip-scroller {\r\n        width: 288px;\r\n        height: 48px;\r\n    }\r\n\r\n\r\n    .as-emoji-picker-tooltip-icon-btn {\r\n        height: 48px;\r\n        width: 48px;\r\n    }\r\n\r\n\r\n    .as-emoji-picker-tooltip-icon {\r\n        width: 28px;\r\n        height: 28px;\r\n    }\r\n\r\n    .as-emoji-picker-tooltip-icon-btn:hover .as-emoji-picker-tooltip-icon {\r\n        width: 36px;\r\n        height: 36px;\r\n    }\r\n\r\n    .as-emoji-picker-tooltip-remove-btn {\r\n        height: 48px;\r\n        width: 48px;\r\n        font-size: 32px;\r\n    }\r\n}", ""]);



/***/ }),

/***/ 67691:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-emoji-user-list-tooltip {\r\n    --tool-tip-background-color: white;\r\n    filter: drop-shadow(2px 2px 4px rgba(0, 0, 0, 0.5));\r\n    text-align: left;\r\n}\r\n\r\n\r\n.as-emoji-user-list-tooltip-emoji {\r\n    position: absolute;\r\n    width: 60px;\r\n    height: 60px;\r\n    top: -30px;\r\n    left: calc(50% - 30px);\r\n    z-index: 2;\r\n\r\n}\r\n\r\n.as-emoji-user-list-tooltip .absol-tooltip-content {\r\n    min-height: 60px;\r\n    min-width: 120px;\r\n    padding-top: 25px;\r\n}\r\n\r\n.as-emoji-user-list-tooltip-user{\r\n    padding: 3px  10px 3px 0 ;\r\n}\r\n\r\n.as-emoji-user-list-tooltip-user.as-clickable{\r\n    cursor: pointer;\r\n}\r\n\r\n.as-emoji-user-list-tooltip-avatar {\r\n    width: 30px;\r\n    height: 30px;\r\n    border-radius: 50%;\r\n    background-size: cover;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-emoji-user-list-tooltip-name {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    margin-left: 10px;\r\n    color: rgb(70, 70, 72);\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}", ""]);



/***/ }),

/***/ 49931:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "/*.as-expression-input {*/\r\n/*    box-sizing: border-box;*/\r\n/*    border: 1px solid var(--as-input-border-color);*/\r\n/*    min-height: var(--as-input-height);*/\r\n\r\n/*}*/\r\n\r\n/*.as-expression-input-content {*/\r\n/*    font-size: 14px;*/\r\n/*    line-height: 2;*/\r\n/*    min-height: 2em;*/\r\n/*}*/\r\n\r\n/*.as-expression-input-content::before{*/\r\n/*    content: \"=\";*/\r\n/*    color: #aaaaaa;*/\r\n/*    display: inline-block;*/\r\n/*    height: 28px;*/\r\n/*    vertical-align: middle;*/\r\n/*    padding: 0 5px;*/\r\n/*}*/\r\n\r\n/*.asei-identifier{*/\r\n/*    display: inline-block;*/\r\n/*}*/\r\n\r\n\r\n.as-expression-input {\r\n    font-family: Consolas, monospace;\r\n    border-color: var(--as-input-border-color);\r\n    border-style: solid;\r\n    box-sizing: border-box;\r\n    border-width: 1px;\r\n    border-radius: var(--as-input-border-radius);\r\n    font-size: 14px;\r\n    position: relative;\r\n    line-height: 2;\r\n    background-color: white;\r\n}\r\n\r\n.as-expression-input.as-disabled {\r\n    background-color: var(--as-disabled-background-color);\r\n    color: var(--as-disabled-text-color);\r\n    pointer-events: none;\r\n}\r\n\r\n.as-expression-input.as-border-none {\r\n    border: none;\r\n}\r\n\r\n.as-expression-input:not(.as-read-only):not(.as-disabled){\r\n    user-select: none;\r\n}\r\n\r\n.as-expression-input-range-ctn {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    z-index: 9;\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n.as-expression-input-range {\r\n    position: absolute;\r\n    background-color: rgba(19, 176, 233, 0.4);\r\n}\r\n\r\n\r\n.as-expression-input-content {\r\n    min-height: 28px;\r\n    outline: none;\r\n    line-height: inherit;\r\n    white-space: pre-wrap;\r\n    padding-left: var(--as-input-horizontal-padding);\r\n}\r\n\r\n.as-expression-input-range-ctn {\r\n    left: var(--as-input-horizontal-padding);\r\n\r\n}\r\n\r\n.as-expression-input.as-has-icon .as-expression-input-content {\r\n    padding-left: calc(18px + var(--as-input-horizontal-padding));\r\n}\r\n\r\n.as-expression-input.as-has-icon .as-expression-input-range-ctn {\r\n    left: calc(18px + var(--as-input-horizontal-padding));\r\n}\r\n\r\n\r\n.as-expression-input-content .as-token[data-type=\"number\"] {\r\n    color: #0289f6;\r\n}\r\n\r\n.as-expression-input-content .as-token[data-type=\"string\"] {\r\n    color: darkgreen;\r\n}\r\n\r\n\r\n.as-expression-input-content .as-token[data-ex-type=\"boolean\"] {\r\n    color: #f6a128;\r\n}\r\n\r\n\r\n.as-expression-input-content .as-token[data-ex-type=\"function\"] {\r\n    color: #2419c8\r\n}\r\n\r\n.as-expression-input-icon-ctn {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    pointer-events: none;\r\n    font-size: 1.5em;\r\n    line-height: 28px;\r\n    display: none;\r\n}\r\n\r\n\r\n.as-expression-input.as-has-icon .as-expression-input-icon-ctn {\r\n    display: block;\r\n}\r\n\r\n.as-expression-input-icon-ctn .mdi-equal {\r\n    color: rgba(169, 169, 170);\r\n}\r\n\r\n.as-expression-input-icon-ctn .mdi-alert-circle {\r\n    color: red;\r\n    opacity: 0.8;\r\n    display: none;\r\n}\r\n\r\n\r\n.as-expression-input.as-error .as-expression-input-icon-ctn .mdi-alert-circle {\r\n    display: inline-block;\r\n}\r\n\r\n.as-expression-input.as-error .as-expression-input-icon-ctn .mdi-equal {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-token.as-unexpected-token {\r\n    background-color: red;\r\n    animation-name: error_blink;\r\n    animation-duration: 1s;\r\n    animation-iteration-count: infinite;\r\n}\r\n\r\n.as-expression-input-autocomplete {\r\n    min-width: 10em;\r\n    position: fixed;\r\n    z-index: 1000;\r\n}\r\n\r\n.as-expression-input-autocomplete .absol-selectlist-item {\r\n    padding-right: 0.3em;\r\n}\r\n\r\n.as-ei-suggestion-list-item {\r\n    --level: 0;\r\n    height: 30px;\r\n    padding-right: 1em;\r\n    min-width: 10em;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-ei-suggestion-list-item:hover {\r\n    background-color: var(--as-list-item-hover-background-color);\r\n}\r\n\r\n.as-ei-suggestion-list-item.as-selected {\r\n    background-color: var(--as-list-item-selected-background-color);\r\n}\r\n\r\n\r\n.as-ei-suggestion-list-item::before {\r\n    content: \"\";\r\n    height: 100%;\r\n}\r\n\r\n.as-ei-suggestion-list-item > *,\r\n.as-ei-suggestion-list-item::before\r\n{\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-ei-suggestion-list-item:not(.as-status-open):not(.as-status-close)  .as-eisli-toggler{\r\n    visibility: hidden;\r\n}\r\n\r\n.as-ei-suggestion-list-item.as-status-open .toggle-close,\r\n.as-ei-suggestion-list-item.as-status-close .toggle-open\r\n{\r\n    display: none;\r\n}\r\n\r\n\r\n\r\n.as-eisli-toggler {\r\n    text-align: right;\r\n    width: calc(1em * var(--level) + 1.5em);\r\n    padding-right: 0.5em;\r\n}\r\n\r\n.as-ei-suggestion-list {\r\n    max-height: calc(100vh - 100px);\r\n    overflow-y:auto ;\r\n}\r\n\r\n.as-ei-suggestion-list .mdi {\r\n    width: 30px;\r\n    text-align: center;\r\n    font-size: 1em;\r\n}\r\n\r\n.as-ei-suggestion-list .mdi.mdi-function {\r\n    color: #2419c8;\r\n}\r\n\r\n.as-ei-suggestion-list .mdi.mdi-variable {\r\n    color: #5b5d42;\r\n}\r\n\r\n.as-ei-suggestion-list .am-select-tree-leaf-item-icon-ctn {\r\n    left: calc(2em * var(--level) - 14px)\r\n}\r\n\r\n.as-expression-input-real-input {\r\n    position: absolute;\r\n    z-index: 10;\r\n    right: 0;\r\n    top: 0;\r\n    width: 100px;\r\n    height: 100px;\r\n    opacity: 0.5;\r\n    /*visibility: hidden;*/\r\n}\r\n\r\n.as-expression-input-foreground {\r\n    position: absolute;\r\n    z-index: 8;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n\r\n}\r\n\r\n.as-ei-command-tool {\r\n    background: white;\r\n    border: 1px solid #e0e0e0;\r\n    border-radius: 3px;\r\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\r\n    padding: 0 3px;\r\n    box-sizing: border-box;\r\n    height: 31px;\r\n}\r\n\r\n.as-ei-command-tool::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n}\r\n\r\n.as-ei-command-tool button {\r\n    font-size: 14px;\r\n    width: 25px;\r\n    height: 25px;\r\n    padding: 0;\r\n    box-sizing: border-box;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-ei-command-tool button:hover {\r\n    background-color: #f0f0f0;\r\n}\r\n\r\n.as-ei-command-tool button:not(:last-child) {\r\n    margin-right: 3px;\r\n}\r\n\r\n@keyframes error_blink {\r\n    0% {\r\n        background-color: red\r\n    }\r\n    50% {\r\n        background-color: transparent\r\n    }\r\n    100% {\r\n        background-color: red\r\n    }\r\n}", ""]);



/***/ }),

/***/ 82375:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-exp-node {\r\n    height: 2em;\r\n    text-align: left;\r\n    background-color: transparent;\r\n    border: none;\r\n    outline: none;\r\n    white-space: nowrap;\r\n    font-size: inherit;\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    position: relative;\r\n    color: rgb(33, 33, 34);\r\n}\r\n\r\n.absol-exp-node .toggler-ico {\r\n    width: 0.7em;\r\n    height: 0.7em;\r\n    margin-right: 0.35em;\r\n}\r\n\r\n.absol-exp-node .toggler-ico path {\r\n    fill: rgb(104, 104, 104);\r\n}\r\n\r\n.absol-exp-node.status-removable .toggler-ico,\r\n.absol-exp-node.status-modified .toggler-ico {\r\n    display: none;\r\n}\r\n\r\n.absol-exp-node:not(.status-open) .toggle-open {\r\n    display: none;\r\n}\r\n\r\n.absol-exp-node:not(.status-close) .toggle-close {\r\n    display: none;\r\n}\r\n\r\n\r\n\r\n.absol-exp-node:hover .remove-ico {\r\n    visibility: visible;\r\n}\r\n\r\n\r\n\r\n.absol-exp-node.status-removable .remove-ico,\r\n.absol-exp-node.status-modified .remove-ico {\r\n    display: inline-block;\r\n}\r\n\r\n.absol-exp-node.status-removable .remove-ico .modified {\r\n    visibility: hidden;\r\n}\r\n\r\n.absol-exp-node.status-modified .remove-ico .close {\r\n    visibility: hidden;\r\n}\r\n\r\n.absol-exp-node.status-modified .remove-ico:hover .close {\r\n    visibility: visible;\r\n}\r\n\r\n.absol-exp-node.status-modified .remove-ico:hover .modified {\r\n    visibility: hidden;\r\n}\r\n\r\n\r\n.absol-exp-node .remove-ico {\r\n    width: 0.9em;\r\n    height: 0.9em;\r\n    display: none;\r\n    visibility: hidden;\r\n    margin-left: -0.3em;\r\n    margin-right: 0.45em;\r\n}\r\n\r\n.absol-exp-node .remove-ico .close,\r\n.absol-exp-node .remove-ico .modified {\r\n    fill: rgb(169, 169, 169);\r\n    stroke: none;\r\n}\r\n\r\n\r\n.absol-exp-node.has-status {\r\n    padding-right: 2.5em;\r\n}\r\n\r\n.absol-exp-node>div,\r\n.absol-exp-node>svg {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.absol-exp-node .editing input {\r\n    color: khaki;\r\n    padding-top: 2px;\r\n    padding-bottom: 2px;\r\n}\r\n\r\n.absol-exp-node:hover {\r\n    background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.absol-exp-node:focus,\r\n.absol-exp-node.as-active:focus {\r\n    background-color: var(--as-transparent-button-focus-color);\r\n}\r\n\r\n.absol-exp-node.as-active {\r\n    background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n\r\n\r\n.absol-exp-node-name {\r\n    /* -webkit-touch-callout: none;\r\n    -webkit-user-select: none;\r\n    -khtml-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none; */\r\n    user-select: none;\r\n    vertical-align: middle;\r\n    color: black;\r\n    margin-left: 0.5em;\r\n}\r\n\r\n.absol-exp-node-desc {\r\n    color: rgb(104, 104, 104);\r\n    margin-left: 0.5em;\r\n    font-size: 0.85em;\r\n\tvertical-align: middle;\r\n}\r\n\r\n.absol-exp-node-desc:empty {\r\n    margin-left: 0;\r\n}\r\n\r\n\r\n.absol-exp-node-expand-icon {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    margin-right: 0.2em;\r\n    height: 0.5em;\r\n    width: 0.5em;\r\n}\r\n\r\nimg.absol-exp-node-ext-icon {\r\n    display: none;\r\n}\r\n\r\n.absol-exp-node-ext-icon,\r\n.absol-exp-node-ext-icon>img {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    width: 1.5em;\r\n    height: 1.5em;\r\n}\r\n\r\ndiv.absol-exp-node-ext-icon:empty {\r\n    display: none;\r\n}\r\n\r\ndiv.absol-exp-node-ext-icon {\r\n    text-align: center;\r\n}\r\n\r\n.absol-exp-node-ext-icon>.mdi,\r\n.absol-exp-node-ext-icon>span .absol-exp-node-ext-icon>svg {\r\n    line-height: 1em;\r\n    font-size: 1.5em;\r\n}\r\n\r\nimg.absol-exp-node-ext-icon[src] {\r\n    display: inline-block;\r\n}\r\n\r\n\r\n.absol-exp-tree>.absol-exp-node {\r\n    width: 100%;\r\n    display: block;\r\n}\r\n\r\n.absol-exp-tree.hide-children>.absol-exp-items {\r\n    display: none;\r\n}\r\n\r\n\r\n.dark .toggler-ico path {\r\n    fill: rgb(169, 169, 169);\r\n}\r\n\r\n\r\n.dark .absol-exp-node-name {\r\n    color: rgb(204, 204, 204);\r\n}\r\n\r\n.dark .absol-exp-node-desc {\r\n    color: rgb(169, 169, 170);\r\n}\r\n\r\n.dark .absol-exp-node {\r\n    color: rgb(169, 169, 170);\r\n}", ""]);



/***/ }),

/***/ 20893:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-file-input-box {\r\n    font-size: 14px;\r\n    position: relative;\r\n    width: 100px;\r\n    height: 100px;\r\n    box-sizing: border-box;\r\n    border: 1px solid #dddddd;\r\n    background-color: white;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    overflow: visible;\r\n}\r\n\r\n.as-file-input-box-trigger:hover + .as-file-input-box-upload-overlay,\r\n.as-file-input-box-trigger.as-drag-over + .as-file-input-box-upload-overlay {\r\n    display: block;\r\n}\r\n\r\n.as-file-input-box-trigger input {\r\n    visibility: hidden;\r\n    opacity: 0;\r\n}\r\n\r\n.as-file-input-box-upload-overlay {\r\n    display: none;\r\n    pointer-events: none;\r\n    background-color: rgba(30, 30, 80, 0.3);\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    z-index: 5;\r\n    overflow: hidden;\r\n    text-align: center;\r\n    white-space: nowrap;\r\n    font-size: 3em;\r\n    color: #b0fffb;\r\n}\r\n\r\n.as-file-input-box-upload-overlay::before,\r\n.as-file-input-box-upload-overlay > span {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-file-input-box-upload-overlay::before {\r\n    content: \"\";\r\n    height: 100%;\r\n}\r\n\r\n\r\n.as-file-input-box-trigger {\r\n    position: absolute;\r\n    z-index: 2;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    opacity: 0;\r\n}\r\n\r\n.as-file-input-box:not(.as-has-file-name) .as-file-input-box-file-name,\r\n.as-file-input-box:not(.as-has-file-name) .as-file-input-box-file-name + br,\r\n.as-file-input-box:not(.as-has-file-size) .as-file-input-box-file-size,\r\n.as-file-input-box:not(.as-has-value) .as-file-input-box-action-left,\r\n.as-file-input-box:not(.as-has-value) .as-file-input-box-action-right,\r\n.as-file-input-box:not(.as-downloadable) .as-file-input-box-action-right,\r\n.as-file-input-box:not(.as-removable) .as-file-input-box-action-left,\r\n.as-file-input-box:not(.as-allow-upload) .as-file-input-box-trigger {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-file-input-box-background {\r\n    position: absolute;\r\n    z-index: 1;\r\n    left: 4%;\r\n    top: 4%;\r\n    right: 4%;\r\n    bottom: 4%;\r\n    background-size: contain;\r\n    background-repeat: no-repeat;\r\n    background-position: center;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-file-input-box.as-allow-upload .as-file-input-box-background {\r\n    background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4NCiAgIDxwYXRoIGZpbGw9IiNhYWFhYWEiIGQ9Ik0xMyw5SDE4LjVMMTMsMy41VjlNNiwySDE0TDIwLDhWMjBBMiwyIDAgMCwxIDE4LDIySDZDNC44OSwyMiA0LDIxLjEgNCwyMFY0QzQsMi44OSA0Ljg5LDIgNiwyTTExLDE1VjEySDlWMTVINlYxN0g5VjIwSDExVjE3SDE0VjE1SDExWiIgLz4NCjwvc3ZnPg==);\r\n}\r\n\r\n\r\n.as-file-input-box-info {\r\n    position: absolute;\r\n    bottom: 0;\r\n    left: 0;\r\n    right: 0;\r\n    padding: 2px;\r\n    z-index: 3;\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    background-color: rgba(255, 255, 255, 0.3);\r\n    pointer-events: none;\r\n    text-align: center;\r\n}\r\n\r\n.as-file-input-box-file-name {\r\n    font-size: inherit;\r\n    color: black;\r\n    text-shadow: 0 0 5px white;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-file-input-box-action-left,\r\n.as-file-input-box-action-right {\r\n    position: absolute;\r\n    z-index: 6;\r\n    top: 0;\r\n}\r\n\r\n\r\n.as-file-input-box-action-left {\r\n    left: 0;\r\n}\r\n\r\n\r\n.as-file-input-box-action-right {\r\n    right: 0;\r\n}\r\n\r\n.as-file-input-box button {\r\n    height: 2em;\r\n    width: 2em;\r\n    padding: 0;\r\n    border: none;\r\n    background-color: rgba(255, 255, 255, 0.3);\r\n    border-radius: 0;\r\n}\r\n\r\n.as-file-input-box button span {\r\n    font-size: 1.5em;\r\n}\r\n\r\n.as-file-input-box .mdi-close {\r\n    color: rgb(250, 100, 100);\r\n}\r\n\r\n.as-file-input-box .mdi-download {\r\n    color: rgb(100, 100, 250);\r\n}\r\n\r\n.as-file-input-box button:hover .mdi-close {\r\n    color: rgb(250, 50, 50);\r\n}\r\n\r\n.as-file-input-box button:hover .mdi-download {\r\n    color: rgb(50, 50, 250);\r\n}\r\n\r\n.as-file-input-box button:active .mdi-close {\r\n    color: rgb(250, 0, 0);\r\n}\r\n\r\n.as-file-input-box button:active .mdi-download {\r\n    color: rgb(0, 0, 250);\r\n}\r\n\r\n.as-file-input-box-checked {\r\n    display: none;\r\n    box-sizing: border-box;\r\n    z-index: 4;\r\n    position: absolute;\r\n    left: -1px;\r\n    top: -1px;\r\n    bottom: -1px;\r\n    right: -1px;\r\n    pointer-events: none;\r\n    border: 3px solid #0a90eb;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-file-input-box.as-checked .as-file-input-box-checked{\r\n    display: block;\r\n}\r\n\r\n.as-file-input-box-checked::before {\r\n    content: \"\";\r\n    display: block;\r\n    position: absolute;\r\n    right: -20px;\r\n    top: -20px;\r\n    width: 40px;\r\n    height: 40px;\r\n    transform: rotate(45deg);\r\n    background-color: #0a90eb;\r\n}\r\n\r\n.as-file-input-box-checked .mdi {\r\n    display: inline-block;\r\n    position: absolute;\r\n    right: 0;\r\n    top: 0;\r\n    font-size: 14px;\r\n    color: white;\r\n}", ""]);



/***/ }),

/***/ 14237:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "\r\n.as-file-list-input {\r\n    padding: 5px;\r\n    border: 1px solid #dddddd;\r\n    box-sizing: border-box;\r\n    overflow: auto;\r\n    --item-width: 100%;\r\n    --item-require-width: 300px;\r\n    position: relative;\r\n    min-height: 42px;\r\n}\r\n\r\n.as-file-list-input.as-border-none {\r\n    border: none;\r\n    padding: 0;\r\n}\r\n\r\n.as-file-list-input.as-disabled {\r\n    background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.as-file-list-input.as-disabled > * {\r\n    opacity: 0.5;\r\n    pointer-events: none;\r\n}\r\n\r\n.as-file-list-input-upload-overlay {\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    overflow: hidden;\r\n    text-align: center;\r\n    white-space: nowrap;\r\n    pointer-events: none;\r\n    background-color: rgba(30, 30, 80, 0.3);\r\n    color: #b0fffb;\r\n}\r\n\r\n.as-file-list-input-upload-overlay::before {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n    content: \"\";\r\n}\r\n\r\n.as-file-list-input-upload-overlay > span {\r\n    font-size: 30px;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-file-list-input:not(.as-drag-over) .as-file-list-input-upload-overlay,\r\n.as-file-list-input:not(.as-droppable) .as-file-list-input-upload-overlay,\r\n.as-file-list-input:not(.as-droppable) .as-file-list-drag-file-text,\r\n.as-file-list-input.as-read-only .as-file-list-input-upload-overlay {\r\n    display: none;\r\n}\r\n\r\n/*span.mdi.mdi-upload*/\r\n\r\n.as-file-list-input .as-file-input-box {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    margin-right: 10px;\r\n}\r\n\r\n.as-file-list-input.as-read-only .as-file-list-input-add {\r\n    display: none;\r\n}\r\n\r\n.as-file-list-input-add {\r\n    border: none;\r\n    width: 3.5em;\r\n    border-radius: 5px;\r\n    background-color: rgba(235, 235, 235, 0.2);\r\n    height: calc(2em + 2px);\r\n    padding-bottom: 10px;\r\n    box-sizing: border-box;\r\n    display: inline-block;\r\n    overflow: hidden;\r\n    position: relative;\r\n    vertical-align: middle;\r\n    margin-right: 5px;\r\n    font-size: inherit;\r\n}\r\n\r\n\r\n.as-file-list-input-add:hover {\r\n    background-color: rgb(235, 235, 235);\r\n}\r\n\r\n.as-file-list-input-add:active {\r\n    background-color: rgb(212, 212, 212);\r\n}\r\n\r\n\r\n.as-file-list-input-add input {\r\n    opacity: 0;\r\n    visibility: hidden;\r\n}\r\n\r\n.as-file-list-input-add-icon-ctn {\r\n    font-size: 1.5em;\r\n    text-align: center;\r\n    color: rgb(100, 100, 250);\r\n    position: absolute;\r\n    top: 0;\r\n    bottom: 0;\r\n    left: 0;\r\n    right: 0;\r\n    white-space: nowrap;\r\n    pointer-events: none;\r\n}\r\n\r\n.as-file-list-input-add-icon-ctn span {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-file-list-input-add-icon-ctn::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n}\r\n\r\n.as-file-list-input.as-drag-over.as-droppable .as-file-list-input-add,\r\n.as-file-list-input.as-drag-over .as-file-list-drag-file-text {\r\n    visibility: hidden;\r\n}\r\n\r\n.as-file-list-item {\r\n    position: relative;\r\n    height: calc(2em + 2px);\r\n    font-size: 1rem;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    width: calc(var(--item-width) - 5px);\r\n    padding-left: 2.3em;\r\n    white-space: nowrap;\r\n    box-sizing: border-box;\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    padding-right: calc(2.3em + 5px);\r\n}\r\n\r\n.as-file-list-item .as-file-list-item-check {\r\n    display: none;\r\n    position: absolute;\r\n    left: 0.1em;\r\n    top:calc(50% - 1px - 0.5em);\r\n\r\n\r\n}\r\n\r\n\r\n.as-file-list-input.as-show-check .as-file-list-item .as-file-list-item-check {\r\n    display: block;\r\n}\r\n\r\n.as-file-list-input.as-show-check .as-file-list-item\r\n{\r\n    padding-left: 3.5em ;\r\n}\r\n\r\n.as-file-list-input.as-show-check .as-file-list-item .as-file-list-item-icon{\r\n    left: 1.2em;\r\n}\r\n\r\n.as-file-list-item-icon {\r\n    position: absolute;\r\n    left: 0;\r\n    top: calc(50% - 1em - 1px);\r\n    bottom: 0;\r\n    width: calc(2em + 2px);\r\n    height: calc(2em + 2px);\r\n}\r\n\r\n\r\n.as-file-list-item-name {\r\n    color: rgb(89, 89, 95);\r\n    display: inline-block;\r\n    overflow-x: hidden;\r\n    vertical-align: middle;\r\n    width: 100%;\r\n    text-overflow: ellipsis;\r\n    white-space: nowrap;\r\n    font-weight: bold;\r\n}\r\n\r\n\r\n.as-file-list-item::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    height: 100%;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.as-file-list-input .as-file-list-item {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    margin-bottom: 5px;\r\n    margin-right: 5px;\r\n}\r\n\r\n.as-file-list-input:not(.as-empty) .as-file-list-drag-file-text,\r\n.as-file-list-input.as-read-only .as-file-list-drag-file-text {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-file-list-item:hover {\r\n    background-color: rgba(169, 169, 172, 0.1);\r\n}\r\n\r\n\r\n.as-file-list-input .as-file-list-item:hover .as-file-list-item-quick-btn {\r\n    visibility: visible;\r\n}\r\n\r\n\r\n.as-file-list-item-quick-btn {\r\n    position: absolute;\r\n    border: none;\r\n    background-color: transparent;\r\n    outline: none;\r\n    border-radius: 3px;\r\n    height: 2em;\r\n    width: 2em;\r\n    font-size: inherit;\r\n    padding: 0;\r\n    right: 5px;\r\n    top: calc(50% - 1em);\r\n    visibility: hidden;\r\n}\r\n\r\n\r\n.as-file-list-item-quick-btn.as-quick-menu-attached {\r\n    display: block;\r\n}\r\n\r\n.as-file-list-item-quick-btn > span {\r\n    font-size: 1.2em;\r\n}\r\n\r\n\r\n.as-file-list-item-quick-btn.as-active {\r\n    background-color: rgba(20, 185, 235, 0.3);\r\n}\r\n\r\n.as-file-list-item-quick-btn:hover {\r\n    background-color: #91e4fb77;\r\n}\r\n\r\n.as-file-list-item-quick-btn:active {\r\n    background-color: #91e4fb;\r\n\r\n}\r\n\r\n", ""]);



/***/ }),

/***/ 76209:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-finder {\r\n    font-size: 1rem;\r\n    position: relative;\r\n    --finder-header-height: 51px;\r\n    --finder-nav-width: 250px;\r\n    overflow: hidden;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.as-finder.as-compact-mode {\r\n    --finder-header-height: 0;\r\n}\r\n\r\n.as-finder.as-compact-mode .as-finder-header {\r\n    display: none;\r\n}\r\n\r\n.as-finder-header {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    height: var(--finder-header-height);\r\n    width: 100%;\r\n    border-bottom: 1px solid #dddddd;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-finder-header .as-flexicon-button {\r\n    min-width: 110px;\r\n}\r\n\r\n.as-finder-nav-ctn,\r\n.as-finder-search-ctn {\r\n    position: absolute;\r\n    left: 0;\r\n    top: var(--finder-header-height);\r\n    width: var(--finder-nav-width);\r\n    bottom: 0;\r\n    border-right: 1px solid #dddddd;\r\n    padding-top: 29px;\r\n    background-color: white;\r\n    z-index: 20;\r\n}\r\n\r\n.as-finder-nav-ctn {\r\n}\r\n\r\n.as-finder-search-ctn {\r\n    visibility: hidden;\r\n\r\n}\r\n\r\n\r\n.as-finder-nav-header,\r\n.as-finder-search-header {\r\n    display: flex;\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    right: 0;\r\n    height: 29px;\r\n    box-sizing: border-box;\r\n    border-bottom: 1px solid #dddddd;\r\n    align-items: center;\r\n}\r\n\r\n.as-finder-nav-header-left {\r\n    flex-grow: 1;\r\n}\r\n\r\n.as-finder-nav-header-right button {\r\n    height: 100%;\r\n    width: 30px;\r\n    margin-left: 5px;\r\n}\r\n\r\n.as-finder-nav-ctn > .as-exp-group,\r\n.as-finder-search-ctn > .as-finder-search-body {\r\n    overflow-y: auto;\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n\r\n.as-finder-search-body {\r\n    padding: 10px 5px;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-finder-search-field {\r\n    padding-top: 10px;\r\n}\r\n\r\n.as-finder-search-field > div {\r\n    display: inline-block;\r\n}\r\n\r\n.as-finder-search-field > div:first-child {\r\n    width: 5em;\r\n}\r\n\r\n\r\n.as-finder-search-footer {\r\n    text-align: center;\r\n    padding-top: 20px;\r\n\r\n}\r\n\r\n.as-finder-search-footer button {\r\n    min-width: 100px;\r\n}\r\n\r\n.as-finder-search-footer button:not(:last-child) {\r\n    margin-right: 20px;\r\n}\r\n\r\n.as-finder-body {\r\n    position: absolute;\r\n    right: 0;\r\n    left: var(--finder-nav-width);\r\n    top: var(--finder-header-height);\r\n    bottom: 0;\r\n    padding-top: 29px;\r\n}\r\n\r\n.as-finder-content-header {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    right: 0;\r\n    height: 29px;\r\n    box-sizing: border-box;\r\n    border-bottom: 1px solid white;\r\n    display: flex;\r\n\r\n}\r\n\r\n.as-finder-content-header-left {\r\n    flex-grow: 1;\r\n}\r\n\r\n.as-finder:not(.as-mobile) .as-finder-content-header-right::after {\r\n    content: \"Kéo thả file vào đây để tải lên\";\r\n    color: rgb(100, 100, 180);\r\n    font-style: italic;\r\n    line-height: 28px;\r\n    padding-right: 10px;\r\n    display: inline-block;\r\n}\r\n\r\n\r\n.as-finder-content-ctn {\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n\r\n.as-finder-normal-action-button-ctn,\r\n.as-finder-tiny-action-button-ctn {\r\n    position: absolute;\r\n    left: 10px;\r\n    top: calc(50% - 15px);\r\n    white-space: nowrap;\r\n    max-width: calc(100% - 50px);\r\n    overflow: hidden;\r\n}\r\n\r\n.as-finder-normal-action-button-ctn > button:not(:last-child),\r\n.as-finder-tiny-action-button-ctn > button:not(:last-child) {\r\n    margin-right: 10px;\r\n}\r\n\r\n.as-finder-tiny-action-button-ctn button,\r\n.as-finder-content-header button:not(.as-ribbon-button) {\r\n    background-color: transparent;\r\n    border: none;\r\n    border-radius: 3px;\r\n    width: 30px;\r\n    height: 30px;\r\n    font-size: inherit;\r\n    padding: 0;\r\n    color: var(--as-transparent-button-text-color);\r\n}\r\n\r\n.as-finder-content-header button.as-ribbon-button {\r\n    height: 30px;\r\n}\r\n\r\n\r\n\r\n.as-finder-tiny-action-button-ctn button span {\r\n    font-size: 1.3em;\r\n}\r\n\r\n.as-finder-tiny-action-button-ctn button:hover {\r\n    color: var(--as-transparent-button-text-hover-color);\r\n}\r\n\r\n.as-finder-tiny-action-button-ctn button:active {\r\n    color: var(--as-transparent-button-text-active-color);\r\n}\r\n\r\n\r\n.as-action-button-minimized .as-finder-normal-action-button-ctn,\r\n.as-finder:not(.as-action-button-minimized) .as-finder-tiny-action-button-ctn {\r\n    visibility: hidden;\r\n}\r\n\r\n.as-finder[data-selected-file-count=\"0\"] .as-finder-header button[name=\"view\"],\r\n.as-finder[data-selected-file-count=\"0\"] .as-finder-header button[name=\"delete\"],\r\n.as-finder:not([data-selected-folder-count=\"0\"]) .as-finder-header button[name=\"delete\"],\r\n.as-finder[data-selected-file-count=\"0\"] .as-finder-header button[name=\"download\"],\r\n.as-finder[data-selected-file-count=\"0\"][data-selected-folder-count=\"0\"] .as-finder-header button[name=\"move\"],\r\n.as-finder:not([data-selected-file-count=\"1\"][data-selected-folder-count=\"0\"]) .as-finder-header button[name=\"rename\"],\r\n.as-finder:not(.as-mini-layout) .as-finder-content-header button[name=\"nav_toggle\"],\r\n.as-finder:not(.as-mini-layout) .as-finder-nav-ctn button[name=\"nav_toggle\"] {\r\n    display: none;\r\n}\r\n\r\n.as-finder-nav-ctn {\r\n    overflow-y: auto;\r\n\r\n}\r\n\r\n.as-finder-content-ctn {\r\n    overflow-y: auto;\r\n    z-index: 1;\r\n}\r\n\r\n.as-finder.as-mini-layout .as-finder-body {\r\n    left: 0;\r\n}\r\n\r\n.as-finder.as-mini-layout .as-finder-nav-ctn,\r\n.as-finder.as-mini-layout .as-finder-search-ctn {\r\n    left: calc(var(--finder-nav-width) * -1);\r\n    transition: left 0.2s;\r\n}\r\n\r\n\r\n.as-finder.as-mini-layout.as-nav-open .as-finder-nav-ctn,\r\n.as-finder.as-mini-layout.as-nav-open .as-finder-search-ctn {\r\n    left: 0;\r\n}\r\n\r\n.as-finder.as-mini-layout.as-nav-open::after {\r\n    content: \"\";\r\n    display: block;\r\n    z-index: 8;\r\n    position: absolute;\r\n    left: 0;\r\n    top: var(--finder-header-height);\r\n    width: 100%;\r\n    height: 100%;\r\n    background-color: rgba(169, 169, 172, 0.2);\r\n}\r\n\r\n\r\n.as-finder-content::before,\r\n.as-finder-content::after {\r\n    content: \"\";\r\n    display: block;\r\n}\r\n\r\n.as-finder-content .as-file-thumbnail {\r\n    display: inline-block;\r\n    margin: 5px;\r\n}\r\n\r\n\r\n.as-finder-content {\r\n    user-select: none;\r\n    min-height: 100%;\r\n    box-sizing: border-box;\r\n    position: relative;\r\n}\r\n\r\n\r\n.as-finder:not(.as-writable-folder) .as-finder-header button[name=\"upload\"],\r\n.as-finder:not(.as-writable-folder) .as-finder-header button[name=\"delete\"],\r\n.as-finder:not(.as-writable-folder) .as-finder-header button[name=\"rename\"],\r\n.as-finder:not(.as-writable-folder) .as-finder-header button[name=\"move\"],\r\n.as-finder.as-disable-create-folder .as-finder-header button[name=\"new_folder\"]\r\n{\r\n    display: none;\r\n}\r\n\r\n.as-finder-select-area {\r\n    position: fixed;\r\n    box-sizing: border-box;\r\n    border: 2px solid rgba(0, 103, 240, 0.5);\r\n    width: 100px;\r\n    height: 100px;\r\n    background-color: rgba(0, 103, 240, 0.2);\r\n    /*background-color: ;*/\r\n}\r\n\r\n.as-finder:not(.as-dragging) .as-file-thumbnail:hover {\r\n    background-color: rgba(29, 161, 255, 0.13);\r\n}\r\n\r\n\r\n.as-finder-upload-overlay {\r\n    display: none;\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    right: 0;\r\n    z-index: 4;\r\n    backdrop-filter: blur(1px);\r\n    -webkit-backdrop-filter: blur(1px);\r\n    background-color: rgba(167, 167, 167, 0.1);\r\n    font-size: 2rem;\r\n    text-align: center;\r\n    text-shadow: 2px 2px 3px white, -2px -2px 3px white, -2px 2px 3px white, 2px -2px 3px white;\r\n    color: rgb(97, 79, 100);\r\n    font-weight: bold;\r\n    padding-top: calc(50% - 6em);\r\n}\r\n\r\n\r\n.as-finder-upload-overlay-icon-ctn {\r\n    text-align: center;\r\n    color: #1da1ff;\r\n    font-size: 8rem;\r\n\r\n}\r\n\r\n.as-finder:not(.as-searching) .as-finder-body.as-drag-over .as-finder-upload-overlay {\r\n    display: block;\r\n}\r\n\r\n\r\n.as-finder.as-searching .as-finder-nav-ctn {\r\n    visibility: hidden;\r\n}\r\n\r\n.as-finder.as-searching .as-finder-search-ctn {\r\n    visibility: visible;\r\n}\r\n\r\n.as-finder.as-searching .as-finder-content-header-right,\r\n.as-finder.as-searching .as-finder-header button[name='upload'],\r\n.as-finder.as-searching .as-finder-header button[name='move'] {\r\n    display: none;\r\n}\r\n\r\n.as-finder-task-check {\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-finder-task-check >span{\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-finder-task-check .mdi {\r\n    font-size: 1.5em;\r\n    color: rgb(30, 237, 219);\r\n}\r\n\r\n\r\n.as-finder-task-check .mdi.mdi-alert-decagram-outline {\r\n    color: red;\r\n}\r\n\r\n\r\n/**************************************************/\r\n\r\n.as-file-thumbnail {\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    position: relative;\r\n}\r\n\r\n.as-file-thumbnail-background {\r\n    display: block;\r\n    width: 100px;\r\n    height: 100px;\r\n    background-size: contain;\r\n    background-position: center;\r\n    background-repeat: no-repeat;\r\n    box-sizing: border-box;\r\n    border: 1px solid #c0c0c0;\r\n}\r\n\r\n.as-file-thumbnail-check {\r\n    display: none;\r\n    position: absolute;\r\n    top: -2px;\r\n    left: -2px;\r\n    bottom: -2px;\r\n    right: -2px;\r\n    overflow: hidden;\r\n    z-index: 4;\r\n    pointer-events: none;\r\n    border: 2px solid #0a90eb;\r\n}\r\n\r\n.as-file-thumbnail.as-checked .as-file-thumbnail-check {\r\n    display: block;\r\n}\r\n\r\n.as-file-thumbnail-check::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    right: -28px;\r\n    top: -28px;\r\n    width: 56px;\r\n    height: 56px;\r\n    transform: rotate(45deg);\r\n    background-color: #0a90eb;\r\n}\r\n\r\n.as-file-thumbnail-check .mdi {\r\n    display: inline-block;\r\n    position: absolute;\r\n    right: 5px;\r\n    top: 5px;\r\n    font-size: 14px;\r\n    color: white;\r\n}\r\n\r\n.as-file-thumbnail-file-name {\r\n    word-wrap: break-word; /* IE 5.5-7 */\r\n    white-space: -moz-pre-wrap; /* Firefox 1.0-2.0 */\r\n    white-space: pre-wrap;\r\n    text-overflow: ellipsis;\r\n    overflow: hidden;\r\n    width: 100px;\r\n    max-height: 6.2em;\r\n    line-height: 1.5;\r\n    text-align: center;\r\n    font-size: 13px;\r\n    padding-top: 0.2em;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-file-thumbnail-file-name > span:last-child {\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-finder-folder-dialog-tree-ctn {\r\n    max-height: calc(90vh - 250px);\r\n    overflow-y: auto;\r\n    border: 1px solid #dddddd;\r\n}\r\n\r\n.as-finder-folder-dialog-tree-ctn > .as-exp-group {\r\n    width: 300px;\r\n}\r\n\r\n.as-finder-folder-dialog-selected-ctn {\r\n    padding-bottom: 10px;\r\n    white-space: pre-wrap;\r\n}\r\n\r\n.as-finder-folder-dialog-selected-ctn > span {\r\n    white-space: nowrap;\r\n}\r\n\r\ndiv[data-view-as=\"list\"] {\r\n    --col: 1;\r\n}\r\n\r\ndiv[data-view-as=\"list\"] .as-file-thumbnail {\r\n    display: inline-block;\r\n    margin-right: 4px;\r\n    height: 50px;\r\n    padding-left: 60px;\r\n    white-space: nowrap;\r\n    box-sizing: border-box;\r\n    width: calc(100% / var(--col) - 10px * var(--col));\r\n}\r\n\r\ndiv[data-view-as=\"list\"] .as-file-thumbnail::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n}\r\n\r\ndiv[data-view-as=\"list\"] .as-file-thumbnail-background {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    width: 50px;\r\n    height: 50px;\r\n}\r\n\r\ndiv[data-view-as=\"list\"] .as-file-thumbnail-file-name {\r\n    width: unset;\r\n    max-width: 100%;\r\n    text-align: left;\r\n}\r\n\r\ndiv[data-view-as=\"list\"] .as-file-thumbnail-background,\r\ndiv[data-view-as=\"list\"] .as-file-thumbnail-file-name {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\ndiv[data-view-as=\"lage_icons\"] .as-file-thumbnail-background{\r\n    width: 200px;\r\n    height: 200px;\r\n}\r\n\r\ndiv[data-view-as=\"lage_icons\"]  .as-file-thumbnail-file-name {\r\n    width: 200px;\r\n}", ""]);



/***/ }),

/***/ 85225:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-flexicon-button {\r\n    box-sizing: border-box;\r\n    border: solid 1px #bfbfbf;\r\n    background-color: #ebebeb;\r\n    border-radius: 0.2em;\r\n    outline: none;\r\n    padding: 0;\r\n    overflow: hidden;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: var(--as-input-height);\r\n    font-size: 1rem;\r\n    cursor: pointer;\r\n}\r\n\r\n.as-flexicon-button:disabled {\r\n    pointer-events: none;\r\n    background-color: #c7c7c7 !important;\r\n}\r\n\r\n\r\n.as-flexicon-button div,\r\n.as-flexicon-button span {\r\n    font-weight: inherit;\r\n    font-size: inherit;\r\n}\r\n\r\n\r\n.as-icon-button-table-box {\r\n    display: table;\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n.as-flexicon-button:hover .as-flexicon-button-content {\r\n    background-color: rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n.as-flexicon-button:active {\r\n    -webkit-box-shadow: inset 0 0.2em 0.25em rgba(0, 0, 0, 0.125);\r\n    box-shadow: inset 0 0.2em 0.25em rgba(0, 0, 0, 0.125);\r\n}\r\n\r\n\r\n.as-flexicon-button-content {\r\n    display: table-row;\r\n}\r\n\r\n\r\n.as-flexicon-button-icon-container,\r\n.as-flexicon-button-text-container {\r\n    display: table-cell;\r\n    box-sizing: content-box;\r\n    vertical-align: middle;\r\n    text-align: center;\r\n}\r\n\r\n.as-flexicon-button-icon-container:empty,\r\n.as-flexicon-button-text-container:empty:not([data-ml-key]) {\r\n    display: none;\r\n}\r\n\r\n.as-flexicon-button-icon-container {\r\n    width: 2em;\r\n    background-color: rgba(0, 0, 0, 0.0893617021);\r\n    color: rgb(146, 146, 146);\r\n}\r\n\r\n\r\n.as-flexicon-button-icon-container > span,\r\n.as-flexicon-button-icon-container > i,\r\n.as-flexicon-button-icon-container > svg,\r\n.as-flexicon-button-icon-container > img {\r\n    font-size: 1em;\r\n}\r\n\r\n.as-flexicon-button-text-container {\r\n    padding-left: 0.357em;\r\n    padding-right: 0.357em;\r\n    box-sizing: border-box;\r\n    min-width: 2em;\r\n}\r\n\r\n\r\n.as-flexicon-button-icon-container + .as-flexicon-button-text-container {\r\n    border-left: solid 1px #bfbfbf;\r\n}\r\n\r\n.as-flexicon-button-icon-container:empty + .as-flexicon-button-text-container {\r\n    border-left: none;\r\n    padding-left: 0.714em;\r\n    padding-right: 0.714em;\r\n}\r\n\r\n/*** theme  ***/\r\n\r\n.as-flexicon-button.primary {\r\n    border-color: #005bbd;\r\n    background-color: #007bff;\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.primary .as-flexicon-button-icon-container {\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.primary .as-flexicon-button-text-container {\r\n    border-color: #005bbd;\r\n}\r\n\r\n\r\n.as-flexicon-button.secondary {\r\n    border-color: #4e555a;\r\n    background-color: #6d767e;\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.secondary .as-flexicon-button-icon-container {\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.secondary .as-flexicon-button-text-container {\r\n    border-left-color: #4e555a;\r\n}\r\n\r\n\r\n.as-flexicon-button.success {\r\n    border-color: #1e7b34;\r\n    background-color: #29a847;\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.success .as-flexicon-button-icon-container {\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.success .as-flexicon-button-text-container {\r\n    border-left-color: #1e7b34;\r\n}\r\n\r\n\r\n.as-flexicon-button.danger {\r\n    border-color: #b21f2e;\r\n    background-color: #dc3848;\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.danger .as-flexicon-button-icon-container {\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.danger .as-flexicon-button-text-container {\r\n    border-left-color: #b21f2e;\r\n}\r\n\r\n.as-flexicon-button.warning {\r\n    border-color: #9e7700;\r\n    background-color: #e0a800;\r\n    color: black;\r\n}\r\n\r\n.as-flexicon-button.warning .as-flexicon-button-icon-container {\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.warning .as-flexicon-button-text-container {\r\n    border-left-color: #9e7700;\r\n}\r\n\r\n.as-flexicon-button.info {\r\n    border-color: #117888;\r\n    background-color: #17a2b8;\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.info .as-flexicon-button-icon-container {\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.info .as-flexicon-button-text-container {\r\n    border-left-color: #117888;\r\n}\r\n\r\n.as-flexicon-button.light {\r\n    border-color: #c9d1d9;\r\n    background-color: #f8f9fa;\r\n    color: #212529;\r\n}\r\n\r\n.as-flexicon-button.light .as-flexicon-button-icon-container {\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.light .as-flexicon-button-text-container {\r\n    border-left-color: #c9d1d9;\r\n}\r\n\r\n.as-flexicon-button.dark {\r\n    border-color: #171a1c;\r\n    background-color: #343a40;\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.dark .as-flexicon-button-icon-container {\r\n    color: white;\r\n}\r\n\r\n.as-flexicon-button.dark .as-flexicon-button-text-container {\r\n    border-left-color: #171a1c;\r\n}\r\n\r\n.as-flexicon-button.link {\r\n    border-color: transparent;\r\n    background-color: transparent;\r\n    color: #007bff;\r\n}\r\n\r\n.as-flexicon-button.link .as-flexicon-button-icon-container {\r\n    color: #007bff;\r\n    background: transparent;\r\n}\r\n\r\n.as-flexicon-button.link .as-flexicon-button-text-container {\r\n    border-left-color: transparent;\r\n}\r\n\r\n.as-flexicon-button.link:hover .as-flexicon-button-text-container {\r\n    text-decoration: underline;\r\n}", ""]);



/***/ }),

/***/ 36240:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-flexicon-input-icon-ctn > span,\r\n.as-flexicon-input-icon-ctn > i,\r\n.as-flexicon-input-icon-ctn > svg,\r\n.as-flexicon-input-icon-ctn > img {\r\n    font-size: 1em;\r\n    line-height: 1;\r\n}\r\n\r\n.as-flexicon-input {\r\n    position: relative;\r\n    border: 1px solid #dddddd;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 2em;\r\n    font-size: 1rem;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    box-sizing: border-box;\r\n    border-radius: 3px;\r\n    text-align: left;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-flexicon-input.as-border-none {\r\n    border: none;\r\n}\r\n\r\n.as-flexicon-input.as-disabled {\r\n    background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.as-flexicon-input::before {\r\n    content: \"\";\r\n    width: 0;\r\n    height: 100%;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.as-flexicon-input-icon-ctn:empty {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-flexicon-input:not(.as-flexicon-input-has-icon) input {\r\n    padding-left: 0.3em;\r\n}\r\n\r\n.as-flexicon-input-icon-ctn {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    /*text-align: center;*/\r\n    font-size: 1.2em;\r\n    width: 1.25em;\r\n    text-align: center;\r\n}\r\n\r\n.as-flexicon-input-unit-ctn {\r\n    width: 1.5em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    text-align: center;\r\n}\r\n\r\n.as-flexicon-input-unit-ctn:empty {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-flexicon-input input {\r\n    border: none;\r\n    font-size: inherit;\r\n    font-family: inherit;\r\n    outline: none;\r\n    height: 100%;\r\n    background-color: transparent;\r\n    box-sizing: border-box;\r\n    width: 100%;\r\n    padding-left: 0;\r\n    padding-right: 0;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    text-align: inherit;\r\n}\r\n\r\n\r\n.as-flexicon-input.as-flexicon-input-has-icon input,\r\n.as-flexicon-input.as-flexicon-input-has-unit input {\r\n    width: calc(100% - 1.5em);\r\n}\r\n\r\n.as-flexicon-input.as-flexicon-input-has-unit {\r\n    text-align: right;\r\n}\r\n\r\n\r\n.as-flexicon-input.as-flexicon-input-has-icon.as-flexicon-input-has-unit input {\r\n    width: calc(100% - 3em);\r\n}", ""]);



/***/ }),

/***/ 70729:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-follower {\r\n    position: fixed;\r\n    z-index: 100;\r\n}\r\n\r\n.absol-follower-hidden{\r\n    z-index: -1000 !important;\r\n    opacity: 0;\r\n    visibility: hidden;\r\n}", ""]);



/***/ }),

/***/ 42305:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-font-input {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: calc(2em + 2px);\r\n    width: 12em;\r\n    border-radius: 3px;\r\n    border: 1px solid #ddd;\r\n\r\n}\r\n\r\n.as-font-input-family {\r\n\r\n}\r\n\r\n.as-font-input-size {\r\n\r\n}\r\n\r\n\r\n\r\n.as-font-family-select-list {\r\n    font-size: 16px;\r\n    cursor: default;\r\n    user-select: none;\r\n    min-width: 12em;\r\n    padding-top: 40px;\r\n\r\n}\r\n\r\n.as-font-family-select-list-header{\r\n    padding: 5px;\r\n    position: absolute;\r\n    left: 0;\r\n    width: 100%;\r\n    box-sizing: border-box;\r\n    height: 40px;\r\n    top: 0;\r\n}\r\n\r\n.as-font-family-select-list-content {\r\n    overflow-y: auto;\r\n}\r\n\r\n.as-font-family-select-item {\r\n    height: 2em;\r\n    line-height: 2em;\r\n    padding: 0 20px 0 10px;\r\n\r\n}\r\n\r\n.as-font-family-select-item:hover {\r\n    background-color: var(--as-list-item-hover-background-color);\r\n}\r\n\r\n.as-font-family-select-item:active {\r\n    /*background-color: var(--as-list-item-active-background-color);*/\r\n}\r\n\r\n.as-font-family-select-item.as-selected {\r\n    background-color: var(--as-list-item-selected-background-color);\r\n}", ""]);



/***/ }),

/***/ 38278:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-frame{\r\n    \r\n}", ""]);



/***/ }),

/***/ 70058:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-frame-view {\r\n    position: relative;\r\n}\r\n\r\n\r\n.absol-frame-view-frame-container {\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    background-color: white;\r\n}\r\n\r\n\r\n.absol-frame-view-frame-container:not(.absol-active) {\r\n    z-index: -100;\r\n    visibility: hidden;\r\n    opacity: 0;\r\n}\r\n\r\n.absol-frame-view-frame-container:not(.absol-active) *,\r\n.absol-frame-view-frame-container:not(.absol-active) {\r\n    pointer-events: none;\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n}\r\n\r\n\r\n.absol-frame-view-frame-container > div {\r\n    width: 100%;\r\n    height: 100%;\r\n    display: block;/* avoid overflow if this div is inline-block*/\r\n}", ""]);



/***/ }),

/***/ 64713:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.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}", ""]);



/***/ }),

/***/ 17726:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-hexa-section-label {\r\n    position: relative;\r\n    -webkit-print-color-adjust: exact;\r\n    /*friendly print*/\r\n}\r\n\r\n.as-hexa-section-label-text {\r\n    position: relative;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    font-size: 1em;\r\n    padding-right: 2.5em;\r\n    color: white;\r\n    font-weight: bold;\r\n    z-index: 2;\r\n}\r\n\r\n@media print {\r\n    .as-hexa-section-label-text {\r\n        color: white !important;\r\n    }\r\n\r\n    .as-hexa-section-label-index {\r\n        color: rgb(237, 147, 54) !important;\r\n    }\r\n}\r\n\r\n\r\n.as-hexa-section-label-index {\r\n    position: relative;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    text-align: center;\r\n    color: rgb(237, 147, 54);\r\n    font-weight: 900;\r\n    z-index: 2;\r\n}\r\n\r\n.as-hexa-section-label-background {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    bottom: 0;\r\n    z-index: 1;\r\n}\r\n\r\n.as-hexa-section-label-background>svg {\r\n    display: block;\r\n}\r\n\r\n.as-hexa-section-label-index-box {\r\n    stroke: rgb(251, 186, 130);\r\n    fill: white;\r\n    stroke-width: 2.5;\r\n}\r\n\r\n.as-hexa-section-label-text-box {\r\n    fill: rgb(237, 147, 54);\r\n    stroke: none;\r\n}", ""]);



/***/ }),

/***/ 69847:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "/*margin for border size*/\r\n.as-hruler {\r\n    position: relative;\r\n    height: 1.5em;\r\n    border: solid 1px black;\r\n    overflow: hidden;\r\n    font-family: courier, \"courier new\", monospace;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-hruler-line {\r\n    position: absolute;\r\n    bottom: 0;\r\n    height: 25%;\r\n    border-left: solid 1px rgb(17, 48, 43);\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-hruler-line.major {\r\n    height: 50%;\r\n    border-left: solid 1px rgb(5, 20, 18);\r\n}\r\n\r\n.as-hruler-major-number{\r\n    position: absolute;\r\n    text-align: center;\r\n    width: 5em;\r\n    pointer-events: none;\r\n    font-size: 0.7em;\r\n    bottom: 50%;\r\n} ", ""]);



/***/ }),

/***/ 55498:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "", ""]);



/***/ }),

/***/ 26394:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".kv-comment-item {\r\n    font-size: 1rem;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    position: relative;\r\n\r\n    padding: 0 calc(2em + 7px) 0 calc(2.85em + 20px);\r\n    cursor: pointer;\r\n    background-color: white;\r\n}\r\n\r\n.kv-comment-item:hover{\r\n    background-color: #f2f5fa;\r\n}\r\n\r\n\r\n.kv-comment-avatar-ctn {\r\n    position: absolute;\r\n    left: 10px;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.kv-comment-avatar-ctn::before,\r\n.kv-comment-item-flag-ctn::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    height: 100%;\r\n    vertical-align: middle;\r\n}\r\n\r\n.kv-comment-avatar {\r\n    width: 2.85em;\r\n    height: 2.85em;\r\n    background-size: cover;\r\n    border-radius: 50%;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.kv-comment-item-content {\r\n    padding: 5px 10px;\r\n    border: 1px solid #d6d6d6;\r\n    border-radius: 7px;\r\n    line-height: 1.5;\r\n}\r\n\r\n\r\n.kv-comment-item-flag-ctn {\r\n    position: absolute;\r\n    right: 10px;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.kv-comment-item-flag-unread {\r\n    display: none;\r\n    vertical-align: middle;\r\n    width: 0.75em;\r\n    height: 0.75em;\r\n    background-color: blue;\r\n    border-radius: 50%;\r\n}\r\n\r\n.kv-comment-item.as-unread .kv-comment-item-flag-unread {\r\n    display: inline-block;\r\n}\r\n\r\n.kv-comment-item-time {\r\n    font-weight: bold;\r\n}", ""]);



/***/ }),

/***/ 12761:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-linear-color-bar {\r\n    position: relative;\r\n    height: 2em;\r\n}\r\n\r\n.as-linear-color-background {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    right: 0;\r\n    bottom: 0;\r\n    display: block;\r\n}\r\n\r\n.as-linear-color-value-text {\r\n    position: absolute;\r\n    top: 0;\r\n    font-weight: 900;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-linear-color-min-value-text,\r\n.as-linear-color-max-value-text {\r\n    position: absolute;\r\n    bottom: 0;\r\n    white-space: nowrap;\r\n    font-weight: bold;\r\n}\r\n\r\n\r\n\r\n.as-linear-color-min-value-text {\r\n    left: 0;\r\n}\r\n\r\n.as-linear-color-rect {\r\n    stroke: none;\r\n}\r\n\r\n\r\n.as-linear-color-value-arrow {\r\n    fill: rgb(244, 124, 32);\r\n    stroke: rgb(244, 124, 32);\r\n}\r\n\r\n.as-linear-color-split-line {\r\n    stroke: white;\r\n}\r\n\r\n\r\n.as-linear-color-tiny-bar {\r\n    font-size: 1rem;\r\n    --value: 1;\r\n    --extend: 0.5;\r\n    --color: green;\r\n    position: relative;\r\n\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    white-space: nowrap;\r\n}\r\n\r\n\r\n.as-linear-color-tiny-text {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    padding-right: 0.3em;\r\n    width: 4em;\r\n    text-align: right;\r\n}\r\n\r\n.as-linear-color-tiny-bar-rect {\r\n    height: calc(10em / 14);\r\n    width: calc(10em * var(--value) / 1.4);\r\n    max-width: calc(10em / 1.4 + 10em * var(--extend) / 1.4);\r\n    min-width: 3px;\r\n    background-color: var(--color);\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n", ""]);



/***/ }),

/***/ 98375:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-location-input-modal {\r\n    z-index: 800001;\r\n}\r\n\r\n\r\n.as-location-picker-control-ctn {\r\n    margin: 10px;\r\n    background-color: white;\r\n    box-shadow: rgb(0 0 0 / 30%) 0px 1px 4px -1px;\r\n    border-radius: 2px;\r\n}\r\n\r\n\r\n.as-location-picker-control-btn {\r\n    width: 40px;\r\n    height: 40px;\r\n    padding: 0;\r\n    box-sizing: border-box;\r\n    background-color: transparent;\r\n    border: none;\r\n    color: rgb(102, 102, 102);\r\n}\r\n\r\n.as-location-picker-control-btn:hover {\r\n    color: black;\r\n}\r\n\r\n.gm-ui-hover-effect {\r\n    outline: none;\r\n}\r\n\r\n.as-location-picker-control-btn > span {\r\n    font-size: 2em;\r\n}\r\n\r\n\r\n.as-location-picker-search-input {\r\n    height: 30px;\r\n    width: 250px;\r\n    border-radius: 2px;\r\n    padding-right: 30px;\r\n    position: relative;\r\n}\r\n\r\n.as-location-picker-search-input > input {\r\n    outline: none;\r\n}\r\n\r\n\r\n.as-location-picker-search-input-search-icon-ctn {\r\n    position: absolute;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    width: 30px;\r\n    text-align: center;\r\n    font-size: 20px;\r\n    color: rgb(102, 102, 102);\r\n}\r\n\r\n.as-location-picker-search-input-search-icon-ctn:hover {\r\n    color: black;\r\n}\r\n\r\n.as-location-picker-search-input-search-icon-ctn::before,\r\n.as-location-picker-search-input-search-icon-ctn > span {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-location-picker-search-input-search-icon-ctn::before {\r\n    content: \"\";\r\n    height: 100%;\r\n}\r\n\r\n.as-location-picker-control-ctn .as-flexicon-button {\r\n    font-size: 14px;\r\n    min-width: 9em;\r\n    height: calc(2em + 2px);\r\n}\r\n\r\n.as-location-picker-control-ctn .as-flexicon-button:not(:last-child) {\r\n    margin-right: 20px;\r\n}\r\n\r\n\r\n.as-location-picker-control-ctn.as-transparent {\r\n    background-color: transparent;\r\n    box-shadow: none;\r\n}\r\n\r\n.as-location-picker.as-read-only .as-location-picker-cancel-btn,\r\n.as-location-picker.as-read-only .as-location-picker-search-input {\r\n    display: none;\r\n}\r\n\r\n.as-location-picker-control-ctn.as-bottom button{\r\n    box-shadow: 0 0px 2px 4px white;\r\n    -webkit-box-shadow: 0 0 2px 4px white;\r\n    -moz-box-shadow: 0 0 2px 4px white;\r\n}\r\n\r\n\r\n.as-location-input-modal {\r\n\r\n}\r\n\r\n.as-location-input-modal-window {\r\n    padding: 10px;\r\n    width: calc(100vw - 10px);\r\n    height: calc(100vh - 10px);\r\n    box-sizing: border-box;\r\n    max-width: 900px;\r\n    max-height: 600px;\r\n    box-shadow: 0px 1px 4px -1px rgba(0, 0, 0, 0.7);\r\n    -webkit-box-shadow: 0px 1px 4px -1px rgba(0, 0, 0, 0.7);\r\n    border-radius: 5px;\r\n    background-color: white;\r\n}\r\n\r\n\r\n.as-location-input-modal-window > .as-location-picker {\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n.as-location-input {\r\n    height: var(--as-input-height);\r\n    border-radius: var(--as-input-border-radius);\r\n    border: 1px solid #dddddd;\r\n    box-sizing: border-box;\r\n    width: calc(13em + 50px);\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    position: relative;\r\n    background-color: white;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n\r\n.as-location-input.as-disabled {\r\n    background-color: var(--as-disabled-background-color);\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n.as-location-input-text {\r\n    outline: none;\r\n    width: calc(100% - 2em - 1px);\r\n    height: 100%;\r\n    border: none;\r\n    background-color: transparent;\r\n    display: block;\r\n    padding: 0 0 0 var(--as-input-horizontal-padding);\r\n    font: inherit;\r\n    box-sizing: border-box;\r\n\r\n}\r\n\r\n.as-location-input-icon-ctn {\r\n    border-left: 1px solid #ddd;\r\n    border-right: none;\r\n    border-top: none;\r\n    border-bottom: none;\r\n    text-align: center;\r\n    position: absolute;\r\n    right: 0;\r\n    width: calc(2rem + 1px);\r\n    box-sizing: border-box;\r\n    top: 0;\r\n    height: 100%;\r\n    background-color: rgba(169, 169, 169, 0.1);\r\n    cursor: pointer;\r\n    font-size: inherit;\r\n}\r\n\r\n\r\n.as-location-input-icon-ctn:hover {\r\n    background-color: rgba(169, 169, 169, 0.25);\r\n}\r\n\r\n.as-location-input-icon-ctn:active {\r\n    background-color: rgba(169, 169, 169, 0.5);\r\n}\r\n\r\n\r\n.as-location-input-icon-ctn > span {\r\n    line-height: 2em;\r\n    font-size: calc(16em / 14);\r\n}\r\n\r\n.as-location-input.as-disabled {\r\n    color: var(--as-disabled-text-color);\r\n    pointer-events: none;\r\n}\r\n\r\n.as-location-input.as-disabled input {\r\n    background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.as-location-input.as-value-null .as-location-input-clear-btn,\r\n.as-location-input.as-must-not-null .as-location-input-clear-btn {\r\n    display: none;\r\n}\r\n\r\n.as-location-input-clear-btn {\r\n    font-size: inherit;\r\n    position: absolute;\r\n    right: calc(2em + 2px);\r\n    height: calc(2em + 2px);\r\n    top: calc(50% - -1em - 1px);\r\n    box-sizing: border-box;\r\n    background-color: transparent;\r\n    border: none;\r\n    color: #bbb;\r\n    visibility: hidden;\r\n}\r\n\r\n.as-location-input-clear-btn:hover {\r\n    color: rgb(132, 132, 132)\r\n}\r\n\r\n.as-location-input-clear-btn:active {\r\n    color: #525555;\r\n}\r\n\r\n.as-location-input-text:focus + .as-location-input-clear-btn,\r\n.as-location-input:hover .as-location-input-clear-btn {\r\n    visibility: visible;\r\n}\r\n\r\n\r\n@media screen and (max-width: 600px) {\r\n    .as-location-input-modal-window {\r\n        max-width: unset;\r\n        max-height: unset;\r\n\r\n    }\r\n}\r\n\r\n\r\n@media screen  and  (max-width: 500px) {\r\n    .as-location-picker-control-ctn.as-top {\r\n        margin-top: 60px;\r\n        width: calc(100% - 20px);\r\n    }\r\n\r\n    .as-location-picker-control-ctn.as-top .as-location-picker-search-input {\r\n        width: 100%;\r\n    }\r\n\r\n    .as-location-input-modal-window {\r\n        padding: 0;\r\n    }\r\n\r\n    .as-location-picker-control-ctn.as-bottom button{\r\n        margin-top: 20px;\r\n    }\r\n}\r\n\r\n\r\n.as-location-input-modal.as-mobile .as-location-input-modal-window {\r\n    height: calc(100vh - 80px);\r\n}", ""]);



/***/ }),

/***/ 40091:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".vmedia-no-show {\r\n    position: fixed;\r\n    top: 0;\r\n    left: 0;\r\n    width: 1;\r\n    height: 1;\r\n    z-index: -100000;\r\n    opacity: 0;\r\n}\r\n\r\n.vmedia-no-select,\r\n.vmedia-no-select * {\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    user-select: none;\r\n}\r\n\r\ncoccocgrammar {\r\n    display: none;\r\n}\r\n\r\n.vmedia-media-input {\r\n    box-sizing: border-box;\r\n    border: solid 1px rgba(0, 0, 0, 0.1)\r\n}\r\n\r\n\r\n.vmedia-media-input-text-container {\r\n    position: relative;\r\n    min-height: 2.5em;\r\n}\r\n\r\n.vmedia-media-input-text-container-editor:focus {\r\n    outline: none;\r\n}\r\n\r\n.vmedia-media-input-text-container-editor img {\r\n    display: none;\r\n}\r\n\r\n.vmedia-media-input-text-container-editor * {\r\n    font-family: inherit;\r\n    font-size: inherit;\r\n    font-weight: inherit;\r\n    text-decoration: inherit;\r\n    color: inherit;\r\n    background: none;\r\n    padding: 0;\r\n    margin: 0;\r\n    white-space: pre;\r\n}\r\n\r\n.vmedia-media-input-text-container-editor {\r\n    min-height: 2em;\r\n    padding-left: 0.5em;\r\n    padding-top: 0.25em;\r\n    padding-bottom: 0.25em;\r\n    margin-right: 0.5em;\r\n    box-sizing: border-box;\r\n    max-height: 6.66666666em;\r\n    overflow-x: hidden;\r\n    overflow-y: auto;\r\n}\r\n\r\n.vmedia-media-input-imagepreview-container {\r\n    white-space: normal;\r\n}\r\n\r\n.vmedia-media-input:not(.dragover) .vmedia-media-input-dropover {\r\n    display: none;\r\n}\r\n\r\n.vmedia-media-input-dropover {\r\n    display: inline-block;\r\n    width: 7em;\r\n    height: 7em;\r\n}\r\n\r\n.vmedia-media-input-dropover>svg {\r\n    width: 7em;\r\n    height: 7em;\r\n}\r\n\r\n.vmedia-media-input-imagepreview-container .vmedia-media-input-filepreview,\r\n.vmedia-media-input-imagepreview-container .vmedia-media-input-imagepreview {\r\n    margin: 0.3em;\r\n    vertical-align: middle;\r\n}\r\n\r\n.vmedia-media-input-filepreview,\r\n.vmedia-media-input-imagepreview {\r\n    position: relative;\r\n    display: inline-block;\r\n}\r\n\r\n.vmedia-media-input-imagepreview img {\r\n    height: 2.5em;\r\n    width: auto;\r\n}\r\n\r\n.vmedia-media-input-filepreview svg.attachment {\r\n    height: 2em;\r\n    width: 2em;\r\n}\r\n\r\n.vmedia-media-input-filepreview svg.times,\r\n.vmedia-media-input-imagepreview svg.times {\r\n    position: absolute;\r\n    top: 0.1em;\r\n    right: 0.1em;\r\n    width: 1em;\r\n    height: 1em;\r\n    fill: rgba(69, 69, 69, 0.6);\r\n}\r\n\r\n.vmedia-media-input-filepreview svg.times:hover,\r\n.vmedia-media-input-imagepreview svg.times:hover {\r\n    fill: rgba(144, 144, 144, 0.6);\r\n}\r\n\r\n.vmedia-media-input-filepreview svg.times:active,\r\n.vmedia-media-input-imagepreview svg.times:active {\r\n    fill: rgba(220, 220, 240, 0.6);\r\n}\r\n\r\n.vmedia-media-input-plug-button-container {\r\n    position: absolute;\r\n    left: 0.25em;\r\n    bottom: 0.25em;\r\n    top: 0.25em;\r\n}\r\n\r\n.vmedia-media-input-plug-button-container svg {\r\n    height: 1.5em;\r\n    width: 1.5em;\r\n    vertical-align: middle;\r\n    transition: transform .22s cubic-bezier(.5, 0, .4, 1);\r\n}\r\n\r\n\r\n.vmedia-media-input-plug-button-container svg path {\r\n    fill: rgba(66, 133, 244, 0.7);\r\n    transition: fill .22s cubic-bezier(.5, 0, .4, 1);\r\n}\r\n\r\n.vmedia-media-input.show-plugin .vmedia-media-input-plug-button svg path {\r\n    fill: rgba(134, 142, 153, 0.75);\r\n}\r\n\r\n\r\n\r\n.vmedia-media-input-plug-button {\r\n    padding: 0;\r\n    height: 100%;\r\n    width: 2em;\r\n    border: none;\r\n    background: transparent;\r\n    outline: none;\r\n\r\n}\r\n\r\n\r\n.vmedia-media-input-plugin-content-container {\r\n    position: absolute;\r\n    bottom: calc(1px + 100%);\r\n    opacity: 1;\r\n    transition: opacity .22s cubic-bezier(.5, 0, .4, 1);\r\n    background-color: white;\r\n    box-sizing: border-box;\r\n    border: solid 1px rgba(0, 0, 0, 0.1);\r\n    z-index: 20;\r\n    background: white;\r\n}\r\n\r\n.vmedia-media-input-plugin-content-container:empty{\r\n    display: none;\r\n}\r\n\r\n\r\n\r\n.vmedia-media-input-tool-container {\r\n    position: relative;\r\n    display: block;\r\n    height: 1.5em;\r\n    /* background: red;     */\r\n}\r\n\r\n\r\n\r\n.vmedia-media-input-tool-container-left {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.vmedia-media-input-tool-container-right {\r\n    position: absolute;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.vmedia-media-input-tool-container button {\r\n    width: 2.5em;\r\n    height: 100%;\r\n    font-size: 1em;\r\n    margin-left: 0.1em;\r\n    margin-right: 0.1em;\r\n    border: none;\r\n    background-color: transparent;\r\n    border-radius: 0.4em;\r\n}\r\n\r\n.vmedia-media-input-text-container-editor {\r\n    scrollbar-width: thin;\r\n}\r\n\r\n.vmedia-media-input-text-container-editor::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n\r\n\r\n\r\n.vmedia-media-input-text-container-editor::-webkit-scrollbar-track {\r\n    background: rgb(240, 240, 240);\r\n}\r\n\r\n.vmedia-media-input-text-container-editor::-webkit-scrollbar-thumb {\r\n    background: rgb(205, 205, 205);\r\n}\r\n\r\n.vmedia-media-input-tool-container button svg {\r\n    height: 1.25em;\r\n    width: 1.25em;\r\n}\r\n\r\n.vmedia-media-input-tool-container button:hover {\r\n    background-color: rgba(91, 192, 222, 0.1);\r\n}\r\n\r\n.vmedia-media-input-tool-container button:active {\r\n    background-color: rgba(91, 192, 222, 0.4);\r\n}\r\n\r\n.vmedia-media-input-tool-container button svg.send {\r\n    fill: rgba(66, 133, 244, 0.7);\r\n}\r\n\r\n.vmedia-media-input-tool-container button svg.add-file,\r\n.vmedia-media-input-tool-container button svg.add-image {\r\n    fill: rgba(66, 66, 66, 0.5);\r\n}\r\n\r\n.vmedia-media-input-tool-container button .mdi{\r\n    font-size:1.2em; \r\n}\r\n\r\n.vmedia-media-input-tool-container button:focus {\r\n    outline: none;\r\n}\r\n\r\n.vmedia-media-input-tool-container button{\r\n    vertical-align: middle;\r\n}\r\n\r\n.vmedia-media-input-plugin-content-container.blur{\r\n    visibility: hidden;\r\n}", ""]);



/***/ }),

/***/ 5848:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-ico {\r\n    width: 1em;\r\n    height: 1em;\r\n}\r\n\r\n.absol-button {\r\n    white-space: normal;\r\n    -webkit-touch-callout: none;\r\n    -webkit-user-select: none;\r\n    -khtml-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    user-select: none;\r\n}\r\n\r\n.absol-dropdown {\r\n    position: relative;\r\n}\r\n\r\n.absol-dropdown-content {\r\n    z-index: 1;\r\n    position: fixed;\r\n    left: 0;\r\n    top: 0;\r\n    overflow: auto;\r\n    -webkit-touch-callout: none;\r\n    -webkit-user-select: none;\r\n    -khtml-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    user-select: none;\r\n}\r\n\r\n.absol-dropdown.top > .absol-dropdown-content {\r\n    top: auto;\r\n    bottom: 100%;\r\n}\r\n\r\n.absol-dropdown.overlap-left > .absol-dropdown-content {\r\n    left: auto;\r\n    right: 0;\r\n}\r\n\r\n.absol-dropright {\r\n    position: relative;\r\n}\r\n\r\n.absol-dropright-content {\r\n    z-index: 1;\r\n    position: fixed;\r\n    left: 0;\r\n    top: 0;\r\n    -webkit-touch-callout: none;\r\n    -webkit-user-select: none;\r\n    -khtml-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    user-select: none;\r\n    overflow: auto;\r\n}\r\n\r\n.absol-dropright.overlap-top > .absol-dropright-content {\r\n    top: unset;\r\n    bottom: 0;\r\n}\r\n\r\n.absol-drop-hidden > .absol-dropdown-content,\r\n.absol-drop-hidden > .absol-dropright-content {\r\n    visibility: hidden;\r\n    top: 0 !important;\r\n    left: 0 !important;\r\n    max-height: 99vh !important;\r\n    opacity: 0;\r\n    pointer-events: none;\r\n}\r\n\r\n.absol-drop-hidden > .absol-dropright-content *,\r\n.absol-drop-hidden > .absol-dropdown-content * {\r\n    visibility: hidden;\r\n}\r\n\r\n.absol-hmenu {\r\n    display: inline-block;\r\n    background-color: rgb(252, 252, 255);\r\n    /* background-color: rgb(33, 33, 33); */\r\n\r\n}\r\n\r\n.absol-hmenu > .absol-dropdown {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.absol-hmenu-button:hover,\r\n.absol-hmenu .absol-hmenu-button-hover {\r\n\r\n    background-color: rgb(175, 175, 175);\r\n}\r\n\r\n.absol-hmenu-button {\r\n    padding-left: 1em;\r\n    padding-right: 1em;\r\n}\r\n\r\n.absol-hmenu-button:focus {\r\n    outline: none;\r\n}\r\n\r\n.absol-hmenu-button,\r\n.absol-vmenu-button {\r\n    color: rgb(55, 55, 55);\r\n    height: 100%;\r\n    background-color: transparent;\r\n    font-size: 1em;\r\n    border: none;\r\n    padding: 0;\r\n    margin: 0;\r\n    outline: none;\r\n}\r\n\r\n.absol-hmenu-button {\r\n    padding-left: 1em;\r\n    padding-right: 1em;\r\n}\r\n\r\n.absol-vmenu {\r\n\r\n}\r\n\r\n.absol-hmenu .absol-dropdown-content,\r\n.absol-hmenu .absol-dropright-content,\r\n.as-v-root-menu .absol-dropright-content {\r\n    padding-top: 0.4em;\r\n    padding-bottom: 0.4em;\r\n    background-color: rgb(252, 252, 255);\r\n    -webkit-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    -moz-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n}\r\n\r\n.absol-vmenu-button {\r\n    text-align: left;\r\n    padding-left: 0.5em;\r\n    padding-right: 2em;\r\n    height: 1.8em;\r\n    white-space: nowrap;\r\n    position: relative;\r\n    display: block;\r\n}\r\n\r\nimg.absol-vmenu-button-icon {\r\n    opacity: 0;\r\n    display: none;\r\n}\r\n\r\nimg.absol-vmenu-button-icon[src] {\r\n    display: block;\r\n}\r\n\r\n.absol-vmenu-button-ext-icon-container {\r\n    display: inline-block;\r\n    width: 1.2em;\r\n    height: 1.2em;\r\n    vertical-align: middle;\r\n    margin-right: 0.5em;\r\n}\r\n\r\n.absol-vmenu-button-ext-icon-container > span,\r\n.absol-vmenu-button-ext-icon-container > i {\r\n    font-size: 1.2em;\r\n    line-height: 1;\r\n    display: block;\r\n}\r\n\r\n\r\n.absol-vmenu-button-ext-icon-container > svg,\r\n.absol-vmenu-button-ext-icon-container > img {\r\n    height: 1.2em;\r\n    width: 1.2em;\r\n    display: block;\r\n}\r\n\r\n\r\n.absol-vmenu-button-text,\r\n.absol-vmenu-button-key {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.absol-vmenu-button-key {\r\n    font-style: italic;\r\n    text-align: right;\r\n    margin-left: 1em;\r\n}\r\n\r\n.absol-vmenu-arrow-container {\r\n    position: absolute;\r\n    right: 0.2em;\r\n    top: 0.3em;\r\n    bottom: 0.3em;\r\n}\r\n\r\n\r\n.absol-vmenu-arrow-container::after {\r\n    content: \"\";\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n}\r\n\r\n\r\n.absol-vmenu-arrow {\r\n    display: inline-block;\r\n    font-size: inherit;\r\n    vertical-align: middle;\r\n}\r\n\r\n.absol-menu-item-disabled .absol-vmenu-arrow {\r\n    display: none;\r\n}\r\n\r\n.absol-vmenu-button:hover,\r\n.absol-vmenu .absol-vmenu-button-hover {\r\n    background-color: rgb(214, 214, 217);\r\n}\r\n\r\n.absol-menu-item-disabled .absol-vmenu-button:hover,\r\n.absol-menu-item-disabled .absol-vmenu .absol-vmenu-button-hover,\r\n.absol-menu-item-disabled .absol-hmenu-button:hover,\r\n.absol-menu-item-disabled .absol-hmenu .absol-hmenu-button-hover {\r\n    background-color: transparent;\r\n}\r\n\r\n.absol-vmenu-line {\r\n    text-align: center;\r\n    padding: 0.2em 1em;\r\n}\r\n\r\n.absol-vmenu-line > div {\r\n    height: 1px;\r\n    background-color: rgb(97, 97, 97);\r\n}\r\n\r\n.absol-menu-item-disabled {\r\n}\r\n\r\n.absol-menu-item-hidden {\r\n    display: none;\r\n}\r\n\r\n.absol-menu-item-disabled button {\r\n    color: rgb(155, 155, 159);\r\n}\r\n\r\n.dark .absol-menu-item-disabled button {\r\n    color: rgb(100, 100, 100);\r\n}\r\n\r\n.dark .absol-vmenu-button:hover,\r\n.dark .absol-vmenu .absol-vmenu-button-hover {\r\n    background-color: rgb(9, 71, 113);\r\n}\r\n\r\n\r\n.dark .absol-hmenu .absol-dropdown-content,\r\n.dark .absol-hmenu .absol-dropright-content {\r\n    background-color: rgb(37, 37, 38);\r\n}\r\n\r\n\r\n.dark .absol-hmenu-button,\r\n.dark .absol-vmenu-button {\r\n    color: rgb(200, 200, 200);\r\n\r\n}\r\n\r\n\r\n.dark .absol-hmenu-button:hover,\r\n.dark .absol-hmenu .absol-hmenu-button-hover {\r\n    background-color: rgb(80, 80, 80);\r\n}\r\n\r\n\r\n.dark .absol-hmenu {\r\n    background-color: rgb(33, 33, 33);\r\n}\r\n\r\n/*standard-alone*/\r\n.absol-vmenu-button.standard-alone {\r\n    height: 2em;\r\n    border-radius: 0.3em;\r\n    border: solid rgb(169, 169, 170) 1px;\r\n    outline: none;\r\n}\r\n\r\n.as-v-root-menu {\r\n    display: inline-block;\r\n    box-sizing: border-box;\r\n    /*overflow-y: auto;*/\r\n    /*overflow-x: hidden;*/\r\n}", ""]);



/***/ }),

/***/ 68491:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-message-dialog {\r\n    font-size: 1rem;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    box-sizing: border-box;\r\n    background-color: white;\r\n    border-radius: 0.3em;\r\n    border: 1px solid #dddddd;\r\n    -webkit-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    -moz-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n}\r\n\r\n.as-message-dialog-header {\r\n    padding: calc(5em / 14) 1em;\r\n    border-bottom: 1px solid #e9ecef;\r\n}\r\n\r\n\r\n.as-message-dialog-title {\r\n    font-size: 1.25em;\r\n    font-weight: 500;\r\n}\r\n\r\n.as-message-dialog-body {\r\n    padding: 1em;\r\n}\r\n\r\n.as-message-dialog-footer {\r\n    text-align: right;\r\n    padding: 10px 20px;\r\n    border-top: 1px solid #e9ecef;\r\n}\r\n\r\n.as-message-dialog-footer:empty,\r\n.as-message-dialog-header:empty {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-message-dialog-footer button {\r\n    margin-left: 1.5em;\r\n}\r\n\r\n\r\n.as-message-dialog-footer button.as-flexicon-button .as-flexicon-button-text-container {\r\n    padding-left: 2em;\r\n    padding-right: 2em;\r\n}", ""]);



/***/ }),

/***/ 48904:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-conversation-box {\r\n    display: flex;\r\n    flex-direction: column;\r\n    font-size: 4rem;\r\n    --right-width: 0;\r\n}\r\n\r\n.as-conversation-box-message-ctn {\r\n    flex-grow: 1;\r\n}\r\n\r\n.as-conversation-box-input-ctn {\r\n    /** empty**/\r\n}\r\n\r\n.as-message-input {\r\n    position: relative;\r\n    box-sizing: border-box;\r\n    padding-top: calc(5em  / 14);\r\n    padding-bottom: calc(5em  / 14);\r\n    padding-left: calc(5em  / 14);\r\n    overflow: visible;\r\n    font-size: var(--as-input-font-size);\r\n    font-family: var(--as-input-font-family);\r\n}\r\n\r\n.as-message-input * {\r\n    font: inherit;\r\n}\r\n\r\n\r\n.as-message-input-plugin-btn {\r\n    font-size: inherit;\r\n    width: calc(40em / 14);\r\n    height: calc(40em / 14);\r\n    padding: 0;\r\n    border: none;\r\n    color: rgb(122, 122, 122);\r\n    background-color: rgb(241, 241, 241);\r\n    outline: none;\r\n    border-radius: 50%;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.as-message-input-plugin-btn:active {\r\n    background-color: rgb(212, 212, 212);\r\n}\r\n\r\n.as-message-input-plugin-btn:hover {\r\n    background-color: rgb(235, 235, 235);\r\n\r\n}\r\n\r\n\r\n.as-message-input-plugin-btn span {\r\n    font-size: calc(24em / 14);\r\n}\r\n\r\n\r\n.as-message-input-right {\r\n    position: absolute;\r\n    bottom: calc(10em / 14);\r\n    right: calc(5em / 14);\r\n    z-index: 0;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-message-input-right .as-message-input-plugin-btn {\r\n    margin-left: calc(10em / 14);\r\n}\r\n\r\n\r\n.as-message-input-left {\r\n    position: absolute;\r\n    left: calc(5em / 14);\r\n    bottom:calc(5em / 14);\r\n}\r\n\r\n\r\n.as-message-input-pre-ctn {\r\n    position: relative;\r\n    width: calc(100% - var(--right-width));\r\n    border-radius: 1.8em;\r\n    box-sizing: border-box;\r\n    transition: width 0.1s;\r\n    padding: calc(10em / 14) calc(20em / 14) calc(10em / 14) 3.57em;\r\n    background-color: rgb(241, 241, 244);\r\n}\r\n\r\n\r\n.as-message-input-pre-ctn::after {\r\n    display: inline-block;\r\n    content: \"\";\r\n    height: calc(2em + 2px);\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-message-input:not(.as-v2)  .as-message-input-pre:before {\r\n    content: \"\";\r\n    line-height: calc(2em + 2px);\r\n    display: inline;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n/*.as-message-input.as-has-text.as-text-changed .as-message-input-pre-ctn,*/\r\n/*.as-message-input.as-has-quote .as-message-input-pre-ctn,*/\r\n/*.as-message-input.as-has-attachment .as-message-input-pre-ctn {*/\r\n/*    width: calc(100% - 4em - var(--always-visible-buttons-width));*/\r\n/*}*/\r\n\r\n\r\n.as-message-input-pre {\r\n    display: inline-block;\r\n    width: calc(100% - 2px);\r\n    max-height: 6.5em;\r\n    box-sizing: border-box;\r\n    font-family: inherit;\r\n    font-size: inherit;\r\n    outline: none;\r\n    vertical-align: middle;\r\n    margin: 0;\r\n    white-space: pre-wrap;\r\n    overflow-x: hidden;\r\n    overflow-y: auto;\r\n    line-height: 1.5;\r\n    border: none;\r\n}\r\n\r\n\r\n\r\n.as-message-input-camera-caller,\r\n.as-message-input-camera-microphone {\r\n    display: none;\r\n}\r\n\r\n.as-message-input-emoji-picker-ctn {\r\n    position: absolute;\r\n    bottom: 100%;\r\n    left: 0;\r\n    right: 0;\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    background-color: white;\r\n}\r\n\r\n\r\n.as-message-input-plugin-btn.as-message-input-plugin-send {\r\n    color: white;\r\n    background: linear-gradient(135deg, rgb(0, 120, 212), rgb(0, 188, 242));\r\n    transform: scale(1);\r\n    transition: scale 0.1s;\r\n}\r\n\r\n.as-message-input-plugin-btn.as-message-input-plugin-send span {\r\n    font-size: calc(20em / 14);\r\n}\r\n\r\n.as-message-input-plugin-btn.as-message-input-plugin-send:hover {\r\n    background: linear-gradient(135deg, rgb(0, 140, 212), rgb(0, 208, 252));\r\n}\r\n\r\n.as-message-input-plugin-btn.as-message-input-plugin-send:active {\r\n    transform: scale(0.9);\r\n}\r\n\r\n\r\n.as-message-input:not(.as-text-changed):not(.as-has-attachment):not(.as-has-quote) .as-message-input-plugin-send,\r\n.as-message-input:not(.as-has-text):not(.as-has-attachment):not(.as-has-quote) .as-message-input-plugin-send,\r\n.as-message-input:not(.as-mode-edit) .as-message-input-plugin-cancel,\r\n.as-message-input.as-mode-edit.as-text-changed.as-has-text .as-message-input-plugin-cancel,\r\n.as-message-input:not(.as-has-attachment):not(.as-drag-hover) .as-message-input-attachment-ctn,\r\n.as-message-input.as-auto-send .as-message-input-attachment-ctn,\r\n.as-message-input.as-mode-edit .as-message-input-plugin-file,\r\n.as-message-input.as-has-text .as-message-input-plugin-file,\r\n.as-message-input.as-has-quote .as-message-input-plugin-file,\r\n.as-message-input:not(.as-has-quote) .as-message-quote-box {\r\n    display: none;\r\n}\r\n\r\n.as-message-input .as-message-quote-box {\r\n    border-bottom: 1px solid #ddd;\r\n}\r\n\r\n.as-message-quote-box {\r\n    position: relative;\r\n\r\n}\r\n\r\n.as-message-input.as-has-attachment .as-message-quote-box {\r\n    margin-bottom: 5px;\r\n}\r\n\r\n.as-message-quote-remove-btn {\r\n    position: absolute;\r\n    color: rgb(43, 44, 51);\r\n    right: -7px;\r\n    top: 5px;\r\n    width: 20px;\r\n    height: 20px;\r\n    padding: 0;\r\n    background: transparent;\r\n    border: none;\r\n    border-radius: 50%;\r\n    font-size: 16px;\r\n    outline: none;\r\n}\r\n\r\n.as-message-quote-remove-btn:hover {\r\n    color: rgb(143, 144, 151);\r\n}\r\n\r\n.as-message-quote-box {\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n}\r\n\r\n.as-message-quote-box:not(.as-removable) .as-message-quote-remove-btn {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-message-quote-box > div {\r\n    display: inline-block;\r\n    vertical-align: top;\r\n}\r\n\r\n.as-message-quote-box:not(.as-has-img):not(.as-has-file) .as-message-quote-img {\r\n    display: none;\r\n}\r\n\r\n.as-message-quote-img {\r\n    width: 40px;\r\n    height: 40px;\r\n    padding: 5px;\r\n    box-sizing: border-box;\r\n    background-size: cover;\r\n    background-origin: border-box;\r\n    background-position: center;\r\n    background-repeat: no-repeat;\r\n}\r\n\r\n.as-message-quote-sym {\r\n    width: 1.8em;\r\n}\r\n\r\n.as-message-quote-sym > span {\r\n    font-size: 1.8em;\r\n    color: rgb(169, 169, 172);\r\n}\r\n\r\n.as-message-quote-content {\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    width: calc(100% - 26px);\r\n    box-sizing: border-box;\r\n    padding-left: 20px;\r\n}\r\n\r\n.as-message-quote-box.as-has-img .as-message-quote-content,\r\n.as-message-quote-box.as-has-file .as-message-quote-content {\r\n    width: calc(100% - 66px);\r\n    padding-left: 5px;\r\n}\r\n\r\n.as-message-quote-box.as-has-file .as-message-quote-img {\r\n    background-origin: padding-box;\r\n    background-size: contain;\r\n}\r\n\r\n.as-message-quote-text {\r\n    font-size: calc(16em / 14);\r\n    line-height: 1.75;\r\n    font-style: italic;\r\n    color: rgb(43, 44, 51);\r\n    max-width: 100%;\r\n    word-break: break-word;\r\n    white-space: pre-wrap;\r\n}\r\n\r\n.as-message-quote-box.as-shorten-text .as-message-quote-text {\r\n    word-break: normal;\r\n\r\n    overflow: hidden;\r\n    white-space: nowrap;\r\n    text-overflow: ellipsis;\r\n}\r\n\r\n.as-message-quote-text .as-emoji {\r\n    width: 20px;\r\n    height: 20px;\r\n}\r\n\r\n.as-message-quote-desc {\r\n    font-size: 0.85em;\r\n    color: rgb(80, 80, 88);\r\n}\r\n\r\n.as-message-input-attachment-ctn {\r\n    border-bottom: 1px solid #ddd;\r\n    max-height: 170px;\r\n    overflow-y: auto;\r\n}\r\n\r\n\r\n.as-message-input-attach-preview {\r\n    display: inline-block;\r\n    position: relative;\r\n    width: 135px;\r\n    height: 135px;\r\n    vertical-align: middle;\r\n    margin-right: 5px;\r\n    margin-bottom: 5px;\r\n    border-radius: 10px;\r\n    background-color: white;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-message-input-attach-preview-image {\r\n    min-width: 20px;\r\n    image-orientation: from-image;\r\n    width: 100%;\r\n    height: 100%;\r\n    background-size: cover;\r\n    background-position: center center;\r\n    background-repeat: no-repeat;\r\n}\r\n\r\n\r\n.as-message-input-attach-preview-file {\r\n    max-width: 50%;\r\n    max-height: 50%;\r\n    margin-left: 10px;\r\n    margin-top: 10px;\r\n}\r\n\r\n.as-message-input-attach-preview-close-btn {\r\n    position: absolute;\r\n    right: 10px;\r\n    top: 10px;\r\n    width: 18px;\r\n    height: 18px;\r\n    border-radius: 50%;\r\n    text-align: center;\r\n    border: 1px solid white;\r\n    outline: none;\r\n    padding: 0;\r\n    color: white;\r\n    -webkit-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.64);\r\n    -moz-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.64);\r\n    box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.64);\r\n    background-color: rgba(100, 100, 100, 0.5);\r\n}\r\n\r\n.as-message-input-attach-preview-close-btn span {\r\n    font-size: 14px;\r\n}\r\n\r\n.as-message-input-attach-preview-close-btn:hover {\r\n    background-color: rgba(255, 255, 255, 0.5);\r\n    color: rgb(200, 200, 200);\r\n}\r\n\r\n.as-message-input-attach-preview-close-btn:active {\r\n    background-color: rgba(255, 255, 255, 0.7);\r\n    color: rgb(255, 255, 255);\r\n}\r\n\r\n\r\n.as-message-input:not(.as-drag-hover) .as-message-input-attachment-add-btn-drop,\r\n.as-message-input.as-drag-hover .as-message-input-attachment-add-btn-plus {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-message-input-attach-preview-info {\r\n    position: absolute;\r\n    left: 10px;\r\n    bottom: 10px;\r\n    right: 10px;\r\n    max-height: calc(100% - 20px);\r\n    text-shadow: 0px 1px 3px white;\r\n    color: black;\r\n    font-size: 14px;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.as-message-input-attach-preview-name {\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n}\r\n\r\n.as-message-input-attach-preview-size {\r\n    color: #42494c;\r\n}\r\n\r\n.as-message-input-attachment-add-btn {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 135px;\r\n    width: 60px;\r\n    border: none;\r\n    border-radius: 10px;\r\n    padding: 0;\r\n    background-color: rgb(196, 196, 200);\r\n    color: white;\r\n    font-size: 50px;\r\n    outline: none;\r\n    margin-bottom: 10px;\r\n}\r\n\r\n.as-message-input-attachment-add-btn:hover {\r\n    background-color: rgb(169, 169, 169)\r\n\r\n}\r\n\r\n.as-message-input-attachment-add-btn:active {\r\n    background-color: rgb(138, 141, 145)\r\n}\r\n\r\n.as-message-input-external-tools-popup {\r\n    position: absolute;\r\n\r\n    max-width: 100%;\r\n    bottom: 100%;\r\n    background-color: white;\r\n}\r\n\r\n.as-message-input-external-tools-popup.as-align-left{\r\n    left: 0;\r\n}\r\n\r\n\r\n.as-message-input-external-tools-popup.as-align-right{\r\n    right: 0;\r\n}\r\n\r\n.as-message-input-external-tools-popup.as-align-fixed{\r\n    right: 0;\r\n    left: 0;\r\n}\r\n\r\nimg.as-emoji {\r\n    vertical-align: bottom;\r\n}\r\n\r\nspan.as-emoji-text {\r\n    position: absolute;\r\n    color: transparent;\r\n    width: 20px;\r\n    opacity: 0;\r\n}", ""]);



/***/ }),

/***/ 47965:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ":root {\r\n    --control-horizontal-distance-2: 10px;\r\n}\r\n\r\n.mk-nav {\r\n    position: relative;\r\n    --mk-nav-line-top: 0;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    font-size: 1rem;\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    -ms-user-select: none;\r\n    -moz-user-select: none;\r\n    --mk-navigator-bound-left: 0;\r\n}\r\n\r\n.mk-nav::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    transition: top 0.2s;\r\n    top: var(--mk-nav-line-top);\r\n    height:  calc(2em + 12px);\r\n    border-right: 4px solid rgb(20, 100, 246);\r\n    right: -3px;\r\n}\r\n\r\n.mk-nav.mk-has-draggable .mk-nav-item {\r\n    padding-left: calc(2em + 2px);\r\n}\r\n\r\n.mk-nav-item {\r\n    height: calc(2em + 12px);\r\n    padding-left: var(--control-horizontal-distance-2);\r\n    padding-right: 20px;\r\n    min-width: 100px;\r\n    cursor: pointer;\r\n    white-space: nowrap;\r\n    position: relative;\r\n    overflow: visible;\r\n    display: flex;\r\n    align-items: center;\r\n    background-color: white;\r\n}\r\n\r\n.mk-nav-item.as-board-moving {\r\n    transform: none;\r\n    left: var(--mk-navigator-bound-left) !important;\r\n    background-color: rgb(169, 169, 172, 0.3);\r\n}\r\n\r\n.mk-nav-item:hover {\r\n    background-color: rgb(169, 169, 172, 0.3);\r\n}\r\n\r\n.mk-nav-item.as-hidden{\r\n    display: none;\r\n}\r\n\r\n.mk-nav-item-text-ctn {\r\n    flex-grow: 1;\r\n    padding-right: var(--control-horizontal-distance-2);\r\n    padding-left: var(--control-horizontal-distance-2)\r\n}\r\n\r\n\r\n.mk-nav-item-switch-ctn {\r\n\r\n}\r\n\r\n/*\r\n.mk-nav-item::after {\r\n    content: \"\";\r\n    border: 1px solid #ddd;\r\n    z-index: 2;\r\n    pointer-events: none;\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: -1px;\r\n}\r\n\r\n.mk-nav-item:hover::after,\r\n.mk-nav-item.mk-current::after{\r\n    border-color: rgb(20, 100, 246);\r\n    z-index: 3;\r\n}\r\n*/\r\n\r\n\r\n.mk-nav-item.mk-current {\r\n    color: rgb(20, 100, 246);\r\n    text-shadow: 1px 0 0 currentColor;\r\n}\r\n\r\n.mk-nav-item-drag-zone {\r\n    position: absolute;\r\n    z-index: 1;\r\n    left: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    width: 30px;\r\n    font-size: inherit;\r\n}\r\n\r\n.mk-nav-item-drag-zone i {\r\n    font-size: 1.7em;\r\n}\r\n\r\n.mk-nav-item-drag-zone::before {\r\n    content: \"\";\r\n    height: 100%;\r\n}\r\n\r\n.mk-nav-item-drag-zone::before,\r\n.mk-nav-item-drag-zone i {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}", ""]);



/***/ }),

/***/ 16951:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "/**** APP ***************/\r\n\r\n.am-application {\r\n    width: 100%;\r\n    height: 100%;\r\n    position: relative;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    font-size: 14px;\r\n}\r\n\r\n.am-application-frameview {\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n\r\n.am-application-tabbar {\r\n    display: none;\r\n}\r\n\r\n.am-application.am-show-tabbar .am-application-tabbar {\r\n    display: block;\r\n}\r\n\r\n.am-application.am-show-tabbar .am-application-frameview {\r\n    height: calc(100% - 3em);\r\n}\r\n\r\n\r\n/*************** HEADER****************************************/\r\n\r\n.am-header-bar {\r\n    display: flex;\r\n    align-items: center;\r\n    background-color: var(--variant-color-primary);\r\n    -webkit-box-shadow: 0px 1px 10px 2px rgba(0, 0, 0, 0.5);\r\n    -moz-box-shadow: 0px 1px 10px 2px rgba(0, 0, 0, 0.5);\r\n    box-shadow: 0px 1px 5px 1px rgba(0, 0, 0, 0.5);\r\n    box-sizing: border-box;\r\n    position: relative;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    color: white;\r\n    height: 3em;\r\n    font-size: 1rem;\r\n}\r\n\r\n\r\n.am-header-bar-left-btn,\r\nbutton.am-header-bar-command {\r\n    display: inline-block;\r\n    text-align: center;\r\n    border: none;\r\n    background-color: transparent;\r\n    height: 3em;\r\n    width: 3em;\r\n    padding: 0;\r\n    margin: 0;\r\n    vertical-align: middle;\r\n    color: white;\r\n    outline: none;\r\n    font-size: inherit;\r\n}\r\n\r\n.am-header-bar-left-btn span,\r\nbutton.am-header-bar-command span,\r\n.am-header-bar-left-btn i,\r\nbutton.am-header-bar-command i {\r\n    font-size: 2em;\r\n}\r\n\r\nbutton.am-header-bar-command:not(:last-child) {\r\n    margin-right: 0.6256em;\r\n}\r\n\r\n\r\n.am-header-bar-left-btn:active,\r\nbutton.am-header-bar-action:active,\r\nbutton.am-header-bar-command:active {\r\n    color: rgb(220, 220, 222);\r\n}\r\n\r\n.am-header-bar-title-ctn {\r\n    flex-grow: 1;\r\n    white-space: nowrap;\r\n    overflow: inherit;\r\n    position: relative;\r\n    height: 3em;\r\n}\r\n\r\n.am-header-bar-no-size-wrapper {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    right: 0;\r\n    white-space: nowrap;\r\n}\r\n\r\n.am-header-bar-no-size-wrapper::before {\r\n    content: \"\";\r\n    height: 100%;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.am-header-bar-title-wrapper {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    width: 100%;\r\n\r\n}\r\n\r\n.am-header-bar-title-ctn:first-child .am-header-bar-title {\r\n    padding-left: 1.2em;\r\n}\r\n\r\n\r\n.am-header-bar-title {\r\n    font-size: 1.2em;\r\n    color: white;\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n\r\n}\r\n\r\n.am-header-bar-title-desc {\r\n    font-size: 0.8em;\r\n    line-height: 2;\r\n}\r\n\r\n.am-header-bar-title-desc:empty {\r\n    display: none;\r\n}\r\n\r\n\r\n.am-header-bar-right {\r\n\r\n}\r\n\r\n.am-header-bar-right::after {\r\n    content: \"\";\r\n    height: 100%;\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n    width: 0.357142857em;\r\n}\r\n\r\n\r\n.am-header-bar-right-item-ctn {\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n}\r\n\r\n\r\nbutton.am-header-bar-action {\r\n    height: 3em;\r\n    width: 3em;\r\n    background-color: transparent;\r\n    color: white;\r\n    border: none;\r\n    font-size: inherit;\r\n    outline: none;\r\n    vertical-align: middle;\r\n}\r\n\r\n.am-header-bar-quickmenu-btn.am-status-active .am-header-bar-quickmenu-btn-circle {\r\n    background-color: rgba(169, 169, 169, 0.5);\r\n}\r\n\r\n\r\n.am-header-bar-quickmenu-btn-circle {\r\n    height: 2em;\r\n    width: 2em;\r\n    border-radius: 50%;\r\n    text-align: center;\r\n}\r\n\r\n.am-header-bar-quickmenu-btn-circle span {\r\n    font-size: 1.6em;\r\n    line-height: 1.25em;\r\n}\r\n\r\n.am-header-bar-quickmenu-btn.as-active .mdi-dots-horizontal-circle-outline,\r\n.am-header-bar-quickmenu-btn:not(.as-active) .mdi-dots-horizontal-circle {\r\n    display: none;\r\n}\r\n\r\n\r\n.am-header-bar.am-light-weight,\r\n.am-header-bar.am-light-weight .am-header-bar-title-ctn,\r\n.am-header-bar.am-light-weight .am-header-bar-left-btn,\r\n.am-header-bar.am-light-weight button.am-header-bar-command,\r\n.am-header-bar.am-light-weight button.am-header-bar-action {\r\n    height: calc(2rem + 2px);\r\n}\r\n\r\n\r\n.am-header-bar.am-light-weight .am-header-bar-left-btn span,\r\n.am-header-bar.am-light-weight button.am-header-bar-command span,\r\n.am-header-bar-left-btn i,\r\n.am-header-bar.am-light-weight button.am-header-bar-command i {\r\n    font-size: 1.6em;\r\n}\r\n\r\n.am-application.am-stack > .am-activity {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n}\r\n\r\n\r\n.am-activity {\r\n    width: 100%;\r\n    height: 100%;\r\n    background-color: white;\r\n}\r\n\r\n.am-activity.am-grid {\r\n    grid-template-areas: 'header' 'body';\r\n    grid-template-rows: 3em auto;\r\n    display: grid;\r\n}\r\n\r\n\r\n.am-activity.am-grid > .am-header-bar {\r\n    grid-area: header;\r\n}\r\n\r\n.am-activity.am-grid > .am-activity-body {\r\n    grid-area: body;\r\n    padding: 10px 5px;\r\n    overflow: auto;\r\n}\r\n\r\n.am-explore-item-block {\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    padding: 10px 18px 15px 18px;\r\n    position: relative;\r\n    user-select: none;\r\n    box-sizing: border-box;\r\n    width: var(--item-width);\r\n    outline: none;\r\n}\r\n\r\n.am-explore-item-block.as-hidden {\r\n    display: none;\r\n}\r\n\r\n.am-explore-item-block:active::after,\r\n.am-explore-item-block:hover::after,\r\n.am-explore-item-block:focus::after {\r\n    display: block;\r\n    position: absolute;\r\n    left: 10px;\r\n    right: 10px;\r\n    top: 0;\r\n    bottom: 0;\r\n    z-index: 2;\r\n    border-radius: 5px;\r\n}\r\n\r\n.am-explore-item-block:active::after {\r\n    content: \"\";\r\n    background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n.am-explore-item-block:focus::after {\r\n    content: \"\";\r\n    border: 1px solid #a9a9a9;\r\n    background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.am-explore-item-block-icon {\r\n    display: block;\r\n    box-sizing: border-box;\r\n    width: 100%;\r\n    height: 50px;\r\n    text-align: center;\r\n    white-space: nowrap;\r\n    color: var(--variant-color-secondary);\r\n    padding: 0 5px;\r\n}\r\n\r\n.am-explore-item-block-icon::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n}\r\n\r\n.am-explore-item-block-icon > span:first-child,\r\n.am-explore-item-block-icon > .mdi {\r\n    display: inline-block;\r\n    font-size: 50px;\r\n    vertical-align: middle;\r\n    line-height: 1;\r\n}\r\n\r\n.am-explore-item-block-icon > svg {\r\n    width: 50px;\r\n    height: 50px;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.am-explore-item-block-name {\r\n    width: 100%;\r\n    text-align: center;\r\n    padding: 10px 0 5px 0;\r\n}\r\n\r\n\r\n.am-explore-section-break {\r\n    display: flex;\r\n    align-content: center;\r\n    margin-bottom: 10px;\r\n}\r\n\r\n.am-explore-section-break-name {\r\n    padding: 3px 5px 3px 5px;\r\n    background-color: var(--variant-color-link);\r\n    border-radius: 2px;\r\n    color: white;\r\n\r\n}\r\n\r\n.am-explore-section-break-line {\r\n    flex-grow: 1;\r\n    position: relative;\r\n}\r\n\r\n.am-explore-section-break-line::after {\r\n    position: absolute;\r\n    left: 0;\r\n    width: 100%;\r\n    top: calc(50% - 1px);\r\n    display: block;\r\n    content: \"\";\r\n    flex-grow: 1;\r\n    border-top: 2px solid #dddddd;\r\n    vertical-align: center;\r\n}\r\n\r\n.am-float-button {\r\n    position: fixed;\r\n    bottom: 12px;\r\n    right: 12px;\r\n    border-radius: 50%;\r\n    width: 50px;\r\n    height: 50px;\r\n    transition: box-shadow 0.4s ease;\r\n    background: #4610f5;\r\n    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.6);\r\n    color: #fff;\r\n    font-size: 1.7rem;\r\n    font-weight: bold;\r\n    cursor: pointer;\r\n    z-index: 500;\r\n    border: none;\r\n}\r\n\r\n.am-explore-group {\r\n    padding: 5px 5px 10px 5px;\r\n}\r\n\r\n.am-explore-group.as-hidden {\r\n    display: none;\r\n}\r\n\r\n/******************************/\r\n.am-springboard-menu {\r\n    --item-width: 150px;\r\n    outline: none;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.am-springboard-menu.am-style-simple {\r\n    background-color: rgb(235, 235, 235);\r\n    padding: 10px;\r\n}\r\n\r\n.am-springboard-menu.am-style-simple .am-explore-group {\r\n    background-color: white;\r\n    border-radius: 5px;\r\n    padding: 5px;\r\n\r\n}\r\n\r\n\r\n.am-springboard-menu.am-style-simple .am-explore-group:not(:last-child) {\r\n    margin-bottom: 10px;\r\n}\r\n\r\n.am-springboard-menu.am-style-simple .am-explore-section-break-line {\r\n    display: none;\r\n}\r\n\r\n\r\n.am-springboard-menu.am-style-simple .am-explore-section-break-name {\r\n    background-color: transparent;\r\n    color: black;\r\n    font-weight: bold;\r\n    padding: 5px 15px;\r\n}\r\n\r\n.am-springboard-menu.am-style-simple .am-explore-item-block {\r\n    padding: 5px 16px;\r\n}\r\n\r\n\r\n.am-springboard-menu.am-style-simple .am-explore-section-break {\r\n    margin-bottom: 0;\r\n}\r\n\r\n.am-springboard-menu.as-style-desktop .am-explore-section-break-name {\r\n    background-color: white;\r\n    color: black;\r\n    font-weight: bold;\r\n    font-size: 14px;\r\n}\r\n\r\n.am-springboard-menu.as-style-desktop .am-explore-item-block:hover .am-explore-item-block-icon {\r\n    color: var(--as-transparent-button-text-hover-color);\r\n}\r\n\r\n.am-springboard-menu.as-style-desktop .am-explore-item-block:hover::after {\r\n    content: \"\";\r\n    background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.am-springboard-menu.as-style-desktop .am-explore-item-block:active::after {\r\n    content: \"\";\r\n    background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n.am-springboard-menu > .absol-search-text-input {\r\n    margin: 10px;\r\n    max-width: 400px;\r\n    box-sizing: border-box;\r\n}\r\n.am-springboard-menu::before{\r\n    content: \"\";\r\n    display: block;\r\n    height: 1px;\r\n}\r\n\r\n/*justify-content: space-between;*/\r\n\r\n\r\n.am-springboard-menu.as-searching .am-explore-group:not(.as-search-result),\r\n.am-springboard-menu:not(.as-searching) .am-explore-group.as-search-result {\r\n    display: none;\r\n}\r\n", ""]);



/***/ }),

/***/ 80918:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-modal {\r\n    position: fixed;\r\n    left: 0;\r\n    height: 100%;\r\n    top: 0;\r\n    width: 100%;\r\n    z-index: 1001000;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-modal.as-hidden {\r\n    z-index: -1000;\r\n    visibility: hidden;\r\n    opacity: 0;\r\n}\r\n\r\n.as-modal.as-center {\r\n    text-align: center;\r\n}\r\n\r\n\r\n.as-modal.as-middle::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n    width: 0;\r\n}\r\n\r\n.as-modal > .as-modal-content {\r\n    display: inline-block;\r\n    text-align: initial;\r\n    white-space: initial;\r\n}\r\n\r\n/*for content*/\r\n.as-modal.as-middle > .as-modal-content {\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-loading-cube-modal {\r\n    background-color: rgba(169, 169, 169, 0.3);\r\n}\r\n\r\n\r\n.as-loading-cube-modal {\r\n    z-index: 1000000;\r\n    background-color: rgba(169, 169, 169, 0.3);\r\n}\r\n\r\n.as-loading-cube-modal > .as-modal-content {\r\n    background-color: white;\r\n    border-radius: 4px;\r\n    padding: 10px;\r\n    -webkit-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    -moz-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    display: inline-block;\r\n}\r\n\r\n.as-loading-cube-modal > .as-modal-content > svg {\r\n    width: 5em;\r\n    height: 5em;\r\n}\r\n\r\n\r\n.am-modal {\r\n    z-index: 100005;\r\n    position: fixed;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    text-align: center;\r\n    box-sizing: border-box;\r\n    padding-top: var(--modal-margin-top);\r\n}\r\n\r\n.am-modal>div{\r\n    text-align: initial;\r\n    display: inline-block;\r\n}", ""]);



/***/ }),

/***/ 78257:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ":root {\r\n    --multi-select-menu-max-height: 90px;\r\n}\r\n\r\n.as-multi-select-menu {\r\n    --list-min-width: 3em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    position: relative;\r\n    min-height: var(--select-box-min-height);\r\n    min-width: var(--list-min-width);\r\n    border: solid 1px #d6d6d6;\r\n    border-radius: 3px;\r\n    box-sizing: border-box;\r\n    outline: none;\r\n    background-color: white;\r\n    padding-right: 45px;\r\n    white-space: normal;\r\n    --as-width-limit: 100vw;\r\n    max-width: var(--as-width-limit);\r\n}\r\n\r\n.as-multi-select-menu.am-multi-select-menu {\r\n    min-width: unset;\r\n}\r\n\r\n.as-multi-select-menu .absol-selectbox-item-text span{\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    max-width: calc(var(--as-width-limit) - 85px);\r\n}\r\n\r\n.as-multi-select-menu-item-ctn {\r\n    display: block;\r\n    max-height: var(--multi-select-menu-max-height);\r\n    overflow-y: auto;\r\n}\r\n\r\n.as-multi-select-menu-item-ctn.as-has-more::after {\r\n    content: \"...\";\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    font-weight: bold;\r\n    font-size: 1.5em;\r\n    color: rgb(57, 57, 58);\r\n}\r\n\r\n\r\n.as-multi-select-menu-toggle-btn {\r\n    position: absolute;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    width: 30px;\r\n    pointer-events: none;\r\n    border: none;\r\n    background-color: transparent;\r\n}\r\n\r\n.as-multi-select-menu-toggle-btn svg.dropdown {\r\n    width: 10px;\r\n    height: 10px;\r\n    fill: #929292;\r\n}\r\n\r\n.as-multi-select-menu:hover svg.dropdown {\r\n    fill: black;\r\n}\r\n\r\n.as-multi-select-menu.as-disable-click-to-focus .as-multi-select-menu-toggle-btn {\r\n    display: none;\r\n}\r\n\r\n.as-multi-select-menu .absol-selectbox-item {\r\n    margin: calc((var(--select-box-min-height) - 2px - var(--select-box-item-height)) / 2) 2px;\r\n}\r\n\r\n\r\n.as-multi-select-menu.as-item-focusable .absol-selectbox-item.as-active {\r\n    background-color: var(--select-box-focus-item-color);\r\n}\r\n\r\n.as-multi-select-menu.as-disabled {\r\n    background-color: #ebebe4;\r\n}\r\n\r\n.as-multi-select-menu-toggle-btn {\r\n\r\n}\r\n\r\n.as-multi-select-menu.as-disabled .as-multi-select-menu-item-ctn * {\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n.as-multi-select-menu.as-multi-check-tree-leaf-menu {\r\n    min-width: calc(var(--select-list-estimate-width) + 14px);\r\n}\r\n\r\n\r\n.as-multi-select-menu.as-read-only .absol-selectbox-item-close,\r\n.as-multi-select-menu.as-read-only .as-multi-select-menu-toggle-btn,\r\n.as-multi-select-menu.as-disabled .absol-selectbox-item-close,\r\n.as-multi-select-menu.as-disabled .as-multi-select-menu-toggle-btn {\r\n    display: none;\r\n}\r\n\r\n.as-multi-select-menu.as-read-only .absol-selectbox-item-text {\r\n    padding-right: 10px;\r\n}\r\n\r\n.as-multi-select-menu.as-read-only {\r\n    padding-right: 0;\r\n}\r\n\r\n.as-multi-select-menu.as-border-none {\r\n    border: none;\r\n}\r\n\r\n.as-multi-select-menu.as-border-none .as-multi-select-menu-item-ctn {\r\n    max-height: unset;\r\n    overflow-y: auto;\r\n}\r\n\r\n\r\n.as-multi-select-menu.as-has-max-width {\r\n    --max-width: 1024px;\r\n    max-width: var(--max-width);\r\n    min-width: 100px !important;\r\n}\r\n\r\n.as-multi-select-menu.as-has-max-width  .absol-selectbox-item-text span{\r\n    max-width: calc(var(--max-width) - 85px);\r\n}", ""]);



/***/ }),

/***/ 33448:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-number-input {\r\n    text-align: right;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    position: relative;\r\n    min-width: calc(1em + 2px);\r\n    height: calc(2em + 2px);\r\n    border: solid 1px #d6d6d6;\r\n    font-size: 1rem;\r\n    box-sizing: border-box;\r\n    width: 4em;\r\n    --text-width: 0.5em;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.absol-number-input.as-width-auto {\r\n    width: calc(var(--text-width));\r\n}\r\n\r\n.absol-number-input.as-has-stepper.as-width-auto {\r\n    width: calc(var(--text-width) + 2.2em);\r\n}\r\n\r\n.absol-number-input-text-container {\r\n    right: 0;\r\n    left: 0em;\r\n    top: 0;\r\n    bottom: 0;\r\n    position: absolute;\r\n}\r\n\r\n/*.absol-number-input.as-read-only .absol-number-input-button-up-container,*/\r\n/*.absol-number-input.as-read-only .absol-number-input-button-down-container,*/\r\n.absol-number-input-button-up-container,\r\n.absol-number-input-button-down-container {\r\n    display: none;\r\n}\r\n\r\n.absol-number-input.as-read-only.as-border-none {\r\n    border: none;\r\n}\r\n\r\n.absol-number-input.as-read-only.as-border-none input {\r\n    /*text-align: left;*/\r\n    padding-left: 0;\r\n}\r\n\r\n\r\n.absol-number-input-button-up-container {\r\n    top: 0;\r\n}\r\n\r\n.absol-number-input-button-down-container {\r\n    bottom: 0;\r\n}\r\n\r\n.absol-number-input.as-has-stepper .absol-number-input-button-up-container,\r\n.absol-number-input.as-has-stepper .absol-number-input-button-down-container {\r\n    right: 0;\r\n    position: absolute;\r\n    height: 1em;\r\n    width: 1em;\r\n    max-height: 50%;\r\n    overflow: hidden;\r\n    display: block;\r\n}\r\n\r\n.absol-number-input-button-up-container > button,\r\n.absol-number-input-button-down-container > button {\r\n    width: 100%;\r\n    height: 100%;\r\n    line-height: 1;\r\n    padding: 0;\r\n    border: none;\r\n    box-sizing: border-box;\r\n    outline: none;\r\n    color: rgb(101, 101, 101);\r\n    background-color: transparent;\r\n    font-size: inherit;\r\n}\r\n\r\n.as-printer-content .absol-number-input button {\r\n    display: none;\r\n}\r\n\r\n.absol-number-input-button-up-container > button:active,\r\n.absol-number-input-button-down-container > button:active {\r\n    color: black;\r\n    background-color: rgba(101, 101, 101, 0.3);\r\n}\r\n\r\n.absol-number-input.as-has-stepper .absol-number-input-text-container {\r\n    right: 1.2em;\r\n}\r\n\r\n\r\n.absol-number-input-text-container > input[type=\"text\"] {\r\n    border: none;\r\n    outline: none;\r\n    width: 100%;\r\n    height: 100%;\r\n    text-align: right;\r\n    padding: 0 0.35em;\r\n    box-sizing: border-box;\r\n    font: inherit;\r\n}\r\n\r\n.absol-number-input.as-has-stepper .absol-number-input-text-container > input[type=\"text\"] {\r\n    padding: 0 0.2em;\r\n}\r\n\r\n.absol-number-input.absol-disabled {\r\n    pointer-events: none;\r\n    color: var(--as-disabled-text-color);\r\n}\r\n\r\n.absol-number-input.absol-disabled input {\r\n    background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.absol-number-input.absol-disabled .absol-number-input-button-up-container,\r\n.absol-number-input.absol-disabled .absol-number-input-button-down-container {\r\n    opacity: 0.3;\r\n}\r\n\r\nbody.as-number-input-force-dragging {\r\n    user-select: none;\r\n    pointer-events: none;\r\n}\r\n\r\n.as-number-input-mouse-line {\r\n    border: 1px dashed #bfc1c2;\r\n    position: fixed;\r\n    z-index: 1e8;\r\n}", ""]);



/***/ }),

/***/ 82720:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-omt {\r\n    display: block;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    font-size: 1rem;\r\n}\r\n\r\n.as-omt-node {\r\n\r\n}\r\n\r\n\r\n.as-omt-field {\r\n    --level: 0;\r\n    position: relative;\r\n    padding-bottom: 10px;\r\n}\r\n\r\n\r\n.as-omt-field.as-hover::before {\r\n    border-color: rgb(30, 101, 234);\r\n    border-width: 2px;\r\n}\r\n\r\n.as-omt-field::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 0;\r\n    top: 15px;\r\n    right: 0;\r\n    bottom: 0;\r\n    border: 1px solid rgb(170, 170, 200);\r\n    z-index: 0;\r\n    pointer-events: none;\r\n}\r\n\r\n.as-omt-field-header {\r\n    padding-left: 10px;\r\n    line-height: 2;\r\n}\r\n\r\n\r\n.as-omt-field-body {\r\n    padding-left: 10px;\r\n    padding-right: 10px;\r\n    min-height: 1em;\r\n}\r\n\r\n\r\n.as-omt-field-raw-ctn,\r\n.as-omt-field.as-mode-raw > .as-omt-field-body {\r\n    display: none;\r\n}\r\n\r\n.as-omt-field.as-mode-raw > .as-omt-field-raw-ctn {\r\n    display: block;\r\n}\r\n\r\n\r\n.as-omt-field-command-ctn {\r\n    position: absolute;\r\n    z-index: 20;\r\n    right: 10px;\r\n    top: 20px;\r\n    background-color: white;\r\n    height: 30px;\r\n    display: none;\r\n}\r\n\r\n.bsc-white .as-omt-field-command-ctn button[data-command=\"view_mode\"] {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-omt-field.as-hover > .as-omt-field-command-ctn {\r\n    display: block;\r\n}\r\n\r\n.as-omt-field-command-ctn > button {\r\n    height: 30px;\r\n}\r\n\r\n.as-omt-field-command-ctn > button:not(:first-child) {\r\n    margin-left: 5px;\r\n}\r\n\r\n.as-omt-field-command-ctn > button span {\r\n    font-size: 24px;\r\n}\r\n\r\n.as-omt-field-name {\r\n    font-weight: bold;\r\n    background-color: white;\r\n    display: inline-block;\r\n    z-index: 3;\r\n    position: relative;\r\n    padding-left: 5px;\r\n    padding-right: 5px;\r\n    margin-right: 10px;\r\n}\r\n\r\n\r\n.as-omt-field-body > .as-omt-field:first-child {\r\n    margin-top: 10px;\r\n}\r\n\r\n.as-omt-field code {\r\n    white-space: pre-wrap;\r\n}\r\n\r\n.as-omt-field-raw-ctn {\r\n    padding-left: 10px;\r\n    padding-right: 10px;\r\n}\r\n\r\n.as-omt-field.as-type-struct > .as-omt-field-body {\r\n    padding-left: 20px;\r\n}\r\n\r\nimg.as-omt-field-value {\r\n    max-width: calc(100vw - 5em);\r\n    max-height: 10em;\r\n}\r\n\r\n.as-omt-dialog .as-message-dialog-body {\r\n    max-height: calc(90vh - 5em);\r\n    max-width: calc(90vw - 5em);\r\n    overflow: auto;\r\n}\r\n\r\n.as-omt-option-row {\r\n    display: flex;\r\n    align-items: center;\r\n}\r\n\r\n.as-omt-option-row:not(:first-child) {\r\n    margin-top: 5px;\r\n}\r\n\r\n.as-omt-field-raw-ctn > div > .as-omt-field-name {\r\n    display: none;\r\n}\r\n\r\n.as-omt-option-row > .as-omt-field {\r\n    flex-grow: 1;\r\n}\r\n\r\n\r\n.as-omt-field-color-value-bg {\r\n    height: 2em;\r\n    width: 5em;\r\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAaSURBVBhXYzh8+PD///8hJAOcBSRxyRw+DABJUCox2kjvSgAAAABJRU5ErkJggg==');\r\n    background-size: 1.5em;\r\n    image-rendering: optimizeSpeed;\r\n    image-rendering: -moz-crisp-edges;\r\n    image-rendering: -o-crisp-edges;\r\n    image-rendering: -webkit-optimize-contrast;\r\n    image-rendering: pixelated;\r\n    image-rendering: optimize-contrast;\r\n    -ms-interpolation-mode: nearest-neighbor;\r\n    --omt-color-value: transparent;\r\n}\r\n\r\n.as-omt-field-color-value {\r\n    width: 100%;\r\n    height: 100%;\r\n    background-color: var(--omt-color-value);\r\n}\r\n", ""]);



/***/ }),

/***/ 77557:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-onscreen-widget {\r\n    --client-width: 0px;\r\n    --client-height: 0px;\r\n    --cx: 0.9;\r\n    --cy: 0.9;\r\n    position: fixed;\r\n    z-index: 1000000;\r\n    left: calc((100vw - var(--client-width) - 4px) * var(--cx) + 2px);\r\n    top: calc((100vh - var(--client-height) - 4px) * var(--cy) + 2px);\r\n    touch-action: none;\r\n    user-select: none;\r\n}\r\n\r\n.as-onscreen-widget.as-size-loading {\r\n    visibility: hidden;\r\n}", ""]);



/***/ }),

/***/ 41154:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-onscreen-window {\r\n    z-index: 1002;\r\n    position: fixed;\r\n    left: 10px;\r\n    top: 10px;\r\n    width: 12em;\r\n    height: 5em;\r\n    /*default size*/\r\n    /* min-width: 12em;\r\n    min-height: 1.4em; */\r\n}\r\n\r\n\r\n.absol-onscreen-window > .as-window-box {\r\n    width: 100%;\r\n    height: 100%;\r\n    display: flex;\r\n    flex-direction: column;\r\n}\r\n\r\n.absol-onscreen-window > .as-window-box > .as-window-box-body {\r\n    flex-grow: 1;\r\n}\r\n\r\n.as-window-box {\r\n    position: relative;\r\n\r\n    background: white;\r\n    -webkit-box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n    -moz-box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n    box-shadow: 2px 2px 17px -1px rgba(0, 0, 0, 0.54);\r\n}\r\n\r\n.as-window-box-header {\r\n    display: flex;\r\n    min-height: 1.4em;\r\n    position: relative;\r\n    background-color: rgba(169, 169, 169, 0.15);\r\n    padding: 0.2em;\r\n    box-sizing: border-box;\r\n    align-items: center;\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n}\r\n\r\n.as-window-box-header-icon-ctn:empty {\r\n    display: none;\r\n}\r\n\r\n.as-window-box-header-title {\r\n    flex-grow: 1;\r\n    padding-left: 0.2em;\r\n}\r\n\r\n.as-window-box-header-button-ctn {\r\n}\r\n\r\n.as-window-box-header-icon {\r\n    margin-right: 0.2em;\r\n    font-size: inherit;\r\n}\r\n\r\nspan.as-window-box-header-icon {\r\n    line-height: 1.2em;\r\n}\r\n\r\nsvg.as-window-box-header-icon {\r\n    width: 1.2em;\r\n    height: 1.2em;\r\n}\r\n\r\nspan.as-window-box-header-title {\r\n    line-height: 1.2em;\r\n    font-size: 1em;\r\n    color: rgb(33, 33, 34);\r\n}\r\n\r\n\r\n.as-window-box-header-button-ctn > button {\r\n    height: 100%;\r\n    width: 1em;\r\n    font-size: 1em;\r\n    padding: 0;\r\n    margin: 0 0 0 0.1em;\r\n    border: none;\r\n    color: rgb(169, 169, 169);\r\n    outline: none;\r\n}\r\n\r\n.as-window-box-header-button-ctn > button:hover {\r\n    color: rgb(103, 103, 103);\r\n}\r\n\r\n.as-window-box-header-button-ctn > button:active {\r\n    color: rgb(33, 33, 34);\r\n}\r\n\r\n.as-window-box-header-button-ctn > button:hover > .mdi-close {\r\n    color: rgb(255, 59, 59);\r\n}\r\n\r\n.as-window-box-header-button-ctn > button > span {\r\n    vertical-align: middle;\r\n}\r\n\r\n.absol-onscreen-window-body-container {\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 1.4em;\r\n    bottom: 0;\r\n}\r\n\r\n\r\n.absol-onscreen-window-moving-modal {\r\n    position: fixed;\r\n    left: 1px;\r\n    right: 1px;\r\n    top: 1px;\r\n    bottom: 1px;\r\n    z-index: 1000000006;\r\n}\r\n\r\n.absol-onscreen-window-resizer {\r\n    position: absolute;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom {\r\n    bottom: -3px;\r\n    height: 6px;\r\n    left: 3px;\r\n    right: 3px;\r\n    z-index: 3;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-top {\r\n    top: -3px;\r\n    height: 6px;\r\n    left: 3px;\r\n    right: 3px;\r\n    z-index: 3;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-left {\r\n    left: -3px;\r\n    top: 3px;\r\n    bottom: 3px;\r\n    width: 6px;\r\n    cursor: ew-resize;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-right {\r\n    right: -3px;\r\n    top: 3px;\r\n    bottom: 3px;\r\n    width: 6px;\r\n    cursor: ew-resize;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-right {\r\n    width: 6px;\r\n    height: 6px;\r\n    right: -3px;\r\n    bottom: -3px;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-bottom-left {\r\n    width: 6px;\r\n    height: 6px;\r\n    left: -3px;\r\n    bottom: -3px;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-left {\r\n    width: 6px;\r\n    height: 6px;\r\n    left: -3px;\r\n    top: -3px;\r\n}\r\n\r\n.absol-onscreen-window-resizer.absol-onscreen-window-resize-top-right {\r\n    width: 6px;\r\n    height: 6px;\r\n    right: -3px;\r\n    top: -3px;\r\n}\r\n\r\n\r\n.absol-onscreen-window-resize-top,\r\n.absol-onscreen-window-resize-bottom {\r\n    cursor: ns-resize;\r\n\r\n}\r\n\r\n.absol-onscreen-window-resize-left,\r\n.absol-onscreen-window-resize-right {\r\n    cursor: ew-resize;\r\n\r\n}\r\n\r\n\r\n.absol-onscreen-window-resize-bottom-right {\r\n    cursor: se-resize;\r\n}\r\n\r\n.absol-onscreen-window-resize-bottom-left {\r\n    cursor: sw-resize;\r\n}\r\n\r\n.absol-onscreen-window-resize-top-left {\r\n    cursor: nw-resize;\r\n}\r\n\r\n.absol-onscreen-window-resize-top-right {\r\n    cursor: ne-resize;\r\n}", ""]);



/***/ }),

/***/ 78351:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-page-indicator {\r\n    text-align: center;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-page-indicator::before{\r\n    content: \"\";\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n}\r\n\r\n.as-page-indicator-item {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    text-align: center;\r\n    font-size: inherit;\r\n    width: 1.5em;\r\n    padding: 0;\r\n    border: 0;\r\n    background-color: transparent;\r\n}\r\n\r\n\r\n\r\n.as-page-indicator-item::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    height: 0.5em;\r\n    width: 0.5em;\r\n    transition: width 0.25s, height 0.25s, color 0.25s;\r\n    border-radius: 50%;\r\n    background-color: rgb(196, 196, 196);\r\n    font-size: inherit;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-page-indicator-item.as-active::before{\r\n    width: 0.75em;\r\n    height: 0.75em;\r\n    background-color: var(--variant-color-primary);\r\n\r\n}", ""]);



/***/ }),

/***/ 26993:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-page-selector{\r\n    white-space: normal;\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    font-size: 1rem;\r\n}\r\n\r\n.absol-page-selector > ul{\r\n    margin-bottom: 0px;\r\n    margin-top: 0;\r\n}\r\n\r\n.absol-page-number-buttons{\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    white-space: nowrap;\r\n}\r\n\r\n.absol-page-number-input > label{\r\n    font-weight: 100;\r\n}\r\n\r\n.absol-page-number-buttons > li.page-previous, \r\n.absol-page-number-buttons > li.page-next,\r\n.absol-page-number-buttons > li.page-first,\r\n.absol-page-number-buttons > li.page-last\r\n{\r\n    display: inline-block;\r\n    height:  calc(2em + 2px);;\r\n    padding-left: 10px;\r\n    padding-right: 10px;\r\n    text-align: center;\r\n    transition: all .3s linear;\r\n    background-color: transparent;\r\n    cursor: pointer;\r\n}\r\n\r\n.absol-page-number-buttons > li.absol-page-number{\r\n    font-size: inherit;\r\n    display: inline-block;\r\n    height: calc(2em + 2px);\r\n    width: 3em;\r\n    text-align: center;\r\n    transition: all .3s linear;\r\n    background-color: transparent;\r\n    cursor: pointer;\r\n}\r\n\r\nli.absol-page-number>a{\r\n    font-size: inherit;\r\n}\r\n\r\n\r\n.absol-page-number-buttons > li.absol-page-number.active{\r\n    box-shadow:  0 2px 5px 0 rgba(0,0,0,.16), 0 2px 10px 0 rgba(0,0,0,.12);\r\n    background-color: #4285f4;\r\n    border-radius:2px; \r\n    \r\n}\r\n\r\n.absol-page-number-buttons > li.absol-page-number.active > a{\r\n\tcolor: white;\r\n    \r\n}\r\n\r\n.absol-page-number-buttons > li> a{\r\n    line-height: calc(2em + 2px);\r\n    text-decoration:none;\r\n    outline: none;\r\n}\r\n\r\n.absol-page-number-buttons > li:not(.active):hover{\r\n    background-color: #eee;\r\n\r\n}\r\n\r\n.absol-page-selector .absol-page-number-input{\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.absol-page-selector .absol-page-number-input  input[type=\"text\"]{\r\n    font-size: inherit;\r\n    width: 3em;\r\n    margin-left: 0.3em;\r\n    margin-right: 0.3em;\r\n    text-align: center;\r\n    height: 1.8em;\r\n    border: solid 1px #ccc;\r\n    border-radius: 2px;\r\n\r\n}\r\n\r\n.absol-page-link {\r\n    color: #147af6;\r\n    cursor: pointer;\r\n    text-decoration: underline;\r\n}\r\n\r\n.absol-page-number {\r\n    color: #147af6;\r\n    cursor: pointer;\r\n}\r\n\r\n.absol-page-number a::before{\r\n    content: attr(data-index-text);\r\n}", ""]);



/***/ }),

/***/ 16972:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ":root {\r\n    --as-path-menu-max-text-width: 150px;\r\n}\r\n\r\n.am-mobile-theme {\r\n    --as-path-menu-max-text-width: 100px;\r\n}\r\n\r\n\r\n.as-path-menu-item .mdi-chevron-right::before {\r\n    transition: transform 0.1s;\r\n}\r\n\r\n.as-path-menu .as-ribbon-split-button-text {\r\n    max-width: var(--as-path-menu-max-text-width);\r\n    text-overflow: ellipsis;\r\n    overflow: hidden;\r\n    display: inline-block;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-path-menu-item.as-has-no-item .as-ribbon-split-button-extend {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-path-view {\r\n    white-space: nowrap;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    font-size: 1em;\r\n    height: calc(2em + 2px);\r\n}\r\n\r\n.as-path-view-item {\r\n    display: inline-block;\r\n    white-space: nowrap;\r\n    background: transparent;\r\n    border: 1px solid transparent;\r\n    box-sizing: border-box;\r\n    height: 100%;\r\n    position: relative;\r\n    padding-left: 0.5em;\r\n    padding-right: 0;\r\n    cursor: pointer;\r\n    font-size: inherit;\r\n}\r\n\r\n.as-path-view-item:last-child {\r\n    padding-right: 0.5em;\r\n}\r\n\r\n.as-path-view-item:hover {\r\n    border-color: #dddddd;\r\n}\r\n\r\n.as-path-view-item::before{\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 0;\r\n    right: 1em;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.as-path-view-item:last-child::before{\r\n    right: 0;\r\n}\r\n\r\n.as-path-view-item:hover::before {\r\n    background-color: rgba(169, 169, 169, 0.15);\r\n}\r\n\r\n.as-path-view-item:active::before {\r\n    background-color: rgba(169, 169, 169, 0.3);\r\n}\r\n\r\n.as-path-view-item-icon {\r\n    margin-right: 0.5em;\r\n}\r\n\r\nspan.as-path-view-item-icon,\r\ni.as-path-view-item-icon {\r\n    font-size: 1.5em;\r\n    line-height: 1;\r\n    text-align: center;\r\n}\r\n\r\nsvg.as-path-view-item-icon,\r\nimg.as-path-view-item-icon {\r\n    width: 1.5em;\r\n    height: 1.5em;\r\n}\r\n\r\n\r\n\r\n.as-path-view-item-text {\r\n    padding-right: 0.2em;\r\n}\r\n\r\n\r\n.as-path-view-item-arrow {\r\n    width: 1em;\r\n    text-align: center;\r\n}\r\n\r\n.as-path-view-item-icon,\r\n.as-path-view-item-text,\r\n.as-path-view-item-arrow {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-path-view-item:last-child .as-path-view-item-arrow {\r\n    display: none;\r\n}", ""]);



/***/ }),

/***/ 90646:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-autocomplete-input-item.as-place-search-auto-complete-item:not(:last-child) {\r\n    border-bottom: 1px solid #dddddd;\r\n\r\n}\r\n\r\n.absol-autocomplete-input-item.as-place-search-auto-complete-item {\r\n    padding: 3px 5px;\r\n    height: auto;\r\n}\r\n", ""]);



/***/ }),

/***/ 36155:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-preinput {\r\n    margin: 0;\r\n    padding: 0;\r\n    white-space: pre-wrap;\r\n    -moz-user-modify: read-write;\r\n    -webkit-user-modify: read-write;\r\n    word-break: normal;\r\n}\r\npre.as-preinput{\r\n    word-break: normal;\r\n}\r\n\r\n\r\n.as-preinput img {\r\n    display: none;\r\n}", ""]);



/***/ }),

/***/ 31610:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ":root {\r\n    --as-process-l-bar-active-color: rgb(255, 160, 0);\r\n    --as-process-l-bar-item-width: 60px;\r\n}\r\n\r\n.as-process-l-bar {\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    font-size: 14px;\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    position: relative;\r\n    --as-process-l-bar-item-min-width: 0;\r\n}\r\n\r\n\r\n\r\n.as-process-l-bar-step-ctn {\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-process-l-bar-col:not(:last-child) {\r\n    margin-right: 10px;\r\n}\r\n\r\n.as-process-l-bar-col {\r\n    vertical-align: top;\r\n    display: inline-block;\r\n}\r\n\r\n.as-process-l-bar-step {\r\n    width: var(--as-process-l-bar-item-width);\r\n    min-width: var(--as-process-l-bar-item-min-width);\r\n    height: 15px;\r\n    background-color: #ebebeb;\r\n    border: solid 1px #bfbfbf;\r\n    transition: background-color 0.2s;\r\n    position: relative;\r\n}\r\n\r\n\r\n\r\n.as-process-l-bar-step.as-active {\r\n    background-color: var(--as-process-l-bar-active-color);\r\n    border-color: rgb(20, 100, 246);\r\n}\r\n\r\n.as-process-l-bar-step.as-active::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: calc(100% + 3px);\r\n    border-top: 2px solid rgb(20, 100, 246);\r\n}\r\n\r\n\r\n.as-process-l-bar-step::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.as-process-l-bar.as-disabled .as-process-l-bar-step::before{\r\n    display: none;\r\n}\r\n\r\n.as-process-l-bar-step:hover::before {\r\n    background-color: rgba(169, 169, 172, 0.3);\r\n}\r\n\r\n.as-process-l-bar-step.as-active,\r\n.as-process-l-bar-step:hover {\r\n    background-color: var(--as-process-l-bar-active-color);\r\n}\r\n\r\n\r\n.as-process-l-bar-col .as-process-l-bar-step:not(:last-child) {\r\n    margin-bottom: 10px;\r\n}\r\n\r\n.as-process-l-bar-step-name {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 24px;\r\n    font-weight: bold;\r\n}\r\n\r\n\r\n.as-process-l-bar.as-col-layout .as-process-l-bar-step-name {\r\n    position: relative;\r\n    left: initial;\r\n    top: unset;\r\n}\r\n\r\n\r\n.as-process-l-bar.as-single-line .as-process-l-bar-step-ctn {\r\n    white-space: normal;\r\n}\r\n\r\n\r\n.as-process-l-bar.as-single-line  .as-process-l-bar-col {\r\n    margin-bottom: 10px;\r\n}\r\n\r\n.as-process-l-bar.as-single-line .as-process-l-bar-step-name {\r\n    position: relative;\r\n    display: block;\r\n    left: 0 !important;\r\n    top: 0!important;\r\n}", ""]);



/***/ }),

/***/ 63899:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-progress-bar {\r\n    height: 1em;\r\n    background-color: #e9ecef;\r\n    border-radius: .25em;\r\n    box-sizing: border-box;\r\n    overflow: hidden;\r\n    --value-color: #007bff;\r\n}\r\n\r\n\r\n.as-progress-bar-value {\r\n    height: 100%;\r\n    width: 0;\r\n    color: #fff;\r\n    text-align: center;\r\n    white-space: nowrap;\r\n    background-color: var(--value-color);\r\n    transition: width .6s ease;\r\n}\r\n\r\n.as-progress-bar.as-variant-success,\r\n.as-progress-circle.as-variant-success {\r\n    --value-color: #28a745;\r\n}\r\n\r\n.as-progress-bar.as-variant-info,\r\n.as-progress-circle.as-variant-info {\r\n    --value-color: #17a2b8;\r\n}\r\n\r\n.as-progress-bar.as-variant-warning,\r\n.as-progress-circle.as-variant-warning {\r\n    --value-color: #ffc107;\r\n}\r\n\r\n.as-progress-bar.as-variant-danger,\r\n.as-progress-circle.as-variant-danger {\r\n    --value-color: #dc3545;\r\n}\r\n\r\n\r\n.as-progress-bar.as-striped .as-progress-bar-value,\r\n.as-progress-bar.as-animated .as-progress-bar-value {\r\n    background-image: linear-gradient(45deg, hsla(0, 0%, 100%, .15) 25%, transparent 0, transparent 50%, hsla(0, 0%, 100%, .15) 0, hsla(0, 0%, 100%, .15) 75%, transparent 0, transparent);\r\n    background-size: 1.33333em 1.33333em;\r\n}\r\n\r\n@keyframes as-progress-bar-stripes {\r\n    0% {\r\n        background-position: 1.33333em 0\r\n    }\r\n\r\n    to {\r\n        background-position: 0 0\r\n    }\r\n}\r\n\r\n.as-progress-bar.as-animated .as-progress-bar-value {\r\n    animation: as-progress-bar-stripes 1s linear infinite;\r\n}\r\n\r\n\r\n.as-progress-circle {\r\n    display: inline-block;\r\n    width: 7em;\r\n    height: 7em;\r\n    background-color: #fcfcf6;\r\n    border-radius: 50%;\r\n    position: relative;\r\n    --value-color: #007bff;\r\n\r\n    box-shadow: 3px 2px 12px -1px rgba(0, 0, 0, 0.1) inset;\r\n    overflow: hidden;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.as-progress-circle-inner {\r\n    background-color: white;\r\n    position: absolute;\r\n    border-radius: 50%;\r\n    left: 0.8em;\r\n    right: 0.8em;\r\n    top: 0.8em;\r\n    bottom: 0.8em;\r\n    font-size: 1rem;\r\n    box-shadow: 3px 2px 12px -1px rgba(0, 0, 0, 0.1);\r\n    white-space: nowrap;\r\n    text-align: center;\r\n}\r\n\r\n\r\n.as-progress-circle-inner::before {\r\n    content: \"\";\r\n    height: 100%;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-progress-circle-text {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    white-space: pre-wrap;\r\n    max-width: calc(100% - 0.3em);\r\n    font-size: 1em;\r\n    color: #454c5b;\r\n}\r\n\r\n.as-progress-circle-start,\r\n.as-progress-circle-end {\r\n    border-radius: 50%;\r\n    width: 0.8em;\r\n    height: 0.8em;\r\n    background-color: var(--value-color);\r\n    /*background-color: red;*/\r\n    top: 0;\r\n    left: calc(50% - 0.4em);\r\n    position: absolute;\r\n    /*box-shadow: 3px 2px 12px -1px rgba(0, 0, 0, 0.1);*/\r\n}\r\n\r\n.as-progress-circle-pie {\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    border-radius: 50%;\r\n    background-color: var(--value-color);\r\n}\r\n\r\n\r\n.as-progress-circle-end {\r\n\r\n}\r\n\r\n\r\n", ""]);



/***/ }),

/***/ 30780:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-quick-list-button {\r\n    box-sizing: border-box;\r\n    height: calc(2em + 2px);\r\n    font-size: 14px;\r\n}\r\n\r\n.as-quick-list-button .as-flexicon-button-text-container {\r\n    border-right: solid 1px #bfbfbf;\r\n}\r\n\r\n\r\n.as-quick-list-button-follower .absol-selectlist {\r\n    max-height: calc(100vh - 20px);\r\n    overflow-y: auto;\r\n    border: solid 1px rgb(100, 100, 255);\r\n    box-sizing: border-box;\r\n    background-color: white;\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    -webkit-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    -moz-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n}", ""]);



/***/ }),

/***/ 42453:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-quick-path {\r\n    position: relative;\r\n    box-sizing: border-box;\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    -ms-user-select: none;\r\n    -moz-user-select: none;\r\n    min-height: 1.5em;\r\n}\r\n\r\n.absol-quick-path button {\r\n    outline: none;\r\n    color: rgb(69, 69, 69);\r\n    height: 1.5em;\r\n}\r\n\r\n.absol-quick-path button:hover {\r\n    color: black;\r\n}\r\n\r\n.absol-quick-path .toggler-ico path {\r\n    fill: rgb(104, 104, 104);\r\n}\r\n\r\n.dark .absol-quick-path button {\r\n    color: rgb(200, 200, 200);\r\n}\r\n\r\n\r\n.dark .absol-quick-path button:hover {\r\n    color: white;\r\n}\r\n\r\n.dark .absol-quick-path .toggler-ico path {\r\n    fill: rgb(169, 169, 169);\r\n}\r\n\r\n\r\n\r\n.absol-quick-path-btn:focus span {\r\n    text-decoration: underline;\r\n}\r\n\r\n/* \r\n.absol-quick-path-btn .toggler-ico path {\r\n    fill: rgb(104, 104, 104);\r\n} */\r\n", ""]);



/***/ }),

/***/ 31142:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-radio {\r\n    display: inline;\r\n    cursor: pointer;\r\n    white-space: nowrap;\r\n}\r\n\r\n.absol-radio input {\r\n    display: none;\r\n}\r\n\r\n.absol-radio > span {\r\n    white-space: pre;\r\n    cursor: inherit;\r\n    vertical-align: middle;\r\n    margin: 0;\r\n    font-size: inherit;\r\n}\r\n\r\n.absol-radio > span:empty {\r\n    display: none;\r\n}\r\n\r\n.absol-radio > svg {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    width: calc(1em + 4px);\r\n    height: calc(1em + 4px);\r\n}\r\n\r\n.absol-radio > svg .bound {\r\n    stroke: #929292;\r\n    fill: white;\r\n}\r\n\r\n.absol-radio:hover > svg .bound {\r\n    fill: #d6d6d6;\r\n    stroke: black;\r\n}\r\n\r\n/* \r\n.absol-radio>svg .bound {\r\n    fill: none;\r\n} */\r\n\r\n.absol-radio-icon .border {\r\n}\r\n\r\n.absol-radio .dot {\r\n    transition: opacity 0.07s;\r\n    opacity: 0;\r\n    fill: #606060;\r\n}\r\n\r\n.absol-radio:hover .dot {\r\n    transition: opacity 0.07s;\r\n    opacity: 0;\r\n    fill: black;\r\n}\r\n\r\n.absol-radio.checked .dot {\r\n    opacity: 1;\r\n    transition: opacity 0.1s;\r\n}\r\n\r\n.absol-radio:not(.right) > span.absol-radio-left-label {\r\n    display: none;\r\n}\r\n\r\n.absol-radio.right > span.absol-radio-right-label {\r\n    display: none;\r\n}\r\n\r\nspan.absol-radio-left-label {\r\n    padding-right: 0.3em;\r\n}\r\n\r\nspan.absol-radio-right-label {\r\n    padding-left: 0.3em;\r\n}\r\n\r\n\r\n\r\n\r\n.absol-radio.disabled {\r\n    cursor: default;\r\n}\r\n\r\n.absol-radio.disabled{\r\n    color: #777;\r\n}\r\n\r\n.absol-radio.disabled:hover .dot,\r\n.absol-radio.disabled .dot {\r\n    fill: #929292;\r\n}\r\n\r\n.absol-radio.disabled .bound,\r\n.absol-radio.disabled:hover .bound {\r\n    stroke: #929292;\r\n    fill: #ebebe4;\r\n}\r\n\r\n\r\n.absol-radio .standar-alone {\r\n    display: inline-block;\r\n}\r\n\r\ninput:checked ~ .absol-radio-icon .dot {\r\n    opacity: 1;\r\n}", ""]);



/***/ }),

/***/ 93586:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-radio-button {\r\n    display: inline;\r\n    cursor: pointer;\r\n    white-space: nowrap;\r\n}\r\n\r\n.absol-radio-button input {\r\n    display: none;\r\n}\r\n\r\n\r\n.absol-radio-button > svg {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    width: calc(1em + 4px);\r\n    height: calc(1em + 4px);\r\n}\r\n\r\n.absol-radio-button > svg .bound {\r\n    stroke: #929292;\r\n    fill: white;\r\n}\r\n\r\n.absol-radio-button:hover > svg .bound {\r\n    fill: #d6d6d6;\r\n    stroke: black;\r\n}\r\n\r\n.absol-radio-icon .border {\r\n}\r\n\r\n.absol-radio-button .dot {\r\n    transition: opacity 0.07s;\r\n    opacity: 0;\r\n    fill: #606060;\r\n}\r\n\r\n.absol-radio-button:hover .dot {\r\n    transition: opacity 0.07s;\r\n    opacity: 0;\r\n    fill: black;\r\n}\r\n\r\n.absol-radio-button.checked .dot {\r\n    opacity: 1;\r\n    transition: opacity 0.1s;\r\n}\r\n\r\n\r\n\r\n.absol-radio-button > span:last-child {\r\n    display: none;\r\n}\r\n\r\n\r\n.absol-radio-button.disabled {\r\n    cursor: default;\r\n}\r\n\r\n.absol-radio-button.disabled:hover .dot,\r\n.absol-radio-button.disabled .dot {\r\n    fill: #929292;\r\n}\r\n\r\n.absol-radio-button.disabled .bound,\r\n.absol-radio-button.disabled:hover .bound {\r\n    stroke: #929292;\r\n    fill: #ebebe4;\r\n}\r\n\r\n\r\n.absol-radio .standar-alone {\r\n    display: inline-block;\r\n}\r\n\r\n.absol-radio > span:not(:last-child) {\r\n    padding-right: 0.3em;\r\n}\r\n\r\n.absol-radio span:last-child {\r\n    padding-left: 0.3em;\r\n}\r\n\r\ninput:checked ~ .absol-radio-icon .dot {\r\n    opacity: 1;\r\n}", ""]);



/***/ }),

/***/ 78239:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "label.as-radio-input {\r\n    display: inline-block;\r\n    position: relative;\r\n    width: calc(1em + 2px);\r\n    height: calc(1em + 2px);\r\n    cursor: pointer;\r\n    font-size: inherit;\r\n    box-sizing: border-box;\r\n    overflow: hidden;\r\n    vertical-align: middle;\r\n    border-radius: 50%;\r\n    border: 1px solid var(--candy-border-color);\r\n    text-align: center;\r\n    background-color: white;\r\n    text-align: center;\r\n    white-space: nowrap;\r\n}\r\n\r\nlabel.as-radio-input:hover {\r\n    background-color: var(--candy-hover-background-color);\r\n}\r\n\r\nlabel.as-radio-input::after{\r\n    content: \"\";\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n}\r\n\r\n.as-radio-input .as-radio-input-check-mark {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    width: 0.5em;\r\n    height: 0.5em;\r\n    background-color: #606060;\r\n    font-size: inherit;\r\n    border-radius: 50%;\r\n}\r\n\r\n.as-radio-input input.as-radio-input-value {\r\n    font-size: inherit;\r\n    position: absolute;\r\n    right: 100%;\r\n    top: 0;\r\n    opacity: 0.0;\r\n}\r\n\r\ninput.as-radio-input-value:not(:checked) ~ .as-radio-input-check-mark {\r\n    display: none;\r\n}\r\n\r\n\r\nlabel.as-radio-input.as-disabled,\r\nlabel.as-radio-input.as-disabled:hover {\r\n    border-color: #929292;\r\n    background-color: #ebebe4;\r\n}", ""]);



/***/ }),

/***/ 61209:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-resize-box {\r\n    position: absolute;\r\n    /*or fixed*/\r\n    z-index: 1;\r\n    box-sizing: border-box;\r\n    opacity: 0.5;\r\n    pointer-events: none;\r\n}\r\n\r\n.as-resize-box-body {\r\n    margin: -1px;\r\n    width: calc(100% + 2px);\r\n    height: calc(100% + 2px);\r\n    position: relative;\r\n    box-sizing: border-box;\r\n    border: solid 2px rgb(32, 150, 218);\r\n}\r\n\r\n.as-resize-box.as-can-move .as-resize-box-body {\r\n    cursor: move;\r\n    pointer-events: all;\r\n}\r\n\r\n.as-resize-box.as-can-click .as-resize-box-body {\r\n    pointer-events: all;\r\n}\r\n\r\n.as-resize-box.as-can-move .as-resize-box-dot,\r\n.as-resize-box.as-can-resize .as-resize-box-dot.right,\r\n.as-resize-box.as-can-resize .as-resize-box-dot.bottom,\r\n.as-resize-box.as-can-resize .as-resize-box-dot.right-bottom {\r\n    display: unset;\r\n\r\n}\r\n\r\n.as-resize-box-dot {\r\n    position: absolute;\r\n    width: 0.6em;\r\n    height: 0.6em;\r\n    background: rgb(32, 150, 218);\r\n    display: none;\r\n    pointer-events: all;\r\n}\r\n\r\n.as-resize-box-dot.left-top {\r\n    top: calc(-0.3em - 1px);\r\n    left: calc(-0.3em - 1px);\r\n    cursor: nw-resize;\r\n}\r\n\r\n.as-resize-box-dot.left-bottom {\r\n    bottom: calc(-0.3em - 1px);\r\n    left: calc(-0.3em - 1px);\r\n    cursor: sw-resize;\r\n}\r\n\r\n.as-resize-box-dot.left {\r\n    top: calc(50% - 0.3em);\r\n    left: calc(-0.3em - 1px);\r\n    cursor: w-resize;\r\n}\r\n\r\n.as-resize-box-dot.top {\r\n    top: calc(-0.3em - 1px);\r\n    left: calc(50% - 0.3em);\r\n    cursor: n-resize;\r\n}\r\n\r\n.as-resize-box-dot.bottom {\r\n    bottom: calc(-0.3em - 1px);\r\n    left: calc(50% - 0.3em);\r\n    cursor: s-resize;\r\n}\r\n\r\n.as-resize-box-dot.right-top {\r\n    top: calc(-0.3em - 1px);\r\n    right: calc(-0.3em - 1px);\r\n    cursor: ne-resize;\r\n}\r\n\r\n.as-resize-box-dot.right-bottom {\r\n    bottom: calc(-0.3em - 1px);\r\n    right: calc(-0.3em - 1px);\r\n    cursor: se-resize;\r\n}\r\n\r\n\r\n.as-resize-box-dot.right {\r\n    top: calc(50% - 0.3em);\r\n    right: calc(-0.3em - 1px);\r\n    cursor: e-resize;\r\n}\r\n\r\n.as-resize-box-overiding .as-resize-box-dot,\r\n.as-resize-box-overiding .as-resize-box-body {\r\n    cursor: unset;\r\n}\r\n\r\n.as-resize-box-overiding.body {\r\n    cursor: move !important;\r\n}\r\n\r\n\r\n.as-resize-box-overiding.left-top {\r\n    cursor: nw-resize !important;\r\n}\r\n\r\n.as-resize-box-overiding.left-bottom {\r\n    cursor: sw-resize !important;\r\n}\r\n\r\n.as-resize-box-overiding.left {\r\n    cursor: w-resize !important;\r\n}\r\n\r\n.as-resize-box-overiding.top {\r\n    cursor: n-resize !important;\r\n}\r\n\r\n.as-resize-box-overiding.bottom {\r\n    cursor: s-resize !important;\r\n}\r\n\r\n.as-resize-box-overiding.right-top {\r\n    cursor: ne-resize !important;\r\n}\r\n\r\n.as-resize-box-overiding.right-bottom {\r\n    cursor: se-resize !important;\r\n}\r\n\r\n\r\n.as-resize-box-overiding.right {\r\n    cursor: e-resize !important;\r\n}", ""]);



/***/ }),

/***/ 4559:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-ribbon-button {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: calc(2em + 2);\r\n    padding-left: 0.5em;\r\n    padding-right: 0.5em;\r\n\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    font-size: 1rem;\r\n    box-sizing: border-box;\r\n    border-radius: 0;\r\n    outline: none;\r\n    border-style: solid;\r\n    border-color: transparent;\r\n    border-width: 1px 1px 1px 1px;\r\n    background-color: transparent;\r\n}\r\n\r\n.as-ribbon-button div,\r\n.as-ribbon-button span {\r\n    font-weight: inherit;\r\n    font-size: inherit;\r\n}\r\n\r\n.as-ribbon-button:hover {\r\n    background-color: rgba(169, 168, 169, 0.15);\r\n}\r\n\r\n.as-ribbon-button:active {\r\n    background-color: rgba(169, 168, 169, 0.3);\r\n}\r\n\r\n\r\n.as-ribbon-split-button:active:hover .as-ribbon-split-button-content > button,\r\n.as-ribbon-split-button:active .as-ribbon-split-button-content > button {\r\n    border-color: rgba(169, 168, 169, 0.3);\r\n}\r\n\r\n.as-ribbon-split-button:hover .as-ribbon-split-button-content > button {\r\n    border-color: rgba(169, 168, 169, 0.15);\r\n}\r\n\r\n.as-ribbon-button-icon {\r\n    font-size: 1.2em;\r\n    margin-right: 0.5em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\nimg.as-ribbon-button-icon,\r\nsvg.as-ribbon-button-icon {\r\n    width: 1.2em;\r\n    height: 1.2em;\r\n}\r\n\r\n.as-ribbon-button-text {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    font-size: inherit;\r\n}\r\n\r\n.as-ribbon-button-text::before {\r\n    content: attr(data-text);\r\n}\r\n\r\n.as-ribbon-button.as-no-dropdown .as-ribbon-dropdown-icon {\r\n    display: none;\r\n}\r\n\r\n.as-ribbon-button.as-big {\r\n    width: 5em;\r\n    height: auto;\r\n    white-space: nowrap;\r\n    padding-left: 0;\r\n    padding-right: 0;\r\n}\r\n\r\n.as-ribbon-button.as-big span.as-ribbon-button-icon {\r\n    font-size: 2em;\r\n    display: block;\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n}\r\n\r\n.as-ribbon-button.as-big .as-ribbon-button-text {\r\n    white-space: normal;\r\n    max-width: calc(100% - 1em);\r\n}\r\n\r\n.as-ribbon-button.as-big svg.as-ribbon-button-icon,\r\n.as-ribbon-button.as-big img.as-ribbon-button-icon {\r\n    height: 2em;\r\n    width: 2em;\r\n    display: block;\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n}\r\n\r\n.as-ribbon-button.as-appearance-button {\r\n    height: calc(2rem + 2px);\r\n    box-sizing: border-box;\r\n    border: solid 1px #bfbfbf;\r\n    background-color: #ebebeb;\r\n    border-radius: 0.2em;\r\n    outline: none;\r\n    font-size: 1rem;\r\n}\r\n\r\n\r\n.as-ribbon-button.as-appearance-button:hover {\r\n    background-color: #D3D3D3;\r\n}\r\n\r\n.as-ribbon-button.as-appearance-button:active,\r\n.as-ribbon-button.as-appearance-button.as-quick-menu-attached {\r\n    -webkit-box-shadow: inset 0 0.2em 0.25em rgba(0, 0, 0, 0.125);\r\n    box-shadow: inset 0 0.2em 0.25em rgba(0, 0, 0, 0.125);\r\n}\r\n\r\n\r\n.as-select-ribbon-menu {\r\n    color: #007bff;\r\n}\r\n\r\n.as-ribbon-selected {\r\n    background-color: #dfdfdf;\r\n}", ""]);



/***/ }),

/***/ 68551:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-ribbon-split-button {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: calc(2em + 2px);\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    box-sizing: border-box;\r\n    font-size: 1rem;\r\n}\r\n\r\n.as-ribbon-split-button div,\r\n.as-ribbon-split-button span,\r\n.as-ribbon-split-button button {\r\n    font-weight: inherit;\r\n    font-size: inherit;\r\n}\r\n\r\n\r\n.as-ribbon-split-button-content {\r\n    height: 100%;\r\n}\r\n\r\n.as-ribbon-split-button-content > button {\r\n    font-family: inherit;\r\n    border-radius: 0;\r\n    background-color: transparent;\r\n    height: 100%;\r\n    margin-right: 0;\r\n    outline: none;\r\n    box-sizing: border-box;\r\n    border-style: solid;\r\n    border-color: transparent;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.as-ribbon-split-button-content > button:hover {\r\n    background-color: rgba(169, 168, 169, 0.15);\r\n}\r\n\r\n.as-ribbon-split-button-content > button:active {\r\n    background-color: rgba(169, 168, 169, 0.3);\r\n}\r\n\r\n\r\n.as-ribbon-split-button-primary {\r\n    font-size: inherit;\r\n    padding-left: 0.5em;\r\n    padding-right: 0.2em;\r\n    border-width: 1px 0px 1px 1px;\r\n    color: inherit;\r\n}\r\n\r\n.as-ribbon-split-button-extend {\r\n    color: rgb(37, 36, 35);\r\n    width: calc(1em + 2px);\r\n    padding: 0;\r\n    text-align: center;\r\n    font-size: 20px;\r\n    border-width: 1px 1px 1px 0px;\r\n}\r\n\r\n.as-ribbon-split-button-extend span:before {\r\n    margin-left: -3px;\r\n}\r\n\r\n\r\n.as-ribbon-split-button:active:hover .as-ribbon-split-button-content > button,\r\n.as-ribbon-split-button:active .as-ribbon-split-button-content > button {\r\n    border-color: rgba(169, 168, 169, 0.3);\r\n}\r\n\r\n.as-ribbon-split-button:hover .as-ribbon-split-button-content > button {\r\n    border-color: rgba(169, 168, 169, 0.15);\r\n}\r\n\r\n.as-ribbon-split-button-icon {\r\n    margin-right: 0.5em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\nspan.as-ribbon-split-button-icon {\r\n    font-size: 1.2em;\r\n}\r\n\r\nimg.as-ribbon-split-button-icon,\r\nsvg.as-ribbon-split-button-icon {\r\n    width: 1.2em;\r\n    height: 1.2em;\r\n}\r\n\r\n.as-ribbon-split-button-text {\r\n    vertical-align: middle;\r\n    font-size: inherit;\r\n}\r\n\r\n.as-ribbon-split-button-text::before {\r\n    content: attr(data-text);\r\n}\r\n\r\n.as-ribbon-split-button-extend .as-ribbon-split-button-text {\r\n    display: none;\r\n}\r\n\r\n.as-ribbon-split-button.as-no-dropdown .as-ribbon-dropdown-icon{\r\n    display: none;\r\n}\r\n\r\n.as-ribbon-split-button.as-no-dropdown .as-ribbon-split-button-primary {\r\n    padding-right: 5px;\r\n    border-width: 1px 1px 1px 1px;\r\n}\r\n\r\n.as-ribbon-split-button.as-big {\r\n    width: 5em;\r\n    height: auto;\r\n}\r\n\r\n.as-ribbon-split-button.as-big .as-ribbon-split-button-content {\r\n    height: auto;\r\n}\r\n\r\n.as-ribbon-split-button.as-big span.as-ribbon-split-button-icon {\r\n    font-size: 2em;\r\n    display: block;\r\n    margin: 0;\r\n}\r\n\r\n.as-ribbon-split-button.as-big .as-ribbon-split-button-extend .as-ribbon-split-button-text {\r\n    display: inline-block;\r\n    white-space: normal;\r\n    max-width: calc(100% - 1em);\r\n}\r\n\r\n.as-ribbon-split-button.as-big .as-ribbon-split-button-primary .as-ribbon-split-button-text {\r\n    display: none;\r\n}\r\n\r\n.as-ribbon-split-button.as-big .as-ribbon-split-button-extend {\r\n    white-space: nowrap;\r\n    width: 100%;\r\n    height: auto;\r\n    border-width: 0 1px 1px 1px;\r\n\r\n}\r\n\r\n.as-ribbon-split-button.as-big .as-ribbon-split-button-primary {\r\n    width: 100%;\r\n    height: 2.5em;\r\n    box-sizing: border-box;\r\n    border-width: 1px 1px 0 1px;\r\n}\r\n\r\n.as-ribbon-split-button.as-big img.as-ribbon-split-button-icon,\r\n.as-ribbon-split-button.as-big svg.as-ribbon-split-button-icon {\r\n    width: 2em;\r\n    height: 2em;\r\n}", ""]);



/***/ }),

/***/ 13478:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-rotated-text {\r\n\r\n}\r\n\r\n.as-rotated-text::after {\r\n    content: \"o\";\r\n    color: transparent;\r\n    display: inline;\r\n}\r\n\r\n.as-rotated-text-content {\r\n    transform: rotate(0deg);\r\n    transform-origin: 0.3em 50%;\r\n    display: block;\r\n    zoom: 1.001;\r\n}\r\n\r\n\r\n.as-rotated-text-anchor{\r\n    position: fixed;\r\n    z-index: 1000;\r\n}\r\n\r\n.as-rotated-text,.as-rotated-text-anchor,  .as-rotated-text-content{\r\n    font: inherit;\r\n}", ""]);



/***/ }),

/***/ 59355:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-vscroller {\r\n    position: relative;\r\n    overflow-x: hidden;\r\n}\r\n\r\n\r\n.absol-vscroller.disabled > .absol-vscroller-viewport {\r\n    overflow-y: visible;\r\n    margin-right: 0px;\r\n    min-width: 100%;\r\n}\r\n\r\n.absol-vscroller.disabled {\r\n    overflow: visible;\r\n    overflow-x: visible;\r\n\r\n}\r\n\r\n\r\n.absol-vscroller-viewport {\r\n    overflow-y: scroll;\r\n    box-sizing: content-box;\r\n\r\n}\r\n\r\n.absol-vscroller > .absol-vscroller-viewport {\r\n    max-height: 100%;\r\n}\r\n\r\n.absol-vscroller.limited-height > .absol-vscroller-viewport {\r\n    max-height: inherit;\r\n}\r\n\r\n\r\n/************  hscroller  ***********/\r\n.absol-hscroller {\r\n    position: relative;\r\n    overflow-y: hidden;\r\n}\r\n\r\n.absol-hscroller.disabled {\r\n    overflow: visible;\r\n    overflow-y: visible;\r\n}\r\n\r\n.absol-hscroller-viewport {\r\n    overflow-x: scroll;\r\n    box-sizing: content-box;\r\n    min-height: calc(100% + 17px);\r\n}\r\n\r\n.absol-hscroller.disabled > .absol-hscroller-viewport {\r\n    overflow-x: visible;\r\n    margin-bottom: 0px;\r\n}\r\n\r\n\r\n.absol-hscroller > .absol-hscroller-viewport {\r\n    max-width: 100%;\r\n}\r\n\r\n\r\n/********** scroll bar *********************/\r\n.absol-scrollbar-force-modal {\r\n    position: fixed;\r\n    top: 5px;\r\n    left: 5px;\r\n    right: 5px;\r\n    bottom: 5px;\r\n    z-index: 1000000;\r\n}\r\n\r\n.absol-scrollbar-container {\r\n    position: absolute;\r\n    right: 0;\r\n    bottom: 0;\r\n    z-index: 10;\r\n}\r\n\r\n.absol-scrollbar-container.vertical {\r\n    top: 0;\r\n    width: 7px;\r\n}\r\n\r\n.absol-scrollbar-container.horizontal {\r\n    height: 7px;\r\n    left: 0;\r\n}\r\n\r\n.absol-scrollbar-container > .absol-scrollbar {\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n\r\n.absol-scrollbar-container.vertical > .absol-scrollbar > .absol-scrollbar-button {\r\n    left: 1px;\r\n    right: 1px;\r\n    top: 0;\r\n}\r\n\r\n.absol-scrollbar-container.horizontal > .absol-scrollbar > .absol-scrollbar-button {\r\n    top: 1px;\r\n    bottom: 1px;\r\n    left: 0;\r\n}\r\n\r\n.absol-scrollbar {\r\n    position: relative;\r\n    background-color: rgba(180, 180, 182, 0.1);\r\n    overflow: hidden;\r\n}\r\n\r\n.absol-scrollbar-button {\r\n    position: absolute;\r\n    background-color: rgba(133, 133, 133, 0.5);\r\n    border-radius: 2px;\r\n}\r\n\r\n.absol-scrollbar-button:hover, .absol-scrollbar-button:active {\r\n    background-color: rgba(133, 133, 133, 1);;\r\n}\r\n\r\n\r\n.absol-scrollbar.absol-hidden {\r\n    visibility: hidden;\r\n}\r\n\r\n.absol-vscrollbar .absol-scrollbar-button {\r\n    width: 100%;\r\n}\r\n\r\n\r\n.absol-hscrollbar .absol-scrollbar-button {\r\n    height: 100%;\r\n}\r\n\r\n.absol-table-scroller-vscrollbar-container .absol-vscrollbar:not(.as-overflow) {\r\n    visibility: hidden;\r\n    pointer-events: none;\r\n}\r\n\r\n.absol-table-scroller-left-vscroller-viewport:empty {\r\n    display: none;\r\n}", ""]);



/***/ }),

/***/ 23542:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-search-text-input {\r\n    position: relative;\r\n    height: 2em;\r\n    border-radius: 0.3em;\r\n    border: solid 1px #a9a9a9;\r\n    font-size: 1rem;\r\n    background-color: white;\r\n}\r\n\r\n.absol-search-text-input.focus {\r\n    outline: solid 1px rgba(30, 30, 255, 0.4);\r\n}\r\n\r\n.absol-search-text-input-container {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    right: 2em;\r\n}\r\n\r\n.absol-search-text-button-container {\r\n    position: absolute;\r\n    top: 0;\r\n    right: 0;\r\n    width: 2em;\r\n    bottom: 0em;\r\n}\r\n\r\n.absol-search-text-button-container button {\r\n    width: 100%;\r\n    height: 100%;\r\n    outline: none;\r\n    border: none;\r\n    background: transparent;\r\n    padding: 0;\r\n    font-size: 1em;\r\n}\r\n\r\n.absol-search-text-button-container button > svg {\r\n    height: calc(16em / 14);\r\n    width: calc(16em / 14);\r\n    fill: rgb(132, 132, 132);\r\n}\r\n\r\n.absol-search-text-input-container input {\r\n    width: 100%;\r\n    height: 100%;\r\n    font-size: 1em;\r\n    box-sizing: border-box;\r\n    outline: none;\r\n    border: none;\r\n    background-color: transparent;\r\n    padding-left: 0.6em;\r\n}\r\n\r\n.absol-search-text-input:not(.searching) svg.times {\r\n    display: none;\r\n}\r\n\r\n.absol-search-text-input.searching svg.find {\r\n    display: none;\r\n}\r\n\r\n.absol-search-text-input .as-spinner-ico{\r\n    width: 2em;\r\n    height: 2em;\r\n}\r\n\r\n.absol-search-text-input:not(.as-waiting) svg.as-spinner-ico,\r\n.absol-search-text-input.as-waiting svg:not(.as-spinner-ico) {\r\n    display: none;\r\n}\r\n\r\n.absol-search-text-input-container input::-webkit-search-cancel-button {\r\n    display: none;\r\n}", ""]);



/***/ }),

/***/ 60182:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ":root {\r\n    --select-box-item-height: calc(20rem / 14);\r\n    --select-box-item-font-size: 1rem;\r\n    --select-box-item-border-radius: 9px;\r\n    --select-box-item-close-opacity: 0;\r\n    --select-box-min-height: calc(2rem + 2px);\r\n    --select-box-focus-item-color: rgb(208, 145, 239);\r\n}\r\n\r\n.absol-selectbox {\r\n    --list-min-width: 3em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    position: relative;\r\n    min-height: var(--select-box-min-height);\r\n    min-width: var(--list-min-width);\r\n    border: solid 1px #d6d6d6;\r\n    border-radius: calc(3rem / 14);\r\n    box-sizing: border-box;\r\n    padding-right: var(--select-box-item-height);\r\n    overflow-y: auto;\r\n    outline: none;\r\n    background-color: white;\r\n}\r\n\r\n.absol-selectbox:not(.as-disable-click-to-focus) {\r\n    cursor: copy;\r\n}\r\n\r\n.absol-selectbox.as-disabled {\r\n    pointer-events: none;\r\n    background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.absol-selectbox.as-disabled .absol-selectbox-item {\r\n    opacity: 0.7;\r\n}\r\n\r\n.absol-selectbox {\r\n    white-space: normal;\r\n}\r\n\r\n.absol-selectbox .absol-selectbox-item {\r\n    margin: calc((var(--select-box-min-height) - 2px - var(--select-box-item-height)) / 2) 2px;\r\n}\r\n\r\n.absol-selectbox-item {\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    display: inline-block;\r\n    position: relative;\r\n    font-size: var(--select-box-item-font-size);\r\n    height: var(--select-box-item-height);\r\n    box-sizing: border-box;\r\n    border-radius: var(--select-box-item-border-radius);\r\n    overflow: hidden;\r\n    background-color: #5bc0de;\r\n    border-color: #46b8da;\r\n    vertical-align: top;\r\n    white-space: normal;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    user-select: none;\r\n    color: black;\r\n    cursor: pointer;\r\n}\r\n\r\n\r\n.absol-selectbox-item.as-theme-confirmed {\r\n    background-color: rgb(145, 228, 251);\r\n}\r\n\r\n.absol-selectbox-item.as-theme-declined {\r\n    background-color: rgb(255, 138, 138)\r\n}\r\n\r\n.absol-selectbox-item.as-theme-waiting {\r\n    background-color: rgb(255, 227, 174);\r\n    color: black;\r\n}\r\n\r\n.absol-selectbox-item-text {\r\n    height: var(--select-box-item-height);\r\n    padding-right: calc(var(--select-box-item-height) + 5px);\r\n    padding-left: 5px;\r\n    font-size: inherit;\r\n    white-space: nowrap;\r\n}\r\n\r\n.absol-selectbox-item-text:hover {\r\n    background-color: rgba(0, 0, 0, 0.0893617021);\r\n}\r\n\r\n.absol-selectbox-item-text span {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    white-space: nowrap;\r\n}\r\n\r\n.absol-selectbox-item-close {\r\n    position: absolute;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    width: var(--select-box-item-height);\r\n    text-align: center;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    user-select: none;\r\n    cursor: pointer;\r\n    background-color: rgba(0, 0, 0, var(--select-box-item-close-opacity));\r\n    white-space: nowrap;\r\n}\r\n\r\n.absol-selectbox-item-close:hover {\r\n    color: var(--as-transparent-button-text-hover-color);\r\n}\r\n\r\n.absol-selectbox-item-close::after,\r\n.absol-selectbox-item-text::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n}\r\n\r\n.absol-selectbox-item-close span {\r\n    font-size: 1.25em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.absol-selectbox.as-item-focusable .absol-selectbox-item.as-active {\r\n    background-color: var(--select-box-focus-item-color);\r\n}", ""]);



/***/ }),

/***/ 4994:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-selectlist {\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.absol-selectlist * {\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-selectlist .absol-selectlist-item:hover {\r\n    background-color: #efefef;\r\n}\r\n\r\n.absol-selectlist .absol-selectlist-item {\r\n    height: calc(20rem / 14);\r\n    font-size: 1rem;\r\n    cursor: pointer;\r\n}\r\n\r\n.absol-selectlist-item.as-selected {\r\n    background-color: #dfdfdf;\r\n}\r\n\r\n\r\n.absol-selectlist-item.as-disabled,\r\n.absol-selectlist-item.as-disabled * {\r\n    color: var(--as-disabled-text-color);\r\n    pointer-events: none;\r\n}\r\n\r\n.absol-selectlist:not(.as-searching) > .absol-selectlist-item.as-last-in-group,\r\n.as-select-list-box:not(.as-searching) .as-last-in-group {\r\n    position: relative;\r\n    overflow: visible;\r\n}\r\n\r\n\r\n.as-select-list-box:not(.as-searching) .as-last-in-group::after,\r\n.absol-selectlist:not(.as-searching) > .absol-selectlist-item.as-last-in-group:not(:last-child)::after {\r\n    content: \"\";\r\n    border-bottom: 1px solid black;\r\n    position: absolute;\r\n    left: 0.2em;\r\n    right: 0.2em;\r\n    bottom: -0.5px;\r\n}\r\n\r\n.absol-selectlist-item-text {\r\n    line-height: inherit;\r\n    white-space: pre;\r\n    padding-left: var(--as-input-horizontal-padding);\r\n    padding-right: var(--as-input-horizontal-padding);\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    user-select: none;\r\n}\r\n\r\n.absol-selectlist-item {\r\n    height: 20px;\r\n    line-height: 20px;\r\n    --level: 0;\r\n    padding-left: calc(0.9em * var(--level));\r\n}\r\n\r\n\r\n.absol-selectlist-item {\r\n    position: relative;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-selectlist-item-desc-container {\r\n    position: absolute;\r\n    right: 0.3em;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.absol-selectlist-item-desc {\r\n    font-style: italic;\r\n    line-height: 20px;\r\n    white-space: nowrap;\r\n    color: rgb(37, 37, 37);\r\n}\r\n\r\n.absol-selectlist-item-desc:empty {\r\n    display: none;\r\n}\r\n\r\n.absol-selectlist-item {\r\n    padding-right: calc(0.35em + var(--select-list-desc-width));\r\n}\r\n\r\n.absol-selectlist-item-desc-container {\r\n    width: var(--select-list-desc-width);\r\n}\r\n\r\n\r\n.as-select-list-icon {\r\n    font-size: 1.5em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    padding-left: var(--as-input-horizontal-padding);\r\n}\r\n\r\n\r\n\r\n/**************** MOBILE ******************************/\r\n\r\n:root {\r\n    --modal-margin-top: 80px;\r\n    --modal-margin-bottom: 80px;\r\n    --modal-max-width: 500px;\r\n    --modal-width: calc(100vw - 80px);\r\n    /*--modal-border-radius: 8px;*/\r\n    --modal-border-radius: 0px;\r\n}\r\n\r\n.am-list-modal {\r\n    z-index: 100005;\r\n    position: fixed;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    text-align: center;\r\n    box-sizing: border-box;\r\n    padding-top: var(--modal-margin-top);\r\n    background-color: rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n.am-list-modal > div {\r\n    display: inline-block;\r\n    text-align: initial;\r\n}\r\n\r\n\r\n.am-list-popup-box {\r\n    max-width: var(--modal-max-width);\r\n    width: var(--modal-width);\r\n    /*-webkit-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);*/\r\n    /*-moz-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);*/\r\n    /*box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);*/\r\n    box-shadow: 2px 2px 2px 0px #908787;\r\n    -webkit-box-shadow: 2px 2px 2px 0px #908787;\r\n    background-color: #ffffff;\r\n    border-radius: var(--modal-border-radius);\r\n    font-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.am-list-popup-box.am-enable-search .absol-search-text-input {\r\n    visibility: visible;\r\n}\r\n\r\n\r\n.am-list-popup-header {\r\n    height: calc(2em + 10px);\r\n    display: block;\r\n    white-space: nowrap;\r\n    box-sizing: border-box;\r\n    padding-top: 5px;\r\n    padding-bottom: 5px;\r\n    padding-left: 10px;\r\n    border-bottom: solid 1px #dddddd;\r\n    /*background-color: rgba(169, 169, 169, 0.2);*/\r\n}\r\n\r\n.am-list-popup-header .absol-search-text-input {\r\n    display: inline-block;\r\n    width: calc(100% - 2em - 18px);\r\n    vertical-align: middle;\r\n    box-sizing: border-box;\r\n    background-color: white;\r\n}\r\n\r\n.am-list-popup-close-btn {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    border-radius: 50%;\r\n    padding: 0;\r\n    height: 2em;\r\n    width: 2em;\r\n    font-size: inherit;\r\n    border: none;\r\n    outline: none;\r\n    margin-left: 10px;\r\n    background-color: rgb(255, 255, 255);\r\n    color: #7a7a7a;\r\n    white-space: nowrap;\r\n}\r\n\r\n.am-list-popup-close-btn:active {\r\n    color: red;\r\n}\r\n\r\n\r\n.am-list-popup-close-btn:before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    height: 2em;\r\n    vertical-align: middle;\r\n}\r\n\r\n.am-list-popup-close-btn span {\r\n    font-size: 24px;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    line-height: 1;\r\n}\r\n\r\n.am-list-popup-box .absol-search-text-input {\r\n    visibility: hidden;\r\n}\r\n\r\n.am-list-popup-paging {\r\n    display: block;\r\n    height: 2em;\r\n    text-align: center;\r\n    box-sizing: border-box;\r\n    border-bottom: 1px solid #dddddd;\r\n}\r\n\r\n.am-list-popup-paging::before {\r\n    content: \"\";\r\n    height: 100%;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.am-list-popup-paging-content {\r\n    padding-left: 0.5em;\r\n    padding-right: 0.5em;\r\n}\r\n\r\n.am-list-popup-paging > * {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.am-list-popup-paging > button {\r\n    padding: 0;\r\n    margin-left: 0.25em;\r\n    margin-right: 0.25em;\r\n    width: 1.75em;\r\n    height: 1.75em;\r\n    display: inline-block;\r\n    background-color: transparent;\r\n    border: none;\r\n    box-sizing: border-box;\r\n    outline: none;\r\n}\r\n\r\n.am-list-popup-paging > button:active {\r\n    background-color: rgba(169, 169, 169, 0.3);\r\n}\r\n\r\n\r\ninput[type=\"number\"].am-list-popup-paging-offset {\r\n    width: 4em;\r\n    outline: none;\r\n    margin-right: 0.2em;\r\n    /*border: solid 1px #a9a9a9;*/\r\n    /*border-radius: 0.3em;*/\r\n    border:none;\r\n    text-align: right;\r\n    font-size: inherit;\r\n    height: 1.25em;\r\n    box-sizing: border-box;\r\n\r\n}\r\n\r\n.am-list-popup-list-scroller {\r\n    width: 100%;\r\n    overflow: auto;\r\n    --content-height: calc(100vh - 200px);\r\n    -ms-overflow-style: none;  /* IE and Edge */\r\n    scrollbar-width: none;  /* Firefox */\r\n}\r\n\r\n\r\n.am-list-popup-list-scroller::-webkit-scrollbar {\r\n    display: none;\r\n}\r\n\r\n.am-list-popup-content {\r\n    display: block;\r\n    position: relative;\r\n}\r\n\r\n.am-list-popup-list-page{\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: -200vh;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n.am-list-modal .am-selectlist {\r\n    width: 100%;\r\n}\r\n\r\n.am-list-popup-list-page.am-selectlist{\r\n    --desc-width: inherit;\r\n}\r\n\r\n.am-value-hidden .am-selectlist-item.as-selected{\r\n    display: none;\r\n}\r\n\r\n.am-selectlist {\r\n    display: table;\r\n    border-collapse: collapse;\r\n    border-spacing: 0;\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item {\r\n    display: table-row;\r\n\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item:active {\r\n    background-color: rgba(169, 169, 169, 0.4);\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item.as-selected {\r\n    background-color: #dfdfdf;\r\n}\r\n\r\n\r\n.am-selectlist > .am-selectlist-item {\r\n    border-bottom: 0.5px solid #dddddd;\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item > .am-selectlist-item-check-ctn {\r\n    display: table-cell;\r\n    vertical-align: middle;\r\n    padding-left: 0.35em;\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item > .am-selectlist-item-text-ctn,\r\n.am-selectlist > .am-selectlist-item > .am-selectlist-item-desc-ctn {\r\n    display: table-cell;\r\n    padding-top: 0.5em;\r\n    padding-bottom: 0.5em;\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item > .am-selectlist-item-text-ctn {\r\n    padding-right: 5px;\r\n    padding-left: calc(10px + 0.9em * var(--level));\r\n}\r\n\r\n.am-selectlist > .am-selectlist-item > .am-selectlist-item-desc-ctn {\r\n    padding-left: 5px;\r\n    padding-right: 10px;\r\n}\r\n\r\n\r\n.am-selectlist {\r\n    --desc-width: auto;\r\n}\r\n\r\n.am-selectlist .am-selectlist-item-desc-ctn {\r\n    width: var(--desc-width);\r\n}\r\n\r\n/******************************************************/\r\n.am-selectlist-item {\r\n    --level: 0;\r\n}\r\n\r\n.am-selectlist-item-text-ctn {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.am-selectlist-item-desc-ctn {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n\r\n.am-selectlist-item-desc {\r\n    font-style: italic;\r\n    line-height: 20px;\r\n    color: rgb(80, 80, 82);\r\n}\r\n\r\n\r\n.am-selectlist-item-icon {\r\n    font-size: 1.5em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}", ""]);



/***/ }),

/***/ 17289:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-select-list-box {\r\n    --select-list-estimate-width: 0;\r\n    --max-height: calc(100vh - 80px);\r\n    --as-width-limit: 100vw;\r\n    position: fixed;\r\n    top: 10px;\r\n    left: 10px;\r\n    width: calc(var(--select-list-estimate-width) + 2px + 5px + 7px);\r\n    font-size: 1rem;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    border: solid 1px rgb(100, 100, 255);\r\n    box-sizing: border-box;\r\n    background-color: white;\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    -webkit-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    -moz-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    outline: none;\r\n}\r\n\r\n.as-select-list-box.as-has-icon .absol-selectlist-item {\r\n    height: calc(30rem / 14);\r\n    line-height: calc(30rem / 14);\r\n}\r\n\r\n.as-select-list-box.as-enable-search {\r\n    min-width: 10em;\r\n}\r\n\r\n.as-select-list-box.as-text-align-center .absol-selectlist-item {\r\n    text-align: center;\r\n}\r\n\r\n.as-select-list-box.as-text-align-center .absol-selectlist-item-text {\r\n    padding-right: calc(0.35em + 28px);\r\n}\r\n\r\n.as-select-menu.as-text-align-center {\r\n    text-align: center;\r\n}\r\n\r\n.as-select-menu.as-text-align-center .absol-selectlist-item,\r\n.as-select-list-box.as-text-align-center .absol-selectlist-item {\r\n    padding-left: 0.35em;\r\n    padding-right: calc(0.35em + 28px);\r\n}\r\n\r\n.as-select-menu.as-text-align-center .absol-selectlist-item-text,\r\n.as-select-list-box.as-text-align-center .absol-selectlist-item-text {\r\n    padding: 0;\r\n}\r\n\r\n\r\ndiv.absol-follower.as-select-list-box {\r\n    z-index: 4000000;\r\n}\r\n\r\n.as-select-list-box .as-select-list-box {\r\n    min-width: 100%;\r\n}\r\n\r\n.as-select-list-box-search-ctn {\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n}\r\n\r\n.as-select-list-box.as-enable-search.as-anchor-6 .as-select-list-box-search-ctn,\r\n.as-select-list-box.as-enable-search.as-anchor-5 .as-select-list-box-search-ctn {\r\n    bottom: 0;\r\n    top: unset;\r\n}\r\n\r\n.as-select-list-box.as-enable-search.as-anchor-6,\r\n.as-select-list-box.as-enable-search.as-anchor-5 {\r\n    padding-bottom: calc(2em + 10px);\r\n    padding-top: 0;\r\n}\r\n\r\n.as-select-list-box.as-enable-search,\r\n.as-select-list-box.as-enable-search.as-anchor-1,\r\n.as-select-list-box.as-enable-search.as-anchor-2 {\r\n    padding-top: calc(2em + 10px);\r\n}\r\n\r\n.as-select-list-box.as-enable-search .as-select-list-box-search-ctn,\r\n.as-select-list-box.as-enable-search.as-anchor-1 .as-select-list-box-search-ctn,\r\n.as-select-list-box.as-enable-search.as-anchor-2 .as-select-list-box-search-ctn {\r\n    top: 0;\r\n    bottom: unset;\r\n}\r\n\r\n.as-select-list-box-scroller {\r\n    overflow-y: auto;\r\n    overflow-x: visible;\r\n}\r\n\r\n.as-select-list-box .as-select-list-box-scroller {\r\n    max-height: var(--max-height);\r\n}\r\n\r\n.as-select-list-box.as-enable-search .as-select-list-box-scroller {\r\n    max-height: calc(var(--max-height) - 2em - 10px);\r\n}\r\n\r\n.as-select-list-box-content {\r\n    position: relative;\r\n}\r\n\r\n.as-select-list-box-page {\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-select-list-box .absol-selectlist-item {\r\n    cursor: default;\r\n}\r\n\r\n.as-select-list-box .absol-selectlist-item-text {\r\n    max-width: calc(var(--as-width-limit) - var(--select-list-desc-width) - 10px);\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    text-overflow: ellipsis;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-select-list-box-search-ctn {\r\n    display: none;\r\n    padding: 5px;\r\n}\r\n\r\n\r\n.as-select-list-box.as-enable-search .as-select-list-box-search-ctn {\r\n    display: block;\r\n}\r\n\r\n\r\n.as-select-list-box .as-last-in-group span {\r\n    line-height: 19px;\r\n}\r\n\r\n\r\n.as-select-list-box .absol-selectlist-item:hover {\r\n    background-color: #efefef;\r\n}\r\n\r\n.as-select-list-box.as-value-hidden .absol-selectlist-item.as-selected {\r\n    color: #aaaaaa;\r\n}\r\n\r\n.as-select-list-box.as-value-hidden .absol-selectlist-item.as-selected.as-is-leaft {\r\n    display: none;\r\n}\r\n\r\n\r\n/**********************************************************************************************************************/\r\n", ""]);



/***/ }),

/***/ 92183:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-selectmenu-anchor-container {\r\n    /* position: fixed; */\r\n\r\n    /* top: 0; */\r\n    /* left: 0; */\r\n    width: 0;\r\n    height: 0;\r\n    overflow: visible;\r\n}\r\n\r\n.absol-selectmenu-anchor {\r\n    position: relative;\r\n}\r\n\r\n.absol-selectmenu-anchor-content-container {\r\n    position: absolute;\r\n    z-index: 1002;\r\n    top: 0;\r\n    left: 0;\r\n}\r\n\r\n.absol-selectmenu-anchor-content-container .absol-bscroller {\r\n    max-height: calc(100vh - 50px);\r\n}\r\n\r\n\r\n.absol-selectmenu-anchor.absol-disabled .absol-selectmenu-anchor-content-container {\r\n    visibility: hidden;\r\n    top: -100000px;\r\n    left: -10000px;\r\n    z-index: -1000;\r\n    opacity: 0;\r\n}\r\n\r\n\r\n.absol-selectmenu-dropdown-box {\r\n    border: solid 1px rgb(100, 100, 255);\r\n    box-sizing: border-box;\r\n    background-color: white;\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    -webkit-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    -moz-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n}\r\n\r\n.absol-selectmenu-dropdown-box > .as-bscroller {\r\n    overflow-y: auto;\r\n}\r\n\r\n.absol-selectmenu-dropdown-box .absol-search-text-input {\r\n    margin: 0.2em;\r\n}\r\n\r\n\r\n.absol-selectmenu.absol-hidden {\r\n    display: none !important;\r\n}\r\n\r\n.absol-selectmenu-render-space {\r\n    position: fixed;\r\n    top: 0;\r\n    left: 0;\r\n    z-index: -1000;\r\n    visibility: hidden;\r\n    font-size: 14px;\r\n}\r\n\r\n.absol-selectmenu-render-space > div {\r\n    display: inline-block;\r\n}\r\n\r\n\r\n.absol-selectmenu.as-disabled,\r\n.as-select-menu.as-disabled {\r\n    pointer-events: none;\r\n    background-color: var(--as-disabled-background-color);\r\n    color: var(--as-disabled-text-color);\r\n}\r\n\r\n.absol-selectmenu {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    position: relative;\r\n    height: calc(2em + 2px);\r\n    min-width: calc(2em + 2px);\r\n    border: solid 1px #d6d6d6;\r\n    border-radius: 2px;\r\n    box-sizing: border-box;\r\n    font-size: 1rem;\r\n    outline: none;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    background-color: white;\r\n}\r\n\r\n.absol-selectmenu.as-border-none {\r\n    border: none;\r\n}\r\n\r\n.absol-selectmenu.as-border-none .absol-selectlist-item span {\r\n    padding-left: 0;\r\n    user-select: inherit;\r\n    -ms-user-select: inherit;\r\n    -webkit-user-select: inherit;\r\n}\r\n\r\n.absol-selectmenu:not(.as-read-only) {\r\n    cursor: pointer;\r\n}\r\n\r\n.absol-selectmenu.as-read-only .absol-selectlist-item span {\r\n    user-select: inherit;\r\n    -moz-user-select: inherit;\r\n    -webkit-user-select: inherit;\r\n    -ms-user-select: inherit;\r\n}\r\n\r\n\r\n.absol-selectmenu-btn {\r\n    position: absolute;\r\n    top: 0;\r\n    bottom: 0;\r\n    right: 0;\r\n    width: 30px;\r\n    border: none;\r\n    background: transparent;\r\n    z-index: 2;\r\n    pointer-events: none;\r\n}\r\n\r\n.absol-selectmenu-btn:focus {\r\n    outline: none;\r\n}\r\n\r\n.absol-selectmenu-btn svg.dropdown {\r\n    width: 10px;\r\n    height: 10px;\r\n    fill: #929292;\r\n}\r\n\r\n.absol-selectmenu.as-read-only svg.dropdown {\r\n    display: none;\r\n}\r\n\r\n.absol-selectmenu:not(.as-read-only):hover svg.dropdown {\r\n    width: 10px;\r\n    height: 10px;\r\n    fill: black;\r\n}\r\n\r\n.absol-selectmenu .absol-selectlist-item-text {\r\n    display: inline-block;\r\n    overflow: hidden;\r\n    max-width: calc(var(--as-width-limit) - 30px);\r\n    text-overflow: ellipsis;\r\n    vertical-align: middle;\r\n\r\n}\r\n\r\n\r\n.absol-selectmenu-holder-item {\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    /*1px for border*/\r\n    white-space: nowrap;\r\n}\r\n\r\n.absol-selectmenu-holder-item::before {\r\n    content: \"\";\r\n    height: 100%;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.absol-selectmenu-holder-item > .absol-selectlist-item {\r\n    display: inline-block;\r\n    width: 100%;\r\n    vertical-align: middle;\r\n}\r\n\r\n.absol-selectmenu .absol-selectlist-item-text {\r\n    padding-right: 28px;\r\n}\r\n\r\n.absol-selectmenu .absol-scroll-button {\r\n    background-color: rgba(0, 0, 0, 0.1);\r\n    border-radius: 3px;\r\n}\r\n\r\n.absol-selectmenu .absol-scroll-button:hover {\r\n    background-color: rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n.absol-scroll-bar-v-container {\r\n    width: 10px;\r\n}\r\n\r\n.absol-selectmenu .absol-search-text-input {\r\n    margin: 4px;\r\n}\r\n\r\n.absol-selectmenu-render-space .absol-selectlist-item span {\r\n    padding-right: 0;\r\n}\r\n\r\n\r\n.absol-selectmenu .absol-selectlist-item-desc-container {\r\n    right: 30px;\r\n}\r\n\r\n\r\n.absol-selectmenu-dropdown-box .absol-bscroller {\r\n    overflow-y: auto;\r\n}\r\n\r\n\r\n.as-select-anchor {\r\n    position: fixed;\r\n    z-index: 1000001;\r\n}\r\n\r\n\r\n.as-select-anchor.as-hidden {\r\n    left: 0;\r\n    top: 0;\r\n    z-index: -1000;\r\n    visibility: hidden;\r\n    opacity: 0;\r\n}\r\n\r\n\r\n.as-select-menu {\r\n    --select-list-estimate-width: 0px;\r\n    --select-list-desc-width: 0px;\r\n    width: calc(var(--select-list-estimate-width) + 32px);\r\n    min-width: calc(var(--select-list-estimate-width) + 32px);\r\n}\r\n\r\n/***********************************************************************************************************************/\r\n\r\n.am-selectmenu-modal {\r\n    z-index: 100005;\r\n    position: fixed;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    text-align: center;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.am-selectmenu-modal>div{\r\n    display: inline-block;\r\n    text-align: initial;\r\n}\r\n\r\n.am-selectmenu-popup-box {\r\n    max-width: calc(100vw - 60px);\r\n    -webkit-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    -moz-box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    box-shadow: 2px 2px 6px 0px rgba(0, 0, 90, 0.55);\r\n    background-color: #ffffff;\r\n    border-radius: 0.5em;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.am-selectmenu-popup-box-header{\r\n    height: calc(2em + 10px);\r\n    display: block;\r\n    white-space: nowrap;\r\n    box-sizing: border-box;\r\n    padding-top: 5px;\r\n    padding-bottom: 5px;\r\n    padding-left: 10px;\r\n    border-bottom: solid 1px #dddddd;\r\n    background-color: rgba(169, 169, 169,0.2);\r\n}\r\n\r\n.am-selectmenu-popup-box-header .absol-search-text-input{\r\n    display: inline-block;\r\n    width: calc(100% - 2em - 25px);\r\n    vertical-align: middle;\r\n    box-sizing: border-box;\r\n    background-color: white;\r\n}\r\n\r\n.am-selectmenu-popup-box-close-btn{\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    border-radius:50%;\r\n    padding: 0;\r\n    height: 2em;\r\n    width: 2em;\r\n    font-size: inherit;\r\n    border: none;\r\n    outline: none;\r\n    margin-right: 10px;\r\n    background-color: rgb(255, 255, 255);\r\n    color: rgb(190, 30, 30);\r\n}\r\n\r\n.am-selectmenu-popup-box-close-btn:active{\r\n    color: red;\r\n}\r\n\r\n\r\n.am-selectmenu-popup-box-close-btn:before{\r\n    content: \"\";\r\n    display: inline-block;\r\n    height: 2em;\r\n    vertical-align: middle;\r\n}\r\n\r\n.am-selectmenu-popup-box-close-btn span{\r\n    font-size: 1.5em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    line-height: 1;\r\n}\r\n\r\n.am-selectmenu-scroller {\r\n    max-height: calc(100vh - 140px);\r\n    overflow-y: auto;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.am-selectlist.am-selectmeu-list{\r\n    min-width: 30vw;\r\n}\r\n\r\n.am-selectlist.am-selectmeu-list.as-searching{\r\n    width: 100%;\r\n}\r\n\r\n.am-selectmenu-popup-box .absol-search-text-input{\r\n    display: none;\r\n}\r\n\r\n\r\n.am-selectmenu-popup-box.am-enable-search .absol-search-text-input{\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.am-selectmenu{\r\n    white-space: nowrap;\r\n    background: white;\r\n    overflow: hidden;\r\n    box-sizing: border-box;\r\n    padding-right: 35px;\r\n    max-width: 95vw;\r\n    width: var(--recommend-width);\r\n}\r\n\r\n.am-selectmenu.disabled .absol-selectmenu-btn{\r\n    background-color: #ebebe4;\r\n}\r\n\r\n.am-selectmenu .absol-selectmenu-btn{\r\n    background: white;\r\n}\r\n\r\n.am-selectmenu::before{\r\n    content: \"\";\r\n    height: 100%;\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n}\r\n\r\n\r\n.am-selectmenu-holder-item{\r\n    display: inline-table;\r\n    vertical-align: middle;\r\n    width: 100%;\r\n    table-layout: auto;\r\n}\r\n\r\n.am-selectmenu-holder-item>.am-selectlist-item{\r\n    display: table-row;\r\n}\r\n\r\n.am-selectmenu-holder-item .am-selectlist-item-text-ctn,\r\n.am-selectmenu-holder-item .am-selectlist-item-desc-ctn{\r\n    display: table-cell;\r\n    padding-left: 10px;\r\n    white-space: nowrap;\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    width: auto;\r\n}\r\n\r\n\r\n.am-selectmenu.disabled {\r\n    pointer-events: none;\r\n    background-color: #ebebe4;\r\n}", ""]);



/***/ }),

/***/ 54894:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-select-table-render-space {\r\n    position: fixed;\r\n    top: 0;\r\n    left: 0;\r\n    z-index: -1000;\r\n    visibility: hidden;\r\n    font-size: 14px;\r\n}\r\n\r\n.absol-select-table {\r\n    border: solid 1px #a9a9a9;\r\n    min-width: 26em;\r\n    overflow: hidden;\r\n}\r\n\r\n.absol-select-table-header {\r\n    display: block;\r\n    position: relative;\r\n    box-sizing: content-box;\r\n    height: 2.2857142857em;\r\n}\r\n\r\n.absol-select-table-searchtextinput-container {\r\n    position: absolute;\r\n    left: 0.14285714285em;\r\n    top: 0.14285714285em;\r\n    height: 2em;\r\n    right: 10em;\r\n    /* background-color: cyan; */\r\n}\r\n\r\n.absol-select-table.disable-move-all .absol-select-table-buttons-container {\r\n    display: none;\r\n}\r\n\r\n.absol-select-table.disable-move-all .absol-select-table-searchtextinput-container {\r\n    right: 0.14285714285em !important;\r\n}\r\n\r\n.absol-select-table-buttons-container {\r\n    position: absolute;\r\n    right: 0.14285714285em;\r\n    top: 0.14285714285em;\r\n    width: 10.7142857143em;\r\n    height: 2em;\r\n    white-space: nowrap;\r\n}\r\n\r\n.absol-select-table-buttons-container>button {\r\n    height: 2em;\r\n    font-size: 1em;\r\n    background-color: transparent;\r\n    border: none;\r\n    padding: 0 0.5em;\r\n    margin: 0;\r\n    text-decoration: underline;\r\n    cursor: pointer;\r\n}\r\n\r\n.absol-select-table-buttons-container>button:focus {\r\n    outline: none;\r\n}\r\n\r\n.absol-select-table-buttons-container>button:hover {\r\n    color: #a9a9a9;\r\n}\r\n\r\n.absol-select-table-buttons-container>button:active {\r\n    color: #a9a9ff;\r\n}\r\n\r\n.absol-select-table-body {\r\n    margin: 0.14285714285em;\r\n    white-space: nowrap;\r\n}\r\n\r\n.absol-select-table-items-scroller {\r\n    width: 50%;\r\n    display: inline-block;\r\n    box-sizing: border-box;\r\n    vertical-align: top;\r\n    overflow-y: auto;\r\n}\r\n\r\n.absol-select-table-items-scroller .absol-scroll-button {\r\n    background-color: rgba(1, 1, 30, 0.1);\r\n}\r\n\r\n.absol-select-table-items-scroller .absol-scroll-bar-v-container {\r\n    width: 0.69em;\r\n}\r\n\r\n.absol-select-table-selected-search-items-container,\r\n.absol-select-table-nonselected-search-items-container,\r\n.absol-select-table.searching .absol-select-table-selected-items-container,\r\n.absol-select-table.searching .absol-select-table-nonselected-items-container {\r\n    display: none;\r\n}\r\n\r\n.absol-select-table.searching .absol-select-table-selected-search-items-container,\r\n.absol-select-table.searching .absol-select-table-nonselected-search-items-container {\r\n    display: block;\r\n    padding-right: 0.7em;\r\n}\r\n\r\n.absol-select-table-nonselected-items-container,\r\n.absol-select-table-selected-items-container {\r\n    padding-right: 0.7em;\r\n}\r\n\r\n.absol-select-table-nonselected-items-container>.absol-select-table-item,\r\n.absol-select-table-selected-items-container>.absol-select-table-item,\r\n.absol-select-table-nonselected-search-items-container>.absol-select-table-item,\r\n.absol-select-table-selected-search-items-container>.absol-select-table-item {\r\n    margin: 0.14285714285em;\r\n}\r\n\r\n.absol-select-table-item {\r\n    display: block;\r\n    line-height: 2em;\r\n    min-height: 2em;\r\n    position: relative;\r\n    background-color: rgba(169, 169, 169, 0.05);\r\n    border: solid 1px rgb(235, 235, 235);\r\n    border-radius: 0.2em;\r\n    overflow: hidden;\r\n    -webkit-user-select: none;\r\n    /* Safari 3.1+ */\r\n    -moz-user-select: none;\r\n    /* Firefox 2+ */\r\n    -ms-user-select: none;\r\n    /* IE 10+ */\r\n    user-select: none;\r\n    /* Standard syntax */\r\n    padding-left: 0.69em;\r\n    padding-right: 1.8em;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-select-table-item:hover {\r\n    background-color: rgba(169, 169, 169, 0.1);\r\n}\r\n\r\n.absol-select-table-item-right-container {\r\n    right: 0.3em;\r\n    bottom: 0.3em;\r\n    top: 0.3em;\r\n    padding: 0.2em;\r\n    width: 1.4em;\r\n    position: absolute;\r\n    border-radius: 0.2em;\r\n    box-sizing: border-box;\r\n ;\r\n}\r\n\r\n.absol-select-table-item-right-container:hover {\r\n    background-color: rgba(169, 169, 169, 0.3);\r\n}\r\n\r\nspan.absol-select-table-item-text {\r\n    white-space: normal;\r\n    \r\n}\r\n\r\n.absol-select-table-item-right-container-table{\r\n    display: table;\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n.absol-select-table-item-right-container-cell{\r\n    display: table-cell;\r\n    vertical-align: middle;\r\n}\r\n\r\n.absol-select-table-item-right-container svg {\r\n    width: 1em;\r\n    height: 1em;\r\n    display: none;\r\n}\r\n\r\n/* clearfix\r\n.absol-select-table-none-nonselected-items-container::after,\r\n.absol-select-table-none-selected-items-container::after {\r\n    content: \"\";\r\n    display:table;\r\n    clear: both;\r\n} */\r\n\r\n.absol-select-table-selected-items-container .absol-select-table-item-right-container svg.sub-icon,\r\n.absol-select-table-selected-search-items-container .absol-select-table-item-right-container svg.sub-icon {\r\n    display: block;\r\n    stroke: rgb(243, 61, 61);\r\n    fill: rgb(226, 100, 100);\r\n}\r\n\r\n.absol-select-table-nonselected-items-container .absol-select-table-item-right-container svg.add-icon,\r\n.absol-select-table-nonselected-search-items-container .absol-select-table-item-right-container svg.add-icon {\r\n    display: block;\r\n    fill: rgb(100, 226, 167);\r\n    stroke: rgb(61, 185, 243);\r\n}\r\n\r\n.absol-select-table.portrait {}", ""]);



/***/ }),

/***/ 6322:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-select-tree-leaf-box {\r\n    min-width: 10em;\r\n}\r\n\r\n.am-select-tree-leaf-box-body {\r\n    overflow-y: auto;\r\n    max-height: calc(80vh - 2em);\r\n}\r\n\r\n.am-select-tree-leaf-box.as-enable-search .am-select-tree-leaf-box-body {\r\n    max-height: calc(80vh - 4em - 10px);\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item {\r\n    display: block;\r\n    white-space: nowrap;\r\n    position: relative;\r\n    width: 100%;\r\n    overflow: hidden;\r\n    --level: 0;\r\n    --icon-width: 0px;\r\n}\r\n\r\n.am-select-tree-leaf-item:active {\r\n    background-color: #efefef;\r\n}\r\n\r\n.am-select-tree-leaf-item.as-selected {\r\n    background-color: #dfdfdf;\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item.as-has-icon {\r\n    --icon-width: 2.7em;\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item-toggle-ctn,\r\n.am-select-tree-leaf-item-icon-ctn,\r\n.am-select-tree-leaf-item-checkbox-ctn {\r\n    position: absolute;\r\n    white-space: nowrap;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.am-select-tree-leaf-item-toggle-ctn {\r\n    left: calc(2em * var(--level) + 0.2em);\r\n    width: 1.5em;\r\n    text-align: center;\r\n}\r\n\r\n.am-select-tree-leaf-item-toggle-ctn > svg {\r\n    width: 0.7em;\r\n    height: 0.7em;\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item-icon-ctn {\r\n    left: calc(2em * var(--level) + 1.7em);\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item-icon-ctn > svg {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n\r\n}\r\n\r\n.am-select-tree-leaf-item-icon-ctn {\r\n\r\n}\r\n\r\n.am-select-tree-leaf-item.as-status-open svg .toggle-close,\r\n.am-select-tree-leaf-item.as-status-close svg .toggle-open,\r\n.am-select-tree-leaf-item:not(.as-status-close):not(.as-status-open) .am-select-tree-leaf-item-toggle-ctn {\r\n    display: none;\r\n}\r\n\r\n.am-select-tree-leaf-item-icon-ctn::before,\r\n.am-select-tree-leaf-item-toggle-ctn::before,\r\n.am-select-tree-leaf-item-checkbox-ctn::before {\r\n    content: \"\";\r\n    height: 100%;\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n}\r\n\r\n.am-select-tree-leaf-item-icon-ctn:empty {\r\n    display: none;\r\n}\r\n\r\n.am-select-tree-leaf-item-icon-ctn > span {\r\n    font-size: 1.8em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item-icon-ctn img,\r\n.am-select-tree-leaf-item-icon-ctn svg {\r\n    width: 1.8em;\r\n    height: 1.8em;\r\n    display: inline-block;\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item-text {\r\n    width: var(--text-width);\r\n    box-sizing: border-box;\r\n    padding: 0.3em 0.5em 0.3em calc(1.2em + 2em * var(--level) + var(--icon-width));\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    line-height: 1.5;\r\n    white-space: normal;\r\n}\r\n\r\n\r\n.am-select-tree-leaf-item-desc {\r\n    display: none;\r\n    vertical-align: middle;\r\n}\r\n", ""]);



/***/ }),

/***/ 86923:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-select-tree-leaf-item:not(.as-is-leaf) > .absol-exp-node > .absol-exp-node-name,\r\n.as-select-tree-leaf-item:not(.as-is-leaf) > .absol-exp-node > .absol-exp-node-ext-icon,\r\n.as-select-tree-leaf-item.as-no-select > .absol-exp-node > .absol-exp-node-name,\r\n.as-select-tree-leaf-item.as-no-select > .absol-exp-node > .absol-exp-node-ext-icon\r\n{\r\n    color: #888;\r\n}\r\n\r\n.as-select-tree-leaf-item:not(.as-is-leaf) > .absol-exp-node > .absol-exp-node-desc {\r\n    color: rgb(169, 169, 172)\r\n}\r\n\r\n.as-select-tree-leaf-item > .absol-exp-node:hover,\r\n.as-select-tree-leaf-item > .absol-exp-node:focus,\r\n.as-select-tree-leaf-item > .absol-exp-node:active {\r\n    background-color: transparent;\r\n}\r\n\r\n.as-select-tree-leaf-item.as-is-leaf:not(.as-no-select) > .absol-exp-node:hover {\r\n    background-color: #efefef;\r\n}\r\n\r\n.as-select-tree-leaf-item.as-selected > .absol-exp-node {\r\n    background-color: #dfdfdf;\r\n}\r\n\r\n.am-select-tree-menu.absol-selectmenu {\r\n    width: auto;\r\n}\r\n\r\n.am-select-tree-menu .absol-selectmenu-holder-item {\r\n    position: relative;\r\n    left: unset;\r\n    right: unset;\r\n    top: unset;\r\n    bottom: unset;\r\n    height: 100%;\r\n    max-width: 100%;\r\n}\r\n\r\n\r\n.am-select-tree-menu .absol-selectlist-item-text {\r\n    max-width: calc(100vw - 200px);/**TODO: find better solution*/\r\n    text-overflow: ellipsis;\r\n    overflow: hidden;\r\n}", ""]);



/***/ }),

/***/ 32206:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-selecttreemenu  .absol-tree-list-item-desc-container{\r\n    right: 30px;\r\n}\r\n\r\n\r\n.absol-selectmenu-holder-item .absol-tree-list-item-parent:hover {\r\n    background-color: transparent;\r\n}\r\n\r\n.am-select-tree-menu {\r\n    max-width: var(--as-width-limit);\r\n}", ""]);



/***/ }),

/***/ 89423:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-single-page {\r\n    position: relative;\r\n}\r\n\r\n\r\n.absol-single-page-header {\r\n    box-sizing: border-box;\r\n    z-index: 2;\r\n    display: block;\r\n}\r\n\r\n.absol-single-page-footer {\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    bottom: 0;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n.absol-single-page-scroller-viewport {\r\n    min-height: 100%;\r\n    display: block;\r\n    position: relative;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-single-page-scroller {\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    overflow-y: auto;\r\n}\r\n\r\n.absol-single-page.as-viewport-full > .absol-single-page-scroller > .absol-single-page-scroller-viewport {\r\n    height: 100%;\r\n    width: 100%;\r\n    overflow: hidden;\r\n}\r\n\r\n.absol-single-page.as-no-scroll > .absol-single-page-scroller {\r\n    overflow: hidden;\r\n}", ""]);



/***/ }),

/***/ 87111:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-snackbar {\r\n    visibility: hidden;\r\n    min-width: 250px;\r\n    margin-left: -125px;\r\n    background-color: #333;\r\n    color: #fff;\r\n    text-align: center;\r\n    border-radius: 2px;\r\n    padding: 16px;\r\n    position: fixed;\r\n    z-index: 1000000000;\r\n    left: 50%;\r\n    bottom: 0;\r\n    font-size: 17px;\r\n    opacity: 0;\r\n    transition: opacity 0.25s ease-in, bottom 0.25s ease-in;\r\n\r\n}\r\n\r\n.as-snackbar.as-show {\r\n    visibility: visible;\r\n    bottom: 30px;\r\n    opacity: 1;\r\n}\r\n\r\n.as-snackbar.as-hiding{\r\n    transition: opacity 0.5s ease-out, bottom 0.5s ease-out;\r\n    visibility: visible;\r\n    bottom: 0;\r\n    opacity: 0;\r\n}\r\n\r\n", ""]);



/***/ }),

/***/ 86778:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-solid-color-picker:not(.as-solid-color-picker-mode-swatches) .as-solid-color-picker-swatches-select-ctn,\r\n.as-solid-color-picker:not(.as-solid-color-picker-mode-swatches) .as-solid-color-picker-swatches-ctn,\r\n.as-solid-color-picker:not(.as-solid-color-picker-mode-picker) .as-solid-color-picker-spectrum,\r\n.as-solid-color-picker:not(.as-solid-color-picker-mode-picker) .as-solid-color-picker-hue,\r\n.as-solid-color-picker:not(.as-solid-color-picker-mode-picker) .as-solid-color-picker-alpha,\r\n.as-solid-color-picker:not(.as-solid-color-picker-mode-picker) .as-solid-color-picker-near {\r\n    display: none;\r\n}\r\n\r\n.as-solid-color-picker:not(.as-has-opacity) .as-solid-color-picker-color-opacity,\r\n.as-solid-color-picker:not(.as-has-opacity) .as-solid-color-picker-alpha {\r\n    visibility: hidden;\r\n}\r\n\r\n.as-solid-color-picker .as-hanger {\r\n    user-select: none;\r\n    touch-action: none;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n}\r\n\r\n.as-solid-color-picker {\r\n    display: inline-block;\r\n    border: 1px solid black;\r\n    font-size: 12px;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    outline: none;\r\n    background-color: white;\r\n}\r\n\r\n.as-solid-color-picker-body {\r\n    padding-bottom: 10px;\r\n    padding-left: 10px;\r\n    padding-right: 10px;\r\n    box-sizing: border-box;\r\n    border-bottom: 1px solid #dddddd;\r\n}\r\n\r\n.as-solid-color-picker-header {\r\n    padding: 10px;\r\n}\r\n\r\n.as-solid-color-picker-mode {\r\n    font-size: 0.9em;\r\n}\r\n\r\n.as-solid-color-picker-mode button {\r\n    height: 1.5em;\r\n    min-width: 7em;\r\n}\r\n\r\n.as-solid-color-picker-swatches-name {\r\n    color: #006ce5;\r\n    text-decoration: underline;\r\n    cursor: pointer;\r\n}\r\n\r\n.as-solid-color-picker-swatches-select-ctn {\r\n    line-height: 2em;\r\n}\r\n\r\n.as-solid-color-picker-swatches-ctn {\r\n    overflow-y: auto;\r\n    width: 20em;\r\n    height: 20em;\r\n    box-sizing: content-box;\r\n}\r\n\r\n.as-solid-color-picker-swatches-ctn .as-swatches-table {\r\n    width: 100%;\r\n}\r\n\r\n.as-solid-color-picker-swatches-ctn .as-swatches-table-row,\r\n.as-solid-color-picker-recent-swatches-ctn .as-swatches-table-row {\r\n    height: 2em;\r\n}\r\n\r\n.as-solid-color-picker-recent-swatches-ctn .as-swatches-table-cell {\r\n    width: 1.6666666em;\r\n}\r\n\r\n\r\n.as-solid-color-picker-recent-title {\r\n    line-height: 1.5em;\r\n    margin-top: 0.5em;\r\n    font-weight: bold;\r\n}\r\n\r\n.as-solid-color-picker-recent-swatches-ctn {\r\n    overflow-y: auto;\r\n    width: 20em;\r\n    height: 4em;\r\n    box-sizing: content-box;\r\n}\r\n\r\n.as-solid-color-picker-footer {\r\n    padding: 10px;\r\n}\r\n\r\n.as-solid-color-picker-footer .as-flexicon-button {\r\n    font-size: inherit;\r\n    height: 2em;\r\n    box-sizing: border-box;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-solid-color-picker-selected {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 2em;\r\n    width: 5em;\r\n    border: 1px solid #ddd;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-solid-color-picker-color-hex,\r\n.as-solid-color-picker-color-opacity {\r\n    font-size: inherit;\r\n    width: 6em;\r\n}\r\n\r\n.as-solid-color-picker-color-hex input {\r\n    margin-left: 0;\r\n}\r\n\r\n.as-flexicon-input.as-solid-color-picker-color-opacity.as-flexicon-input-has-icon.as-flexicon-input-has-unit input {\r\n    width: calc(100% - 4em);\r\n}\r\n\r\n.as-solid-color-picker.as-nullable .as-solid-color-picker-none-ctn{\r\n    display: inline-block;\r\n\r\n}\r\n\r\n.as-solid-color-picker-none-ctn {\r\n    display: none;\r\n    margin-top: 5px;\r\n    padding: 5px;\r\n    cursor: default;\r\n    user-select: none;\r\n}\r\n\r\n.as-solid-color-picker-none-ctn.as-selected {\r\n    box-shadow: rgba(0, 0, 0, 0.7) 0px 0px 0.3em 0.125em inset;\r\n}\r\n\r\n.as-solid-color-picker-none-ctn:hover {\r\n    color: var(--as-transparent-button-text-hover-color);\r\n}\r\n\r\n\r\n.as-solid-color-picker-none-ctn:active {\r\n    color: var(--as-transparent-button-text-active-color);\r\n}\r\n\r\n.as-solid-color-picker-none-ctn > * {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-solid-color-picker-none-cell {\r\n    width: 1.5em;\r\n    height: 1.5em;\r\n    margin-right: 0.3em;\r\n}\r\n\r\n\r\n.as-solid-color-picker-color-opacity input {\r\n    padding-left: 0;\r\n    padding-right: 0;\r\n}\r\n\r\n.as-solid-color-picker-footer > *:not(:first-child) {\r\n    margin-left: 0.5em;\r\n}\r\n\r\n.as-swatches-table-cell .as-solid-color-picker-selected-dot {\r\n    left: calc(50% - 0.5em);\r\n    top: calc(50% - 0.5em);\r\n}\r\n\r\n.as-solid-color-picker-selected-dot {\r\n    position: absolute;\r\n    width: 1em;\r\n    height: 1em;\r\n    box-shadow: inset 0px 0px 0.3em 0.125em rgba(255, 255, 255, 0.7);\r\n    z-index: 1;\r\n    border-radius: 50%;\r\n}\r\n\r\n\r\n.as-solid-color-picker-spectrum {\r\n    width: 20em;\r\n    height: 13.3em;\r\n    background-color: red;\r\n    position: relative;\r\n}\r\n\r\n.as-solid-color-picker-spectrum-dot {\r\n    width: 1em;\r\n    height: 1em;\r\n    box-shadow: inset 0px 0px 0.3em 0.125em rgba(0, 0, 0, 0.7);\r\n    z-index: 1;\r\n    border-radius: 50%;\r\n    position: absolute;\r\n    bottom: calc(100% - 0.5em);\r\n    left: calc(100% - 0.5em);\r\n}\r\n\r\n\r\n.as-solid-color-picker-hue {\r\n    width: 20em;\r\n    height: 2em;\r\n    background: linear-gradient(to right, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\r\n    position: relative;\r\n}\r\n\r\n.as-solid-color-picker-hue-dot {\r\n    width: 1em;\r\n    height: 1em;\r\n    box-shadow: inset 0px 0px 0.3em 0.125em rgba(0, 0, 0, 0.7);\r\n    z-index: 1;\r\n    border-radius: 50%;\r\n    position: absolute;\r\n    top: calc(50% - 0.5em);\r\n    left: calc(0% - 0.5em);\r\n}\r\n\r\n\r\n.as-solid-color-picker-alpha {\r\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAaSURBVBhXYzh8+PD///8hJAOcBSRxyRw+DABJUCox2kjvSgAAAABJRU5ErkJggg==');\r\n    background-size: 1.5em;\r\n    image-rendering: optimizeSpeed;\r\n    image-rendering: -moz-crisp-edges;\r\n    image-rendering: -o-crisp-edges;\r\n    image-rendering: -webkit-optimize-contrast;\r\n    image-rendering: pixelated;\r\n    image-rendering: optimize-contrast;\r\n    -ms-interpolation-mode: nearest-neighbor;\r\n\r\n    width: 20em;\r\n    height: 2em;\r\n    position: relative;\r\n}\r\n\r\n.as-solid-color-picker-alpha-color {\r\n    background: linear-gradient(to right, rgba(255, 0, 0, 0.0) 0%, rgba(255, 0, 0, 1) 100%);\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.as-solid-color-picker-alpha-dot {\r\n    width: 1em;\r\n    height: 1em;\r\n    box-shadow: inset 0px 0px 0.3em 0.125em rgba(0, 0, 0, 0.7);\r\n    z-index: 1;\r\n    border-radius: 50%;\r\n    position: absolute;\r\n    top: calc(50% - 0.5em);\r\n    left: calc(100% - 0.5em);\r\n}\r\n\r\n\r\n.as-solid-color-picker-near {\r\n    margin-top: 0.5em;\r\n    width: 20em;\r\n    height: 4.2em;\r\n}\r\n\r\n.as-solid-color-picker-near .as-swatches-table-cell-color {\r\n    transition: transform 0.1s;\r\n}\r\n\r\n\r\n.as-solid-color-picker-near .as-swatches-table-cell-color:hover {\r\n    transform: scale(1.2);\r\n    z-index: 2;\r\n}", ""]);



/***/ }),

/***/ 4476:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-span-input {\r\n    white-space: pre;\r\n}\r\n\r\n.absol-span-input:focus {\r\n    outline-color: rgba(30, 150, 255, 0.3);\r\n    outline-width: 1px;\r\n}\r\n\r\n.absol-span-input:empty::before {\r\n    content: \" \";\r\n    display: inline;\r\n    white-space: pre;\r\n}\r\n\r\n.absol-span-input.absol-span-input-empty-minus:empty::before {\r\n    content: \"-\";\r\n}", ""]);



/***/ }),

/***/ 19910:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-spectrum-color {\r\n    position: relative;\r\n    touch-action: none;\r\n    user-select: none;\r\n    -moz-user-select: none;\r\n    -webkit-user-select: none;\r\n}\r\n\r\n.as-spectrum-color-sat {\r\n    width: 100%;\r\n    height: 100%;\r\n    box-sizing: content-box;\r\n    background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0)));\r\n    background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0));\r\n    background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0));\r\n    background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0));\r\n    background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0));\r\n    background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0));\r\n    -ms-filter: \"progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)\";\r\n    filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81');\r\n}\r\n\r\n\r\n.as-spectrum-color-val {\r\n    width: 100%;\r\n    height: 100%;\r\n    box-sizing: content-box;\r\n    background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0)));\r\n    background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0));\r\n    background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));\r\n    background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));\r\n    background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));\r\n    background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0));\r\n    -ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)\";\r\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000');\r\n}", ""]);



/***/ }),

/***/ 65199:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-static-tabbar {\r\n    position: relative;\r\n}\r\n\r\n.absol-static-tabbar-button {\r\n    height: 2em;\r\n    background-color: transparent;\r\n    border: none;\r\n    font-size: 1em;\r\n    padding-left: 0.5em;\r\n    padding-right: 0.5em;\r\n    color: rgb(104, 104, 104);\r\n}\r\n\r\n.absol-static-tabbar-button:hover {\r\n    color: rgb(30, 30, 55);\r\n}\r\n\r\n.absol-static-tabbar-button.active {\r\n    color: black;\r\n}\r\n\r\n.absol-static-tabbar-button:focus {\r\n    outline: none;\r\n}\r\n\r\n.absol-static-tabbar-button>span {\r\n    font-size: 0.7em;\r\n}\r\n\r\n.absol-static-tabbar-hline {\r\n    border-bottom: solid 1px rgb(127, 127, 128);\r\n    height: 100%;\r\n}\r\n\r\n.absol-static-tabbar-active-box {\r\n    position: absolute;\r\n    bottom: 0;\r\n    top: 0;\r\n    left: 0;\r\n    width: 0;\r\n    transition: left 0.15s, width 0.15s;\r\n    padding-left: 0.5em;\r\n    padding-right: 0.5em;\r\n    box-sizing: border-box;\r\n    /* z-index: 1; */\r\n}\r\n\r\n.absol-static-tabbar.dark .absol-static-tabbar-hline{\r\n    border-bottom-color: white;\r\n}\r\n\r\n.absol-static-tabbar.dark .absol-static-tabbar-button.active{\r\n    color: white;\r\n}\r\n\r\n.absol-static-tabbar.dark .absol-static-tabbar-button {\r\n    color: rgb(204, 204, 204);\r\n}", ""]);



/***/ }),

/***/ 84679:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-color-cell {\r\n    position: relative;\r\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAaSURBVBhXYzh8+PD///8hJAOcBSRxyRw+DABJUCox2kjvSgAAAABJRU5ErkJggg==');\r\n    background-size: 1.5em;\r\n    image-rendering: optimizeSpeed;\r\n    /* STOP SMOOTHING, GIVE ME SPEED  */\r\n    image-rendering: -moz-crisp-edges;\r\n    /* Firefox                        */\r\n    image-rendering: -o-crisp-edges;\r\n    /* Opera                          */\r\n    image-rendering: -webkit-optimize-contrast;\r\n    /* Chrome (and eventually Safari) */\r\n    image-rendering: pixelated;\r\n    /* Chrome */\r\n    image-rendering: optimize-contrast;\r\n    /* CSS3 Proposed                  */\r\n    -ms-interpolation-mode: nearest-neighbor;\r\n    /* IE8+                           */\r\n}\r\n\r\n.as-color-cell.as-null .as-color-cell-value {\r\n    background-color: transparent !important;\r\n    background-size: contain;\r\n    background-position: center;\r\n    }\r\n\r\n.as-color-cell-value {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    right: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.as-swatches-table {\r\n    display: table;\r\n    table-layout: fixed;\r\n}\r\n\r\n.as-swatches-table-row {\r\n    display: table-row;\r\n}\r\n\r\n\r\n.as-swatches-table-cell.as-color-cell {\r\n    position: relative;\r\n    display: table-cell;\r\n    background-size: 1.5em;\r\n\r\n}\r\n", ""]);



/***/ }),

/***/ 670:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-switch {\r\n    position: relative;\r\n    display: inline-block;\r\n    width: 2.2em;\r\n    height: 1.2em;\r\n    vertical-align: middle;\r\n}\r\n\r\n.absol-switch input {\r\n    opacity: 0;\r\n    width: 0;\r\n    height: 0;\r\n}\r\n\r\n.absol-switch:not(.as-read-only) .absol-switch-slider{\r\n    cursor: pointer;\r\n}\r\n\r\n.absol-switch-slider {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    right: 0;\r\n    bottom: 0;\r\n    background-color: #ccc;\r\n    -webkit-transition: .4s;\r\n    transition: .4s;\r\n    border-radius: 0.6em;\r\n}\r\n\r\n.absol-switch-slider:before {\r\n    position: absolute;\r\n    content: \"\";\r\n    height: 1em;\r\n    width: 1em;\r\n    left: 0.1em;\r\n    bottom: 0.1em;\r\n    background-color: white;\r\n    -webkit-transition: .4s;\r\n    transition: .4s;\r\n    border-radius: 0.5em;\r\n}\r\n\r\ninput:checked+.absol-switch-slider {\r\n    background-color: #2196F3;\r\n}\r\n\r\ninput:focus+.absol-switch-slider {\r\n    box-shadow: 0 0 1px #2196F3;\r\n}\r\n\r\ninput:checked+.absol-switch-slider:before {\r\n    -webkit-transform: translateX(1em);\r\n    -ms-transform: translateX(1em);\r\n    transform: translateX(1em);\r\n}\r\n\r\n/* Rounded absol-switch-sliders */\r\n.absol-switch.square .absol-switch-slider {\r\n    border-radius: 0;\r\n}\r\n\r\n.absol-switch.square .absol-switch-slider:before {\r\n    border-radius: 0;\r\n}\r\n\r\n.absol-switch.disabled {\r\n    pointer-events: none;\r\n}\r\n\r\n.absol-switch.disabled .absol-switch-slider:before{\r\n    background-color: rgb(234, 234, 234);\r\n}\r\n\r\n.absol-switch.disabled input:checked+.absol-switch-slider {\r\n    background-color: rgb(141, 188, 226);\r\n}\r\n\r\n.absol-switch.disabled .absol-switch-slider {\r\n    background-color: rgb(171, 171, 171);\r\n}\r\n\r\n", ""]);



/***/ }),

/***/ 75575:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "\r\n.as-table-of-text-input-wrapper {\r\n    border: 1px solid #dddddd;\r\n}\r\n\r\n.as-table-of-text-input-content-ctn {\r\n    overflow: auto;\r\n}\r\n\r\n\r\n.as-table-of-text-input {\r\n    width: 100%;\r\n    border-collapse: collapse;\r\n    color: black;\r\n    font-family: 'Aptos Narrow', Calibri, sans-serif, 'Mongolian Baiti', 'Microsoft Yi Baiti', 'Javanese Text', 'Yu Gothic';\r\n    font-size: 11pt;\r\n    margin: 10px;\r\n}\r\n\r\n.as-table-of-text-input-wrapper.as-size-a4 .as-table-of-text-input {\r\n    width: 445pt;\r\n}\r\n\r\n.as-table-of-text-input pre {\r\n    font: inherit;\r\n    line-height: 1.75;\r\n}\r\n\r\n.as-table-of-text-input.as-inline {\r\n    display: inline-table;\r\n}\r\n\r\n.as-table-of-text-input-cell {\r\n    vertical-align: top;\r\n    padding: 0px 5px;\r\n    border: 1px dashed #808080;\r\n    position: relative;\r\n}\r\n\r\n.as-table-of-text-input-cell.as-focus::before {\r\n    pointer-events: none;\r\n    content: \"\";\r\n    position: absolute;\r\n    border: 1px dashed var(--variant-color-primary);\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n\r\n.as-table-of-text-input-cell .as-preinput {\r\n    outline: none;\r\n    display: block;\r\n}\r\n\r\n.as-table-of-text-input-cell.as-bold {\r\n    font-weight: bold;\r\n}\r\n\r\n.as-table-of-text-input-cell.as-italic {\r\n    font-style: italic;\r\n}\r\n\r\n.as-table-of-text-input-tool {\r\n    background-color: #f8f8f8;\r\n    font-size: 14px;\r\n    /*-webkit-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);*/\r\n    /*-moz-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);*/\r\n    /*box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);*/\r\n    /*border-radius: 4px;*/\r\n    padding: 3px;\r\n    border-bottom: 1px solid #dddddd;\r\n}\r\n\r\n.as-table-of-text-input-tool > button,\r\n.as-table-of-text-input-tool-group > button {\r\n    height: 30px;\r\n    width: 30px;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.as-table-of-text-input-tool-group {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-table-of-text-input-tool-group:not(:last-child) {\r\n    border-right: 1px solid #dddddd;\r\n}\r\n\r\n\r\n.as-table-of-text-input-tool  button.as-checked {\r\n    color: #2977ff;\r\n    /*background-color: rgb(240, 247, 255);*/\r\n    box-shadow: inset gray 0px 0px 4px -2px;\r\n}\r\n", ""]);



/***/ }),

/***/ 52296:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-table-scroller .absol-table-scroller-viewport {\r\n    width: calc(100% + var(--scrollbar-width));\r\n    height: calc(100% + var(--scrollbar-width));\r\n}\r\n\r\n.absol-table-scroller .absol-table-scroller-header-hscroller-viewport {\r\n    margin-bottom: calc(0px - var(--scrollbar-width))\r\n}\r\n\r\n\r\n.absol-table-scroller {\r\n    --scrollbar-width: 17px;\r\n    --new-pos-y: 0;\r\n    position: relative;\r\n    padding-right: 17px;\r\n    padding-bottom: 17px;\r\n    --tvs-scroll-padding-bottom: 0px;\r\n}\r\n\r\n.absol-table-scroller:not(.as-scroll-vertical) {\r\n    padding-right: 0;\r\n}\r\n\r\n\r\n.absol-table-scroller:not(.as-scroll-horizontal) {\r\n    padding-bottom: 0;\r\n}\r\n\r\n.as-table-scroller-origin-table-ctn {\r\n    padding-bottom: var(--tvs-scroll-padding-bottom);\r\n\r\n}\r\n\r\n\r\n.as-table-scroller-vertical-scroller {\r\n    overflow-y: scroll;\r\n    height: 100%;\r\n    box-sizing: border-box;\r\n    margin-right: calc(0px - var(--scrollbar-width));\r\n}\r\n\r\n.as-table-scroller-fixed-y-header-ctn {\r\n    position: absolute;\r\n    z-index: 4;\r\n    top: 0;\r\n    left: 0;\r\n    right: 0;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-table-scroller-fixed-x-col-ctn {\r\n    position: absolute;\r\n    z-index: 5;\r\n    top: 0;\r\n    left: 0;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-table-scroller-fixed-xy-header-ctn {\r\n    position: absolute;\r\n    z-index: 12;\r\n    top: 0;\r\n    left: 0;\r\n    overflow: hidden;\r\n}\r\n\r\n.as-table-scroller-fixed-y-header-scroller {\r\n    overflow-x: scroll;\r\n    margin-bottom: calc(var(--scrollbar-width) * -1);\r\n}\r\n\r\n.as-mobile-theme .as-table-scroller-fixed-y-header-scroller::-webkit-scrollbar,\r\n.as-mobile-theme .absol-table-scroller-header-hscroller-viewport::-webkit-scrollbar {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-table-scroller-horizontal-scroller-viewport {\r\n    overflow: hidden;\r\n    position: relative;\r\n}\r\n\r\n.as-table-scroller-horizontal-scroller {\r\n    overflow-x: scroll;\r\n    width: 100%;\r\n    box-sizing: border-box;\r\n    margin-bottom: calc(var(--scrollbar-width) * -1);\r\n}\r\n\r\n.absol-table-scroller-content {\r\n    position: relative;\r\n    overflow: hidden;\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n.absol-table-scroller-render-space {\r\n    position: fixed;\r\n    overflow: scroll;\r\n    left: 0;\r\n    top: 0;\r\n    max-width: calc(99vw - 30px);\r\n    max-height: calc(99vh - 30px);\r\n    opacity: 0;\r\n    z-index: -1000;\r\n    visibility: hidden;\r\n}\r\n\r\n\r\n.absol-table-scroller-viewport {\r\n    box-sizing: border-box;\r\n    overflow: scroll;\r\n    width: calc(100% + 17px);\r\n    height: calc(100% + 17px);\r\n    background-color: white;\r\n}\r\n\r\n.absol-table-scroller-fixed-viewport {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    z-index: 10;\r\n    overflow: hidden;\r\n    background-color: white;\r\n    /*pointer-events: none;*/\r\n}\r\n\r\n.absol-table-scroller-fixed-viewport > table > thead,\r\n.absol-table-scroller-fixed-viewport > table {\r\n    /*border-top-color: transparent !important;*/\r\n}\r\n\r\n.absol-table-scroller-fixed-hidden {\r\n    visibility: hidden !important;\r\n    opacity: 0 !important;\r\n    border-color: transparent !important;\r\n\r\n}\r\n\r\n.absol-table-scroller-header-hscroller {\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    right: 0;\r\n    z-index: 9;\r\n    overflow: hidden;\r\n    /*pointer-events: none;*/\r\n}\r\n\r\n.absol-table-scroller-header-hscroller-viewport {\r\n    max-width: 100%;\r\n    overflow-x: scroll;\r\n    margin-bottom: -17px; /*default*/\r\n    background-color: white;\r\n}\r\n\r\n.absol-table-scroller-header-hscroller-viewport table {\r\n    table-layout: fixed;\r\n}\r\n\r\n\r\n.absol-table-scroller-left-vscroller {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    bottom: 0;\r\n    z-index: 7;\r\n    /* width: 200px; */\r\n    overflow-x: hidden;\r\n    /*pointer-events: none;*/\r\n}\r\n\r\n.absol-table-scroller-left-vscroller-viewport {\r\n    max-height: 100%;\r\n    overflow-y: scroll;\r\n    min-width: calc(100% + 19px);\r\n    overflow-x: hidden;\r\n    background-color: white;\r\n}\r\n\r\n\r\n.absol-table-scroller-head-line,\r\n.absol-table-scroller-left-line {\r\n    z-index: 30;\r\n    /*pointer-events: none;*/\r\n    position: absolute;\r\n}\r\n\r\n.absol-table-scroller-head-line {\r\n    left: 0;\r\n    border-bottom: solid 2px rgb(169, 169, 170);\r\n    width: 100%;\r\n}\r\n\r\n.absol-table-scroller-left-line {\r\n    top: 0;\r\n    border-right: solid 2px rgb(169, 169, 170);\r\n    height: 100%;\r\n}\r\n\r\n\r\n.absol-table-scroller.as-scroll-vertical .absol-table-scroller-head-line {\r\n    width: 100%;\r\n}\r\n\r\n.absol-table-scroller.as-scroll-horizontal .absol-table-scroller-left-line {\r\n    height: 100%;\r\n}\r\n\r\n\r\n.absol-table-scroller:not(.as-scroll-vertical) .absol-table-scroller-head-line {\r\n    display: none;\r\n}\r\n\r\n.absol-table-scroller:not(.as-scroll-horizontal) .absol-table-scroller-left-line {\r\n    display: none;\r\n}\r\n\r\n\r\n.absol-table-scroller-vscrollbar-container {\r\n    position: absolute;\r\n    top: 0;\r\n    right: 0px;\r\n    width: 17px;\r\n    bottom: 0;\r\n    z-index: 31;\r\n}\r\n\r\n.absol-table-scroller-vscrollbar-container .absol-scrollbar-button {\r\n    left: 1px;\r\n    right: 1px;\r\n}\r\n\r\n\r\n.absol-table-scroller-vscrollbar-container > div,\r\n.absol-table-scroller-hscrollbar-container > div {\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n.absol-table-scroller-hscrollbar-container {\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    height: 17px;\r\n    bottom: 0;\r\n    z-index: 31;\r\n}\r\n\r\n\r\n.absol-table-scroller-hscrollbar-container .absol-scrollbar-button {\r\n    top: 1px;\r\n    bottom: 1px;\r\n}\r\n\r\n\r\n.absol-table-scroller:not(.as-scroll-vertical) .absol-table-scroller-vscrollbar-container {\r\n    display: none;\r\n}\r\n\r\n.absol-table-scroller:not(.as-scroll-horizontal) .absol-table-scroller-hscrollbar-container {\r\n    display: none;\r\n}\r\n\r\n\r\n.absol-table-scroller.as-scroll-horizontal .absol-table-scroller-vscrollbar-container {\r\n    bottom: 17px;\r\n}\r\n\r\n.absol-table-scroller.as-scroll-vertical .absol-table-scroller-hscrollbar-container {\r\n    right: 17px;\r\n}\r\n\r\n.absol-table-scroller-fixed-table {\r\n    table-layout: fixed;\r\n    box-sizing: border-box;\r\n\r\n}\r\n\r\n.absol-table-scroller-fixed-table *,\r\n.absol-table-scroller-header-hscroller * {\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-table-scroller .as-drag-zone {\r\n    cursor: move;\r\n}\r\n\r\n\r\n.absol-table-scroller tr.as-dragging {\r\n    position: relative;\r\n    z-index: 1;\r\n    -webkit-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    -moz-box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    box-shadow: 2px 2px 9px 0px rgba(20, 20, 20, 1);\r\n    opacity: 0.8;\r\n}\r\n\r\n.absol-table-scroller td.as-transparent-fix {\r\n    visibility: hidden;\r\n    opacity: 0;\r\n}\r\n\r\n.absol-table-scroller.as-dragging tbody tr:not(.as-dragging) {\r\n    transition: transform 0.1s;\r\n}\r\n\r\n\r\n.absol-table-scroller-viewport thead .as-rotated-text-anchor,\r\n.absol-table-scroller-fixed-viewport thead .as-rotated-text-anchor,\r\n.absol-table-scroller-left-vscroller thead .as-rotated-text-anchor {\r\n    display: none;\r\n}\r\n\r\n.absol-table-scroller .as-rotated-text-anchor {\r\n    white-space: nowrap;\r\n}\r\n\r\n\r\n.as-table-scroller-row-index::before {\r\n    content: attr(data-idx);\r\n}\r\n\r\n/*.absol-table-scroller.as-has-new-pos.as-dragging::before {*/\r\n/*    content: \"\";*/\r\n/*    position: absolute;*/\r\n/*    left: 0;*/\r\n/*    top: var(--new-pos-y);*/\r\n/*    right: 0;*/\r\n/*    border-top: 2px solid blue;*/\r\n/*    z-index: 8;*/\r\n/*    transition: top 0.1s;*/\r\n/*}*/\r\n\r\n", ""]);



/***/ }),

/***/ 44439:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-table-vscroller {\r\n    position: relative;\r\n    --tvs-scroll-padding-bottom: 1px;\r\n}\r\n\r\n.absol-table-vscroller-head {\r\n    position: absolute;\r\n    z-index: 2;\r\n    width: 300px;\r\n    height: 20px;\r\n    top: 0;\r\n    left: 0;\r\n}\r\n\r\n.absol-table-vscroller-head-line{\r\n    position: absolute;\r\n    left: 0;\r\n    z-index: 3;\r\n    pointer-events: none;\r\n    border-bottom:solid 2px rgb(169, 169, 170); \r\n    width: 100%;\r\n}\r\n\r\n.absol-table-vscroller.scroll-v .absol-table-vscroller-head-line{\r\n    width: calc(100% - 7px);\r\n}\r\n\r\n.absol-table-vscroller-viewport {\r\n    max-height: 100%;\r\n    padding-bottom: var(--tvs-scroll-padding-bottom);\r\n    padding-top: 1px;\r\n    overflow-y: auto;\r\n}\r\n\r\n.absol-table-vscroller-viewport > table{\r\n    box-sizing: border-box;\r\n    width: 100%;\r\n}", ""]);



/***/ }),

/***/ 79127:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-tabbar {\r\n    height: 2em;\r\n    white-space: nowrap;\r\n}\r\n\r\n\r\n.absol-tabbar .absol-hscroller-viewport {\r\n    overflow-y: hidden;\r\n}\r\n\r\n.absol-tabbar .absol-tabbar-button,\r\n.absol-tabbar .as-tab-bar-add-btn {\r\n    height: 100%;\r\n}\r\n\r\n/* .absol-tabbar .absol-scrollbar-container {\r\n    height: 5px;\r\n} */\r\n\r\n.absol-tabbar .absol-scrollbar-container.horizontal {\r\n    bottom: -2px;\r\n}\r\n\r\n.absol-tabbar .absol-scrollbar-container {\r\n    opacity: 0;\r\n    transition: opacity 0.2s;\r\n    background: rgba(169, 169, 169, 0.1);\r\n}\r\n\r\n.absol-tabbar:hover .absol-scrollbar-container,\r\n.absol-tabbar:active .absol-scrollbar-container {\r\n    opacity: 1;\r\n}\r\n\r\n.absol-tabbar .absol-scrollbar-button {\r\n    background-color: rgba(33, 33, 40, 0.1);\r\n}\r\n\r\n.absol-tabbar .absol-scrollbar-button:hover {\r\n    background-color: rgba(33, 33, 40, 0.3);\r\n}\r\n\r\n\r\n.absol-tabbar .absol-scrollbar-button:active,\r\n.absol-tabbar .absol-hscrollbar.absol-active .absol-scrollbar-button {\r\n    background-color: rgba(47, 47, 55, 0.4);\r\n\r\n}\r\n\r\n\r\n.absol-tabbar-button {\r\n    padding-left: 1em;\r\n    padding-right: 1em;\r\n    background-color: rgb(45, 45, 45);\r\n    color: rgb(200, 200, 200);\r\n    margin-right: 1px;\r\n    border: none;\r\n    outline: none;\r\n    font-size: 1em;\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-tab-bar-add-btn {\r\n    padding-left: 0.5em;\r\n    padding-right: 0.5em;\r\n    background-color: rgb(45, 45, 45);\r\n    color: rgb(200, 200, 200);\r\n    margin-right: 1px;\r\n    border: none;\r\n    outline: none;\r\n    font-size: 1em;\r\n    white-space: nowrap;\r\n}\r\n\r\n\r\n.as-tab-bar-button-ext-icon-ctn:empty {\r\n    display: none\r\n}\r\n\r\n.as-tab-bar-button-ext-icon-ctn {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    padding-right: 0.35em;\r\n    margin-left: -0.5em;\r\n}\r\n\r\n.absol-tabbar-button-text {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    max-width: 300px;\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n}\r\n\r\n.as-tab-bar-button-ext-icon-ctn span {\r\n    font-size: 1.2em;\r\n}\r\n\r\n\r\n.absol-tabbar .absol-tabbar-button-active {\r\n    background-color: rgb(30, 30, 30);\r\n    color: rgb(250, 250, 252);\r\n}\r\n\r\n.absol-tabbar-button-text,\r\n.absol-tabbar-button-icon-container > span {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    font-size: 1em;\r\n}\r\n\r\n.absol-tabbar-button .absol-tabbar-button-close,\r\n.absol-tabbar-button .absol-tabbar-button-close-circle {\r\n    visibility: hidden;\r\n    color: rgb(190, 190, 190);\r\n}\r\n\r\n.absol-tabbar-button.as-prevent-closing .absol-tabbar-button-close,\r\n.absol-tabbar-button.as-prevent-closing .absol-tabbar-button-close-circle {\r\n    visibility: hidden;\r\n}\r\n\r\n.absol-tabbar-button.as-prevent-closing .absol-tabbar-button-icon-container {\r\n    pointer-events: none;\r\n}\r\n\r\n.absol-tabbar-button-icon-container {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    margin-left: 0.5em;\r\n}\r\n\r\n\r\n.absol-tabbar-button:not(.as-prevent-closing):hover .absol-tabbar-button-close,\r\n.absol-tabbar-button-active:not(.as-prevent-closing) .absol-tabbar-button-close,\r\n.absol-tabbar-button:hover:not(.as-prevent-closing) .absol-tabbar-button-close-circle,\r\n.absol-tabbar-button-active:not(.as-prevent-closing) .absol-tabbar-button-close-circle {\r\n    visibility: visible;\r\n    color: red;\r\n}\r\n\r\n.absol-tabbar-button-active .absol-tabbar-button-modified-flag {\r\n    color: lightblue;\r\n}\r\n\r\n.absol-tabbar-button-modified-flag {\r\n    color: mediumaquamarine;\r\n}\r\n\r\n.absol-tabbar-button:not(.absol-tabbar-button-modified) .absol-tabbar-button-modified-flag,\r\n.absol-tabbar-button.absol-tabbar-button-modified:not(.active) .absol-tabbar-button-icon-container:hover .absol-tabbar-button-modified-flag,\r\n.absol-tabbar-button.absol-tabbar-button-modified .absol-tabbar-button-icon-container:not(:hover) .absol-tabbar-button-close,\r\n.absol-tabbar-button:not(.absol-tabbar-button-modified) .absol-tabbar-button-icon-container:not(:hover) .absol-tabbar-button-close-circle,\r\n.absol-tabbar-button:not(.absol-tabbar-button-modified) .absol-tabbar-button-icon-container:hover .absol-tabbar-button-close,\r\n.absol-tabbar-button.absol-tabbar-button-modified .absol-tabbar-button-close-circle,\r\n.absol-tabbar-button.absol-tabbar-button-modified .absol-tabbar-button-icon-container:not(:hover) .absol-tabbar-button-close {\r\n    display: none;\r\n}\r\n\r\n\r\n.absol-button-range {\r\n}\r\n\r\n\r\n.absol-tabview {\r\n    position: relative;\r\n}\r\n\r\n.as-tabview-title {\r\n    position: absolute;\r\n    padding: 5px 10px;\r\n    right: 0;\r\n    top: 0;\r\n    font-weight: bold;\r\n    font-size: 14px;\r\n    color: rgb(230, 230, 205);\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n\r\n.absol-tabview-container {\r\n    position: absolute;\r\n    top: 2em;\r\n    left: 0;\r\n    right: 0;\r\n    bottom: 0;\r\n    overflow: auto;\r\n    background-color: white;\r\n}\r\n\r\n\r\n.absol-tabview-container.absol-tabview-container-hidden {\r\n    z-index: -9999;\r\n    visibility: hidden;\r\n    opacity: 0;\r\n\r\n}\r\n\r\n.absol-tabview-container.absol-tabview-container-hidden *,\r\n.absol-tabview-container.absol-tabview-container-hidden {\r\n    pointer-events: none;\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n}\r\n\r\n\r\n.absol-tabview-container > div,\r\n.absol-tabview-container > pre {\r\n    width: 100%;\r\n    height: 100%;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-tabview-container > pre {\r\n    margin: 0;\r\n}\r\n\r\n.absol-frame > iframe {\r\n    border: none;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-tabview .absol-tabbar-button {\r\n    border-radius: 0.7em 0.7em 0 0;\r\n    height: 2em;\r\n    box-sizing: border-box;\r\n    border: solid 1px #ccc;\r\n    background-color: white;\r\n    color: black;\r\n    padding-left: 1em;\r\n    padding-right: 0.357em;\r\n    margin-right: 0.357em;\r\n}\r\n\r\n.absol-tabview .as-tab-bar-add-btn {\r\n    border-radius: 0.7em 0.7em 0 0;\r\n    height: 2em;\r\n    box-sizing: border-box;\r\n    border: solid 1px #ccc;\r\n    background-color: white;\r\n    color: black;\r\n}\r\n\r\n.absol-tabview .absol-tabbar {\r\n    height: 2em;\r\n    overflow-y: hidden;\r\n    border-bottom: 1px solid #ccc;\r\n    box-sizing: border-box;\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n}\r\n\r\n.absol-tabview .absol-tabbar-button-active {\r\n    background-color: #5bc0de;\r\n    border-color: #46b8da;\r\n    color: white;\r\n}\r\n\r\n/* .absol-tabview .absol-tabbar-button-close {\r\n    color: rgb(170, 170, 170);\r\n    line-height: 1.5em;\r\n    margin-left: 1em;\r\n    font-size: 1.3em;\r\n} */\r\n\r\n.absol-tabview .absol-tabbar-button-close:hover {\r\n    color: red;\r\n}\r\n\r\n\r\n/************** Mini version - like window form ***********************/\r\n\r\n.absol-tabview.xp-tiny .absol-tabbar {\r\n    height: 1.5em;\r\n    border-bottom: none;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tabbar-button,\r\n.absol-tabview.xp-tiny .as-tab-bar-add-btn {\r\n    height: 1.4em;\r\n    padding-left: 5px;\r\n    padding-right: 5px;\r\n    border-radius: 0;\r\n    vertical-align: bottom;\r\n    margin: 0.1em 0 0 0;\r\n    background-color: rgb(242, 242, 242);\r\n    color: black;\r\n    position: relative;\r\n}\r\n\r\n.absol-tabview.xp-tiny::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    top: calc(1.5em - 4px);\r\n    z-index: 0;\r\n    left: 0;\r\n    right: 0;\r\n    height: 4px;\r\n    border-bottom: solid 1px #ccc;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tabbar-button.absol-tabbar-button-active {\r\n    height: 1.5em;\r\n    margin-top: 0;\r\n    background-color: white;\r\n    border-top-color: #ccc;\r\n    border-left-color: #ccc;\r\n    border-right-color: #ccc;\r\n    border-bottom-color: white;\r\n}\r\n\r\n\r\n.absol-hscroller.absol-tabbar.disabled .absol-scrollbar-container {\r\n    visibility: hidden;\r\n}\r\n\r\n.absol-tabview.absol-tabview.xp-tiny .absol-tabbar-button-close {\r\n    line-height: 1.4em;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tabbar-button-icon-container {\r\n    display: none;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tabview-container {\r\n    top: 1.5em;\r\n}\r\n\r\n.absol-tabview.xp-tiny .absol-tab-absol {\r\n    border-left: solid 1px #ccc;\r\n    border-right: solid 1px #ccc;\r\n    border-bottom: solid 1px #ccc;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n.absol-tabview.as-without-close-button > .absol-tabbar .absol-tabbar-button .absol-tabbar-button-icon-container {\r\n    display: none;\r\n}\r\n\r\n.absol-tabview.as-without-close-button > .absol-tabbar .absol-tabbar-button {\r\n    padding-right: 1em;\r\n}\r\n\r\n.absol-tabview > .absol-tabbar .as-tab-bar-add-btn {\r\n    display: none;\r\n}\r\n\r\n.absol-tabview.as-has-add-btn > .absol-tabbar .as-tab-bar-add-btn {\r\n    display: inline-block;\r\n}\r\n\r\n\r\n/************************ Like Metro theme *********************/\r\n\r\n.absol-tabview.metro-flat > .absol-tabbar .absol-tabbar-button,\r\n.absol-tabview.metro-flat > .absol-tabbar .as-tab-bar-add-btn {\r\n    border-radius: 0;\r\n    margin-right: 0;\r\n    margin-left: 0;\r\n    border-left: none;\r\n    border-top: none;\r\n    border-bottom: none;\r\n    border-right: solid 1px rgba(169, 169, 169, 0.3);\r\n    font-size: 1em;\r\n}\r\n\r\n.absol-tabview.metro-flat > .absol-tabbar {\r\n    box-shadow: 0px -1px 0px 0px #ccc;\r\n}\r\n\r\n/************************ Round Out theme *********************/\r\n\r\n/*.absol-tabview.rond-out > .absol-tabbar .absol-tabbar-button*/\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar {\r\n    border-bottom: calc(0.1em + 1px) solid #3B4453;;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabview-container {\r\n    top: 2.1em;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar {\r\n    height: 2.1em;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button.absol-tabbar-button-active {\r\n    background-color: #3B4453;\r\n    color: white;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button {\r\n    background-color: #313946;\r\n    color: rgb(169, 169, 170);\r\n\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button::before,\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    bottom: 0;\r\n    width: 1em;\r\n    height: 1em;\r\n    z-index: 1;\r\n    background-size: cover;\r\n    background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMTYiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDguNDY2NjY2NCA0LjIzMzMzMzUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCguMTMzOTAzNjQgMCAwIC4yNzU0NTg5MSAtLjAzMjY2NDYxIC0uMDgwNjM0OTIpIiBkPSJNIDMxLjg1ODcxNiwwLjI5MjcyOTQxIFYgMTUuNjYxMDIzIEggMC4yNDM5NDExNyBDIDE1LjI0NzAyOCwxNS43NzU5MjkgMzEuMzU0NDkzLDExLjExODk1NiAzMS44NTg3MTYsMC4yOTI3Mjk0MSBaIiBzdHlsZT0icGFpbnQtb3JkZXI6ZmlsbCBtYXJrZXJzIHN0cm9rZTtmaWxsOiMzMTM5NDYiLz4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgtLjEzMzkwMzY0IDAgMCAuMjc1NDU4OTEgOC40OTkzMzE1IC0uMDgwNjM0OTIpIiBkPSJNIDMxLjg1ODcxNiwwLjI5MjcyOTQxIFYgMTUuNjYxMDIzIEggMC4yNDM5NDExNyBDIDE1LjI0NzAyOCwxNS43NzU5MjkgMzEuMzU0NDkzLDExLjExODk1NiAzMS44NTg3MTYsMC4yOTI3Mjk0MSBaIiBzdHlsZT0icGFpbnQtb3JkZXI6ZmlsbCBtYXJrZXJzIHN0cm9rZTtmaWxsOiMzMTM5NDYiLz4KIDwvZz4KPC9zdmc+Cg==');\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button.absol-tabbar-button-active::before,\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button.absol-tabbar-button-active::after,\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button.absol-tabbar-button-active {\r\n    z-index: 3;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button.absol-tabbar-button-active::before,\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button.absol-tabbar-button-active::after {\r\n    background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMTYiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDguNDY2NjY2NCA0LjIzMzMzMzUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCguMTMzOTAzNjQgMCAwIC4yNzU0NTg5MSAtLjAzMjY2NDYxIC0uMDgwNjM0OTIpIiBkPSJNIDMxLjg1ODcxNiwwLjI5MjcyOTQxIFYgMTUuNjYxMDIzIEggMC4yNDM5NDExNyBDIDE1LjI0NzAyOCwxNS43NzU5MjkgMzEuMzU0NDkzLDExLjExODk1NiAzMS44NTg3MTYsMC4yOTI3Mjk0MSBaIiBzdHlsZT0icGFpbnQtb3JkZXI6ZmlsbCBtYXJrZXJzIHN0cm9rZTtmaWxsOiMzQjQ0NTMiLz4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgtLjEzMzkwMzY0IDAgMCAuMjc1NDU4OTEgOC40OTkzMzE1IC0uMDgwNjM0OTIpIiBkPSJNIDMxLjg1ODcxNiwwLjI5MjcyOTQxIFYgMTUuNjYxMDIzIEggMC4yNDM5NDExNyBDIDE1LjI0NzAyOCwxNS43NzU5MjkgMzEuMzU0NDkzLDExLjExODk1NiAzMS44NTg3MTYsMC4yOTI3Mjk0MSBaIiBzdHlsZT0icGFpbnQtb3JkZXI6ZmlsbCBtYXJrZXJzIHN0cm9rZTtmaWxsOiMzQjQ0NTMiLz4KIDwvZz4KPC9zdmc+Cg==');\r\n}\r\n\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button {\r\n    position: relative;\r\n    margin-right: 0;\r\n    border: none;\r\n    border-radius: 0.8em 0.8em 0 0;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-hscroller-viewport {\r\n    padding-left: 1.2em;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button::before {\r\n    left: -0.98em;\r\n    background-position: left;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .absol-tabbar-button::after {\r\n    right: -0.98em;\r\n    background-position: right;\r\n\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .as-tab-bar-add-btn {\r\n    background-color: #313946;\r\n    color: rgb(169, 169, 170);\r\n    font-weight: bold;\r\n    border: 4px solid #222933;\r\n    border-radius: 0.8em 0.8em 0 0.8em;\r\n}\r\n\r\n.absol-tabview.cad-dark > .absol-tabbar .as-tab-bar-add-btn:active {\r\n    color: white;\r\n    background-color: #3B4453;\r\n    font-weight: bold;\r\n}", ""]);



/***/ }),

/***/ 26085:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-textarea2 {\r\n    overflow: hidden;\r\n    resize: none;\r\n    box-sizing: border-box;\r\n    --content-height: 1.425em;\r\n    height: var(--content-height);\r\n    font: inherit;\r\n}\r\n\r\n.absol-textarea2.as-border-none {\r\n    border: none;\r\n    outline: none;\r\n}\r\n\r\n.absol-textarea2:disabled {\r\n    background-color: var(--as-disabled-background-color);\r\n}", ""]);



/***/ }),

/***/ 74315:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-text-clipboard {\r\n    opacity: 0;\r\n    font-size: 1px;\r\n    height: 1px;\r\n    width: 1px;\r\n}", ""]);



/***/ }),

/***/ 74015:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".ac-time-input {\r\n    box-sizing: border-box;\r\n    height: calc(2em + 2px);\r\n    width: 9em;\r\n    border: solid 1px #d6d6d6;\r\n    border-radius: 2px;\r\n    font-size: 1rem;\r\n    outline: none;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    background-color: white;\r\n    position: relative;\r\n}\r\n\r\n.ac-time-input.as-disabled {\r\n    color: rgb(102, 102, 102);\r\n    pointer-events: none;\r\n}\r\n\r\n.ac-time-input.as-must-not-null .as-time-input-clear-btn {\r\n    display: none;\r\n}\r\n\r\n.ac-time-input.as-read-only.as-border-none {\r\n    border: none;\r\n}\r\n\r\n.ac-time-input.as-read-only.as-border-none .as-time-input-icon-btn {\r\n    display: none;\r\n}\r\n\r\n.ac-time-input.as-read-only.as-border-none input {\r\n    padding-left: 0;\r\n}\r\n\r\n.ac-time-input input {\r\n    font: inherit;\r\n    outline: none;\r\n    width: calc(100% - 2em - 2px);\r\n    height: 100%;\r\n    border: none;\r\n    display: block;\r\n    padding: 0 0 0 var(--as-input-horizontal-padding);\r\n    -webkit-user-select: auto;\r\n    user-select: auto;\r\n    -webkit-user-drag: none;\r\n    color: inherit;\r\n    box-sizing: border-box;\r\n    background-color: transparent;\r\n}\r\n\r\n.ac-time-input.as-disabled {\r\n    background-color: var(--as-disabled-background-color);\r\n}\r\n\r\n.as-time-input-icon-btn {\r\n    border-right: none;\r\n    border-top: none;\r\n    border-bottom: none;\r\n    border-left: 1px solid #ddd;\r\n    position: absolute;\r\n    padding: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    right: 0;\r\n    width: calc(2em + 1px);\r\n    box-sizing: border-box;\r\n    background-color: rgba(169, 169, 169, 0.1);\r\n    cursor: pointer;\r\n    border-radius: 0;\r\n    font-size: inherit;\r\n    color: inherit;\r\n}\r\n\r\n.ac-time-input.as-read-only .as-time-input-icon-btn {\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n.as-time-input-icon-btn > span {\r\n    font-size: calc(16em / 14);\r\n}\r\n\r\n\r\n.as-time-input-icon-btn:hover {\r\n    background-color: rgba(169, 169, 169, 0.25);\r\n}\r\n\r\n.as-time-input-icon-btn:active {\r\n    background-color: rgba(169, 169, 169, 0.5);\r\n}\r\n\r\n\r\n.as-time-input-icon-btn.as-disabled {\r\n    color: rgb(102, 102, 102);\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n.as-time-input-clear-btn {\r\n    font-size: inherit;\r\n    position: absolute;\r\n    right: calc(2em + 2px);\r\n    height: 2em;\r\n    top: calc(50% - 1em);\r\n    box-sizing: border-box;\r\n    background-color: transparent;\r\n    border: none;\r\n    color: #bbb;\r\n    visibility: hidden;\r\n}\r\n\r\n\r\n.ac-time-input.as-value-null .as-time-input-clear-btn {\r\n    display: none;\r\n}\r\n\r\n.as-time-input-clear-btn:hover {\r\n    color: rgb(132, 132, 132);\r\n}\r\n\r\n.as-time-input-clear-btn:active {\r\n    color: #525555;\r\n}\r\n\r\ninput:focus + .as-time-input-clear-btn,\r\n.ac-time-input .as-time-input-clear-btn {\r\n    visibility: visible;\r\n}\r\n\r\n.as-dropdown-box-common-style .as-time-input-picker {\r\n    border: none;\r\n    box-shadow: none;\r\n}\r\n\r\n\r\n/*.ac-time-input-picker-ctn {*/\r\n/*    position: fixed;*/\r\n/*}*/\r\n\r\n/*.ac-time-input > span {*/\r\n/*    font-size: 1em;*/\r\n/*    line-height: 2em;*/\r\n/*}*/\r\n\r\n/*.ac-time-input-picker-ctn-hidden {*/\r\n/*    z-index: -1000;*/\r\n/*    opacity: 0;*/\r\n/*    visibility: hidden;*/\r\n/*}*/\r\n\r\n/*.ac-time-input-picker-ctn-hidden:not(.absol-follower) {*/\r\n/*    transition: all 0.1s;*/\r\n/*}*/\r\n\r\n/*.ac-time-input.as-disabled {*/\r\n/*    color: rgb(102, 102, 102);*/\r\n/*    pointer-events: none;*/\r\n/*}*/", ""]);



/***/ }),

/***/ 78875:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".ac-time-picker {\r\n    /*like chrome-calender*/\r\n    display: inline-block;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    font-size: 1rem;\r\n    padding: 0.6em;\r\n    border: solid 1px rgb(191, 191, 191);\r\n    box-shadow: 1px 1px 2px rgb(240, 240, 240);\r\n    z-index: 100;\r\n    touch-action: manipulation;\r\n    user-select: none;\r\n    background-color: rgb(255, 255, 255);\r\n    white-space: initial;\r\n}\r\n\r\n\r\n@media screen and (orientation: portrait) {\r\n    .ac-time-picker.ac-time-picker-touch {\r\n        font-size: 5vw;\r\n    }\r\n}\r\n\r\n@media screen and (orientation: landscape) {\r\n    .ac-time-picker.ac-time-picker-touch {\r\n        font-size: 4vh;\r\n    }\r\n}\r\n\r\n\r\n.ac-time-picker:not(.ac-time-picker-clock-mode) .ac-time-picker-set-clock,\r\n.ac-time-picker:not(.ac-time-picker-clock-mode) .ac-time-picker-keyboard-btn,\r\n.ac-time-picker:not(.ac-time-picker-touch) .ac-time-picker-keyboard-btn,\r\n.ac-time-picker:not(.ac-time-picker-time-mode) .ac-time-picker-set-time,\r\n.ac-time-picker:not(.ac-time-picker-time-mode) .ac-time-picker-clock-btn {\r\n    display: none;\r\n}\r\n\r\n.ac-time-picker-set-clock-header {\r\n    font-size: 2.8em;\r\n    text-align: center;\r\n    min-width: 4.28571428571em;\r\n    font-weight: bold;\r\n\r\n}\r\n\r\n.ac-time-picker-set-clock-header > span {\r\n    font-size: inherit;\r\n}\r\n\r\n.ac-time-picker-clock {\r\n    width: 12em;\r\n    height: 12em;\r\n}\r\n\r\n.ac-time-picker-clock-hour-pm {\r\n    fill: rgb(20, 20, 20);\r\n    font-size: 0.7em;\r\n}\r\n\r\n\r\n.ac-time-picker-clock-hour-am {\r\n    fill: black;\r\n    font-size: 0.8em;\r\n}\r\n\r\n.ac-time-picker-clock-minute {\r\n    fill: black;\r\n    font-size: 0.8em;\r\n}\r\n\r\n\r\n.ac-time-picker-clock-center,\r\n.ac-time-picker-clock-select-circle {\r\n    fill: rgb(115, 166, 248);\r\n}\r\n\r\n.ac-time-picker-clock-select-center {\r\n    fill: white;\r\n}\r\n\r\n.ac-time-picker-clock-select-line {\r\n    stroke-width: 1;\r\n    stroke: rgb(115, 166, 248);\r\n}\r\n\r\n\r\n.ac-time-picker-hour,\r\n.ac-time-picker-minute {\r\n    outline: none;\r\n}\r\n\r\n.ac-time-picker-edit-hour .ac-time-picker-hour,\r\n.ac-time-picker-edit-minute .ac-time-picker-minute {\r\n    color: rgb(62, 125, 189);\r\n}\r\n\r\n.ac-time-picker:not(.ac-time-picker-edit-hour) .ac-time-picker-clock-hour-ctn,\r\n.ac-time-picker:not(.ac-time-picker-edit-minute) .ac-time-picker-clock-minute-ctn {\r\n    visibility: hidden;\r\n}\r\n\r\n.ac-time-picker:not(.ac-time-picker-edit-hour):not(.ac-time-picker-edit-minute) .ac-time-picker-clock {\r\n    display: none;\r\n}\r\n\r\n.ac-time-picker-hour:empty::before,\r\n.ac-time-picker-minute:empty::before {\r\n    content: \"0\";\r\n    display: inline;\r\n}\r\n\r\n.ac-time-picker-footer {\r\n    display: block;\r\n    position: relative;\r\n    min-height: 1.5em;\r\n    min-width: 12em;\r\n}\r\n\r\n.ac-time-picker-footer-right {\r\n    position: absolute;\r\n    right: 0;\r\n    top: 0;\r\n}\r\n\r\n.ac-time-picker-footer button {\r\n    font-size: 1em;\r\n    height: 1.5em;\r\n    padding-top: 0;\r\n    padding-bottom: 0;\r\n    border: none;\r\n    background-color: transparent;\r\n    outline: none;\r\n    padding-left: 0.3em;\r\n    padding-right: 0.3em;\r\n}\r\n\r\n.ac-time-picker-footer button:hover,\r\n.ac-time-picker-footer button:focus {\r\n    background-color: rgba(170, 170, 170, 0.3);\r\n}\r\n\r\n.ac-time-picker-footer > button {\r\n    margin-right: 1em;\r\n}\r\n\r\n.ac-time-picker-footer-right > button {\r\n    margin-left: 1em;\r\n}\r\n\r\n\r\n.ac-time-picker-footer button .mdi {\r\n    font-size: 1.3em;\r\n}\r\n\r\n\r\n/* .ac-time-picker:not(.ac-time-picker-touch) .ac-time-picker-keyboard-btn {\r\n    display: none;\r\n} */\r\n\r\n/* keyboard-outline */\r\n\r\n.ac-time-picker-set-time-header {\r\n    font-size: 1.4em;\r\n    font-weight: bold;\r\n    margin-bottom: 1em;\r\n}\r\n\r\n.ac-time-picker-set-time-label {\r\n    font-size: 1em;\r\n    font-weight: bold;\r\n    margin-bottom: 0.3em;\r\n}\r\n\r\n.ac-time-picker-set-time-input-group {\r\n    margin-bottom: 0.3em;\r\n    font-size: 1em;\r\n    white-space: nowrap;\r\n}\r\n\r\n.ac-time-picker-set-time-input-hm > input {\r\n    height: 1.2em;\r\n    line-height: 1.2em;\r\n    width: 2em;\r\n    text-align: center;\r\n    font-size: 1em;\r\n    border-top: none;\r\n    border-left: none;\r\n    border-right: none;\r\n    border-bottom: 1px solid rgb(70, 70, 72);\r\n    outline: none;\r\n}\r\n\r\n.ac-time-picker-set-time-input-label-hm {\r\n    font-size: 1em;\r\n    white-space: nowrap;\r\n\r\n}\r\n\r\n.ac-time-picker-set-time-input-label-hm span {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    font-size: 1em;\r\n\r\n}\r\n\r\n\r\n.ac-time-picker-set-time-input-label-hm > span:first-child {\r\n    width: 2em;\r\n}", ""]);



/***/ }),

/***/ 22652:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-time-range-24-input {\r\n    white-space: nowrap;\r\n    display: inline-block;\r\n    min-width: 318px;\r\n}\r\n\r\n.as-time-range-24-input > div:first-child {\r\n    margin-right: 10px;\r\n}\r\n\r\n\r\n.as-time-range-24-input.as-read-only.as-border-none .ac-time-input {\r\n    display: none;\r\n}\r\n\r\n.as-time-range-24-input.as-read-only.as-border-none::after{\r\n    content: attr(data-text);\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n}\r\n\r\n.as-time-range-24-input.as-read-only.as-border-none::before{\r\n    content: \"\";\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n    height: calc(2em + 2px);\r\n}\r\n\r\n\r\n.as-chrome-time-24-picker-follower .as-chrome-time-24-picker {\r\n    border: none;\r\n    box-shadow: none;\r\n}", ""]);



/***/ }),

/***/ 50475:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-time-select-input {\r\n    display: inline-block;\r\n    position: relative;\r\n    height: calc(2em + 2px);\r\n    border: solid 1px #d6d6d6;\r\n    border-radius: 2px;\r\n    box-sizing: border-box;\r\n    cursor: pointer;\r\n    font-size: 1rem;\r\n    outline: none;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    white-space: nowrap;\r\n    padding-right: 30px;\r\n    --list-min-width: unset;\r\n    width: calc(var(--list-min-width) + 2em + 2px);\r\n    min-width: calc(var(--list-min-width) + 2em + 2px);\r\n}\r\n\r\n.as-time-select-input.as-disabled {\r\n    pointer-events: none;\r\n    background-color: #ebebe4;\r\n}\r\n\r\n.as-time-select-input-text {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    height: 100%;\r\n    width: 100%;\r\n    outline: none;\r\n    border: none;\r\n    box-sizing: border-box;\r\n    padding-left: 10px;\r\n    padding-right: 0;\r\n    background-color: transparent;\r\n    font-size: inherit;\r\n}", ""]);



/***/ }),

/***/ 1449:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-toast-list {\r\n    position: fixed;\r\n    z-index: 1100000000;\r\n    width: 25em;\r\n    max-height: calc(100vh - 20px);\r\n    overflow-y: auto;\r\n}\r\n\r\n.as-toast-list > .as-toast {\r\n    box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.35);\r\n}\r\n\r\n\r\n.as-toast-list.as-se {\r\n    bottom: 10px;\r\n    right: 10px;\r\n}\r\n\r\n.as-toast-list.as-sw {\r\n    bottom: 10px;\r\n    left: 10px;\r\n}\r\n\r\n.as-toast-list.as-ne {\r\n    top: 10px;\r\n    right: 10px;\r\n}\r\n\r\n.as-toast-list.as-nw {\r\n    top: 10px;\r\n    left: 10px;\r\n}\r\n\r\n\r\n.as-toast-list.as-sc {\r\n    bottom: 10px;\r\n    left: calc(50% - 177px);\r\n}\r\n\r\n.as-toast-list:empty {\r\n    visibility: hidden;\r\n}\r\n\r\n.as-toast-list.as-ne > .as-toast,\r\n.as-toast-list.as-nw > .as-toast {\r\n    margin-bottom: 5px;\r\n}\r\n\r\n.as-toast-list.as-sc > .as-toast,\r\n.as-toast-list.as-se > .as-toast,\r\n.as-toast-list.as-sw > .as-toast {\r\n    margin-top: 5px;\r\n}\r\n\r\n\r\n.as-toast {\r\n    display: block;\r\n    max-width: calc(100vw - 20px);\r\n    overflow: hidden;\r\n    background-color: white;\r\n    background-clip: padding-box;\r\n    border: 1px solid rgba(0, 0, 0, 0.1);\r\n    font-family: Roboto, sans-serif;\r\n    font-size: 1rem;\r\n}\r\n\r\n.as-toast-header {\r\n    display: flex;\r\n    display: -ms-flex;\r\n    -ms-flex-align: center;\r\n    align-items: center;\r\n    padding: 0.25em 0.75em;\r\n    color: #6c757d;\r\n    background-clip: padding-box;\r\n    border-bottom: 1px solid rgba(0, 0, 0, 0.05);\r\n}\r\n\r\n.as-toast-header strong {\r\n    text-align: left;\r\n    margin-right: auto;\r\n}\r\n\r\n.as-toast-variant-color {\r\n    margin-right: 0.5em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    background-color: var(--variant-color-primary);\r\n    width: 1.25em;\r\n    height: 1.25em;\r\n}\r\n\r\n\r\n.as-toast-close-btn {\r\n    padding: 0;\r\n    background-color: transparent;\r\n    border: none;\r\n    outline: none;\r\n    color: inherit;\r\n    margin-left: 0.25em;\r\n    margin-bottom: 0.25em;\r\n    font-size: inherit;\r\n}\r\n\r\n.as-toast-close-btn:hover {\r\n    color: black;\r\n}\r\n\r\n.as-toast-close-btn span {\r\n    font-size: 1.5em;\r\n    text-shadow: 0 1px 0 currentColor;\r\n}\r\n\r\n.as-toast-body {\r\n\r\n}\r\n\r\n.as-toast-message {\r\n    padding: 0.75em;\r\n}\r\n\r\n\r\n.as-toast.as-not-appeared {\r\n    opacity: 0;\r\n    transition: opacity 0.2s;\r\n}\r\n\r\n.as-toast.as-not-appeared.as-appearing {\r\n    opacity: 1;\r\n}\r\n\r\n.as-toast.as-appeared {\r\n    transition: opacity 0.5s;\r\n    opacity: 1;\r\n}\r\n\r\n.as-toast.as-disappearing {\r\n    opacity: 0;\r\n}\r\n\r\n.as-toast.as-variant-sticky-note {\r\n    background-color: #ffff88;\r\n}\r\n\r\n\r\n.as-toast.as-variant-sticky-note .as-toast-variant-color,\r\n.as-toast.as-variant-background .as-toast-variant-color {\r\n    display: none;\r\n}\r\n\r\n.as-toast.as-variant-sticky-note .as-toast-title {\r\n    color: #1e1ec8;\r\n}", ""]);



/***/ }),

/***/ 30238:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-toc-list {\r\n\r\n}\r\n\r\n.as-toc-list.as-searching .as-toc-list-body,\r\n.as-toc-list:not(.as-searching) .as-toc-list-searching {\r\n    display: none;\r\n}\r\n\r\n.as-toc-item {\r\n    font-size: 14px;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    display: flex;\r\n    height: 30px;\r\n    align-items: stretch;\r\n    --level: 0;\r\n}\r\n\r\n.as-toc-item:not(.as-status-close) .as-toc-item-toggle-ico-ctn .toggle-close,\r\n.as-toc-item:not(.as-status-open) .as-toc-item-toggle-ico-ctn .toggle-open {\r\n    display: none;\r\n}\r\n\r\n.as-toc-item.as-status-none .as-toc-item-toggle-ico-ctn {\r\n    visibility: hidden;\r\n}\r\n\r\n.as-toc-item.as-active {\r\n    background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n\r\n.as-toc-item:hover {\r\n    background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.as-toc-item > div {\r\n    white-space: nowrap;\r\n    width: 30px;\r\n}\r\n\r\n.as-toc-item > div::before,\r\n.as-toc-item > div > * {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-toc-item > div::before {\r\n    content: \"\";\r\n    height: 100%;\r\n}\r\n\r\n.as-toc-item-name-ctn {\r\n    flex-grow: 1;\r\n\r\n}\r\n\r\n.as-toc-item-name {\r\n    user-select: none;\r\n    max-width: 100%;\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n}\r\n\r\ndiv.as-toc-item-toggle-ico-ctn {\r\n    padding-left: calc(20px * var(--level));\r\n    box-sizing: content-box !important;\r\n}\r\n\r\n.as-toc-item-toggle-ico-ctn .toggler-ico {\r\n    width: 0.7em;\r\n    height: 0.7em;\r\n}\r\n\r\n.as-toc-item-toggle-ico-ctn .toggler-ico path {\r\n    fill: rgb(104, 104, 104);\r\n}\r\n\r\n.as-toc-item-ext-icon-ctn:empty {\r\n    display: none;\r\n}\r\n\r\n.as-toc-item-ext-icon-ctn > img,\r\n.as-toc-item-ext-icon-ctn > svg {\r\n    width: 20px;\r\n    height: 20px;\r\n}\r\n\r\n.as-toc-item-ext-icon-ctn > span {\r\n    font-size: 20px;\r\n}\r\n\r\n\r\n.as-toc-item-toggle-ico-ctn,\r\n.as-toc-item-check-ctn,\r\n.as-toc-item-quick-menu-ctn,\r\n.as-toc-item-ext-icon-ctn {\r\n    text-align: center;\r\n    width: 30px;\r\n}\r\n\r\n.as-toc-item-quick-menu-ctn span {\r\n    font-size: 20px;\r\n}\r\n\r\n.as-toc-item-quick-menu-ctn button {\r\n    border: none;\r\n    background-color: transparent;\r\n    padding: 0;\r\n    width: 24px;\r\n    height: 24px;\r\n}\r\n\r\n.as-toc-item-quick-menu-ctn button.as-quick-menu-attached {\r\n    background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n.as-toc-item-quick-menu-ctn button:hover {\r\n    background-color: var(--icon-background-cover-hover);\r\n}\r\n\r\n.as-toc-item:not(.as-has-quick-menu) .as-toc-item-quick-menu-ctn {\r\n    visibility: hidden;\r\n    pointer-events: none;\r\n    opacity: 0;\r\n}\r\n\r\n.as-toc-item-name-ctn input {\r\n    font: inherit;\r\n    border: none;\r\n    /*background-color: transparent;*/\r\n    width: 8px;\r\n    padding-left: 2px;\r\n    padding-right: 2px;\r\n    margin-left: -2px;\r\n    margin-right: -2px;\r\n    outline: none;\r\n    box-sizing: content-box;\r\n    background-color: #5bc0de;\r\n    max-width: 100%;\r\n}\r\n\r\n.as-toc-item:not(.as-renaming) .as-toc-item-name-ctn input,\r\n.as-toc-item.as-renaming .as-toc-item-name {\r\n    display: none;\r\n}\r\n", ""]);



/***/ }),

/***/ 63519:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-token-field {\r\n    font-size: 1rem;\r\n    border: 1px solid #dddddd;\r\n}\r\n\r\n.as-token-field-input-text {\r\n    font: inherit;\r\n    padding: 0;\r\n    box-sizing: border-box;\r\n    min-width: 4.3em;\r\n    border: none;\r\n    outline: none;\r\n    height: var(--select-box-item-height);\r\n    line-height: var(--select-box-item-height);\r\n    vertical-align: top;\r\n    margin-top: 2px;\r\n}\r\n\r\n.absol-selectbox-item.as-token-field-item {\r\n    font: inherit;\r\n    margin: 2px;\r\n    outline: none;\r\n}\r\n\r\n.as-token-field-item:focus {\r\n    background-color: var(--select-box-focus-item-color);\r\n}\r\n", ""]);



/***/ }),

/***/ 54771:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-tokenize-hyper-input {\r\n    margin: 0;\r\n    padding: 0;\r\n    white-space: pre-wrap;\r\n    -moz-user-modify: read-write;\r\n    -webkit-user-modify: read-write;\r\n    word-break: normal;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n}\r\n\r\n\r\n.as-emoji-token{\r\n    font-size: inherit;\r\n    overflow: hidden;\r\n    box-sizing: border-box;\r\n    display: inline;\r\n    white-space: pre;\r\n    background-size: 1.2em;\r\n    background-position:left;\r\n    background-repeat: no-repeat;\r\n}\r\n\r\n.as-tag-token{\r\n    font-size: inherit;\r\n    display: inline;\r\n    white-space: pre;\r\n    font-weight: bold;\r\n    color: #1e1ec8;\r\n}\r\n\r\n\r\n\r\n", ""]);



/***/ }),

/***/ 70095:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ":root {\r\n    --tool-tip-arrow-pos: 50%;\r\n    --tool-tip-background-color: gray;\r\n    --tool-tip-text-color: white;\r\n}\r\n\r\n.absol-tooltip {\r\n    margin: 0;\r\n    position: relative;\r\n    box-sizing: border-box;\r\n    display: inline-block;\r\n    color: var(--tool-tip-text-color);\r\n}\r\n\r\n.absol-tooltip-content {\r\n    display: block;\r\n    border-radius: 0.25em;\r\n    background-color: var(--tool-tip-background-color);\r\n    padding: 0.25em 0.5em;\r\n    font-size: inherit;\r\n}\r\n\r\n\r\n.absol-tooltip-arrow {\r\n    width: 0;\r\n    height: 0;\r\n    position: absolute;\r\n    box-sizing: content-box;\r\n    font-size: inherit;\r\n}\r\n\r\n.absol-tooltip.top .absol-tooltip-arrow {\r\n    border-left: 0.4em solid transparent;\r\n    border-right: 0.3em solid transparent;\r\n\r\n    border-top: 0.3em solid var(--tool-tip-background-color);\r\n    bottom: 0;\r\n    left: calc(var(--tool-tip-arrow-pos) - 0.3em);\r\n}\r\n\r\n\r\n.absol-tooltip.top {\r\n    padding-bottom: 0.28em;\r\n}\r\n\r\n\r\n.absol-tooltip.bottom .absol-tooltip-arrow {\r\n    border-left: 0.3em solid transparent;\r\n    border-right: 0.4em solid transparent;\r\n    border-bottom: 0.3em solid var(--tool-tip-background-color);\r\n\r\n    top: 0;\r\n    left: calc(var(--tool-tip-arrow-pos) - 0.3em);\r\n}\r\n\r\n.absol-tooltip.bottom {\r\n    padding-top: 0.28em;\r\n}\r\n\r\n\r\n.absol-tooltip.left .absol-tooltip-arrow {\r\n    border-top: 0.3em solid transparent;\r\n    border-bottom: 0.4em solid transparent;\r\n    border-left: 0.4em solid var(--tool-tip-background-color);\r\n\r\n    right: 0;\r\n    top: calc(var(--tool-tip-arrow-pos) - 0.3em);\r\n}\r\n\r\n.absol-tooltip.left {\r\n    padding-right: 0.38em;\r\n}\r\n\r\n\r\n.absol-tooltip.right .absol-tooltip-arrow {\r\n    border-top: 0.4em solid transparent;\r\n    border-bottom: 0.4em solid transparent;\r\n    border-right: 0.4em solid var(--tool-tip-background-color);\r\n\r\n    left: 0;\r\n    top: calc(var(--tool-tip-arrow-pos) - 0.3em);\r\n}\r\n\r\n.absol-tooltip.ne .absol-tooltip-arrow {\r\n    border-top: 0.3em solid transparent;\r\n    border-bottom: 0.4em solid transparent;\r\n    border-left: 0.4em solid var(--tool-tip-background-color);\r\n    bottom: -0.3em;\r\n    left: 0;\r\n}\r\n\r\n.absol-tooltip.nw .absol-tooltip-arrow {\r\n    border-top: 0.3em solid transparent;\r\n    border-bottom: 0.4em solid transparent;\r\n    border-right: 0.4em solid var(--tool-tip-background-color);\r\n    bottom: -0.3em;\r\n    right: 0;\r\n}\r\n\r\n.absol-tooltip.se .absol-tooltip-arrow {\r\n    border-top: 0.3em solid transparent;\r\n    border-bottom: 0.4em solid transparent;\r\n    border-left: 0.4em solid var(--tool-tip-background-color);\r\n    top: -0.3em;\r\n    left: 0;\r\n}\r\n\r\n.absol-tooltip.sw .absol-tooltip-arrow {\r\n    border-top: 0.3em solid transparent;\r\n    border-bottom: 0.4em solid transparent;\r\n    border-right: 0.4em solid var(--tool-tip-background-color);\r\n    top: -0.25em;\r\n    right: 0;\r\n}\r\n\r\n.absol-tooltip.right {\r\n    padding-left: 0.38em;\r\n}\r\n\r\n\r\n.absol-tooltip-root {\r\n    position: relative;\r\n    width: 0;\r\n    height: 0;\r\n}\r\n\r\n.absol-tooltip-root-holder {\r\n    position: fixed;\r\n    z-index: 100000000;\r\n    left: 0;\r\n    top: 0;\r\n}\r\n\r\n.as-copyable-icon-tooltip {\r\n    font-size: inherit;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    color: #428bca;\r\n    border: none;\r\n    padding: 0;\r\n    margin: 0;\r\n    background-color: transparent;\r\n}\r\n\r\n.as-copyable-icon-tooltip:hover {\r\n    background-color: var(--as-transparent-button-hover-color);\r\n}\r\n\r\n.as-copyable-icon-tooltip:active {\r\n    background-color: var(--as-transparent-button-active-color);\r\n}\r\n\r\n.as-cit-icon {\r\n    font-size: inherit;\r\n    color: inherit;\r\n    display: block;\r\n}\r\n\r\n.as-cit-icon::before {\r\n    display: block;\r\n}\r\n", ""]);



/***/ }),

/***/ 61048:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-trackbar {\r\n    height: 1.2em;\r\n    min-width: 7em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    -webkit-touch-callout: none;\r\n    -webkit-user-select: none;\r\n    -khtml-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    user-select: none;\r\n    padding: 0 0.6em;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-trackbar-line {\r\n    display: block;\r\n    position: relative;\r\n    margin-top: 0.4em;\r\n    height: 0.4em;\r\n    background-color: rgb(200, 200, 200);\r\n    -webkit-box-shadow: 0 0 0.2em 0.1em rgb(160, 160, 160) inset;\r\n    -moz-box-shadow: 0 0 0.2em 0.1em rgb(160, 160, 160) inset;\r\n    box-shadow: 0 0 0.2em 0.1em rgb(160, 160, 160) inset;\r\n    border-radius: 0.15em;\r\n}\r\n\r\n.absol-trackbar-button {\r\n    position: absolute;\r\n    z-index: 1;\r\n    top: -0.4em;\r\n    /* bottom: -0.4em; */\r\n    height: 1.2em;\r\n    left: 0;\r\n    margin-left: -0.6em;\r\n    width: 1.2em;\r\n    background: rgb(245, 245, 245);\r\n    border-radius: 50%;\r\n    border: solid 1px rgb(139, 139, 139);\r\n}\r\n\r\n.absol-trackbar:not(.as-read-only) .absol-trackbar-button,\r\n.absol-trackbar:not(.as-read-only) .absol-trackbar-line {\r\n    cursor: pointer;\r\n}\r\n\r\n.absol-trackbar.as-disabled {\r\n    pointer-events: none;\r\n}\r\n\r\n.absol-trackbar.as-disabled .absol-trackbar-button {\r\n    background: rgb(225, 225, 225);\r\n    border: solid 1px rgb(200, 200, 200);\r\n}\r\n\r\n.absol-trackbar.as-disabled .absol-trackbar-line {\r\n    background-color: rgb(220, 220, 220);\r\n    -webkit-box-shadow: 0 0 0.2em 0.1em rgb(200, 200, 200) inset;\r\n    -moz-box-shadow: 0 0 0.2em 0.1em rgb(200, 200, 200) inset;\r\n    box-shadow: 0 0 0.2em 0.1em rgb(200, 200, 200) inset;\r\n}", ""]);



/***/ }),

/***/ 64178:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-trackbar-input {\r\n    box-sizing: border-box;\r\n    display: inline-block;\r\n    white-space: nowrap;\r\n    position: relative;\r\n    min-width: 13.5em;\r\n    height: 2em;\r\n    --input-width: 4em;\r\n    font-size: 1rem;\r\n}\r\n\r\n.absol-trackbar-input::after {\r\n    content: \"\";\r\n    vertical-align: middle;\r\n    height: 100%;\r\n}\r\n\r\n.absol-trackbar-input > .absol-trackbar {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    width: calc(100% - var(--input-width) - 5px);\r\n}\r\n\r\n\r\n.absol-trackbar-input > .as-flexicon-input {\r\n    width: var(--input-width);\r\n    vertical-align: middle;\r\n    height: 2em;\r\n    box-sizing: border-box;\r\n    margin-left: 5px;\r\n}\r\n\r\n.absol-trackbar-input.as-disabled {\r\n    pointer-events: none;\r\n    color: #777777;\r\n\r\n}\r\n\r\n.absol-trackbar-input input {\r\n    color: inherit;\r\n    font-size: inherit;\r\n}\r\n\r\n.absol-trackbar-input.as-border-none .as-flexicon-input {\r\n    border: none;\r\n}", ""]);



/***/ }),

/***/ 70194:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-tree-chart * {\r\n    box-sizing: border-box;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n\r\n}\r\n\r\n.as-tree-chart {\r\n    --root-background-color: #ED7D31;\r\n    --root-text-color: white;\r\n\r\n    --vert-node-background-color: #4472C4;\r\n    --vert-node-text-color: white;\r\n\r\n    --horz-node-background-color: #A9D18E;\r\n    --horz-node-text-color: black;\r\n\r\n    --leaf-node-background-color: #F8CBAD;\r\n    --leaf-node-text-color: black;\r\n\r\n\r\n    font-size: 1rem;\r\n    display: inline-block;\r\n}\r\n\r\n.as-tree-chart-node {\r\n    display: inline-block;\r\n    white-space: normal;\r\n    vertical-align: top;\r\n    position: relative;\r\n}\r\n\r\n.as-tree-chart-content-ctn {\r\n    text-align: center;\r\n    position: relative;\r\n}\r\n\r\n.as-tree-chart-node[data-level=\"0\"] >.as-tree-chart-content-ctn> .as-tree-chart-content {\r\n    background-color: var(--root-background-color);\r\n    color: var(--root-text-color);\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-child-ctn .as-tree-chart-content{\r\n    background-color: var(--horz-node-background-color);\r\n    color: var(--horz-node-text-color);\r\n}\r\n\r\n.as-tree-chart-node.as-is-leaf >.as-tree-chart-content-ctn> .as-tree-chart-content {\r\n    background-color: var(--leaf-node-background-color);\r\n    color: var(--leaf-node-text-color);\r\n}\r\n\r\n\r\n\r\n.as-tree-chart-content {\r\n    padding: 5px;\r\n    border-radius: 4px;\r\n    border: 1px solid black;\r\n    text-align: center;\r\n    position: relative;\r\n    display: inline-block;\r\n    background-color: var(--vert-node-background-color);\r\n    color: var(--vert-node-text-color);\r\n}\r\n\r\n.as-tree-chart-icon,\r\n.as-tree-chart-text {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-tree-chart-icon {\r\n    font-size: 1.25em;\r\n    padding-right: 0.25em;\r\n}\r\n\r\n.as-tree-chart-node.as-has-children > .as-tree-chart-content-ctn {\r\n    padding-bottom: 10px;\r\n}\r\n\r\n.as-tree-chart-node.as-has-children > .as-tree-chart-content-ctn::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    bottom: 0;\r\n    left: 50%;\r\n    height: 10px;\r\n    border-left: 1px solid black;\r\n}\r\n\r\n.as-tree-chart-child-ctn {\r\n    white-space: nowrap;\r\n    padding-top: 10px;\r\n    text-align: center;\r\n    vertical-align: top;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-tree-chart-node:not(.as-horizontal) > .as-tree-chart-child-ctn > .as-tree-chart-node:not(:last-child) {\r\n    margin-right: 10px;\r\n}\r\n\r\n.as-tree-chart-child-ctn > .as-tree-chart-node:not(:first-child):not(:last-child)::before {\r\n    content: \"\";\r\n    border-top: 1px solid black;\r\n    position: absolute;\r\n    left: 0;\r\n    right: -10px;\r\n    top: -10px;\r\n}\r\n\r\n.as-tree-chart-child-ctn > .as-tree-chart-node:first-child:not(:last-child)::before {\r\n    content: \"\";\r\n    border-top: 1px solid black;\r\n    position: absolute;\r\n    left: 50%;\r\n    right: -10px;\r\n    top: -10px;\r\n}\r\n\r\n.as-tree-chart-child-ctn > .as-tree-chart-node > .as-tree-chart-content-ctn .as-tree-chart-content::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 50%;\r\n    height: 10px;\r\n    top: -11px;\r\n    border-left: 1px solid black;\r\n}\r\n\r\n.as-tree-chart-child-ctn > .as-tree-chart-node:not(:first-child):last-child > .as-tree-chart-content-ctn::before {\r\n    content: \"\";\r\n    border-top: 1px solid black;\r\n    position: absolute;\r\n    left: 0;\r\n    width: calc(50% + 1px);\r\n    top: -10px;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-child-ctn .as-tree-chart-content {\r\n    text-align: left;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal > .as-tree-chart-content-ctn .as-tree-chart-content {\r\n    display: block;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-node {\r\n    display: block;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-child-ctn {\r\n    padding-left: 20px;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-child-ctn .as-tree-chart-content-ctn {\r\n    text-align: left;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-content-ctn::after {\r\n    left: 10px;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-node:not(:last-child)::before {\r\n    right: unset;\r\n    bottom: 0;\r\n    border-top: none;\r\n    border-left: 1px solid black;\r\n    left: -10px;\r\n    height: unset;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-child-ctn > .as-tree-chart-node > .as-tree-chart-content-ctn .as-tree-chart-content::before {\r\n    border-left: none;\r\n    border-top: 1px solid black;\r\n    left: -10px;\r\n    width: 10px;\r\n    top: 50%;\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-node:last-child > .as-tree-chart-content-ctn::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: -10px;\r\n    top: -10px;\r\n    height: calc(50% + 10px);\r\n    border-top: none;\r\n    border-left: 1px solid black;\r\n    /*width: unset;*/\r\n}\r\n\r\n.as-tree-chart-node.as-horizontal .as-tree-chart-node.as-has-children:last-child > .as-tree-chart-content-ctn::before {\r\n    height: calc(50% + 5px);\r\n    /*width: unset;*/\r\n}\r\n", ""]);



/***/ }),

/***/ 30619:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-tree-list {}\r\n\r\n.absol-tree-list-item {}\r\n\r\n.absol-tree-list-item-parent:hover {\r\n    background: #efefef;\r\n    cursor: pointer;\r\n}\r\n\r\n.absol-tree-list-item-parent {\r\n    padding-left: 0.3em;\r\n    padding-right: 0.6em;\r\n    position: relative;\r\n}\r\n\r\n.absol-tree-list-item.active>.absol-tree-list-item-parent {\r\n    background: #dfdfdf;\r\n}\r\n\r\n.absol-tree-list-item-parent>span {\r\n    line-height: 20px;\r\n    white-space: nowrap;\r\n}\r\n\r\n.absol-tree-list-item-child {}\r\n\r\n.absol-tree-list-item>.absol-tree-list-item-child:empty {\r\n    display: none;\r\n}\r\n\r\n.absol-tree-list-item-desc-container {\r\n    right: 0.3em;\r\n    top: 0;\r\n    bottom: 0;\r\n    position: absolute;\r\n}\r\n\r\n.absol-tree-list-item-desc {\r\n    font-style: italic;\r\n    line-height: 20px;\r\n    white-space: nowrap;\r\n    margin-left: 1em;\r\n    color: rgb(37, 37, 37);\r\n}\r\n\r\n.absol-tree-list-item-desc:empty {\r\n    display: none;\r\n}", ""]);



/***/ }),

/***/ 29496:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "\r\n.as-tree-table {\r\n    font-size: 1rem;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    border-collapse: collapse;\r\n}\r\n\r\n.as-tree-table-toggle {\r\n    position: absolute;\r\n    left: 5px;\r\n    top: 0;\r\n    bottom: 0;\r\n    vertical-align: middle;\r\n    padding-right: 0.3em;\r\n    white-space: nowrap;\r\n    user-select: none;\r\n}\r\n\r\n\r\n\r\n.as-tree-table-toggle::before {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    content: \"\";\r\n    height: 100%;\r\n}\r\n\r\n.as-tree-table-head {\r\n    background-color: #d6d6d6;\r\n}\r\n\r\n\r\n.as-tree-table-head-cell {\r\n    font-weight: bold;\r\n    padding: 10px;\r\n    border: 1px solid #ddd;\r\n    position: relative;\r\n}\r\n\r\n\r\n.as-tree-table-row {\r\n    height: calc(40em / 14);\r\n    page-break-inside: avoid;\r\n    break-inside: avoid;\r\n}\r\n\r\n.as-tree-table-row:nth-child(odd) {\r\n    background-color: rgb(245, 245, 245);\r\n}\r\n\r\n.as-tree-table-row:nth-child(even) {\r\n    background-color: white;\r\n}\r\n\r\n.as-tree-table-cell {\r\n    padding: 5px;\r\n    border: 1px solid #ddd;\r\n    position: relative;\r\n    page-break-inside: avoid;\r\n    break-inside: avoid;\r\n}\r\n\r\n.as-tree-table-cell[data-type=\"number\"] {\r\n    text-align: right;\r\n}\r\n\r\n.as-tree-table-row.as-is-opened .as-tree-table-toggle .toggle-close,\r\n.as-tree-table-row:not(.as-is-opened) .as-tree-table-toggle .toggle-open {\r\n    display: none;\r\n}\r\n\r\n.as-tree-table-toggle .toggler-ico {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n\r\n.as-tree-table-row:not(.as-has-sub-row) .as-tree-table-toggle .toggler-ico {\r\n    visibility: hidden;\r\n}\r\n\r\n/*.as-tree-table-row {*/\r\n/*    height: var(--table-row-height);*/\r\n/*}*/\r\n\r\n.as-printer-content .as-tree-table-toggle svg{\r\n    display: none;\r\n}\r\n\r\n.as-printer-content .as-tree-table-head-cell,\r\n.as-printer-content .as-tree-table-cell{\r\n    border-color: black;\r\n}\r\n\r\n.as-tree-table-cell>span:first-child:last-child{\r\n    page-break-inside: avoid;\r\n    break-inside: avoid;\r\n}\r\n\r\n@media print {\r\n    div[align=\"center\"]> .as-tree-table{\r\n        display: block !important;\r\n    }\r\n    /*trick avoid break row*/\r\n    .as-tree-table tbody tr td:before,\r\n    .as-tree-table tbody tr td:after {\r\n        content: \"\";\r\n        height: 4px;\r\n        display: block;\r\n    }\r\n\r\n    .as-tree-table-head {\r\n        display: table-header-group  !important;\r\n    }\r\n\r\n    .as-tree-table-head + tbody tr:first-child th {\r\n        display: none;\r\n    }\r\n}", ""]);



/***/ }),

/***/ 29581:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ":root {\r\n    --variant-color-primary: #007bff;\r\n    --variant-color-secondary: #6c757d;\r\n    --variant-color-success: #28a745;\r\n    --variant-color-warning: #ffc107;\r\n    --variant-color-danger: #dc3545;\r\n    --variant-color-info: #17a2b8;\r\n    --variant-color-light: #f8f9fa;\r\n    --variant-color-dark: #343a40;\r\n    --variant-color-error: #ff4052;\r\n    --variant-color-link: #007bff;\r\n    --variant-color-note: #ffff88;\r\n\r\n\r\n    --variant-medium-contract-color-primary: #e2edd5;\r\n    --variant-medium-contract-color-secondary: #fca75b;\r\n    --variant-medium-contract-color-success: #fce8e8;\r\n    --variant-medium-contract-color-info: #fcf5e8;\r\n    --variant-medium-contract-color-warning: #5e5a75;\r\n    --variant-medium-contract-color-error:#e0dfce;\r\n    --variant-medium-contract-color-danger: #e5e8d5;\r\n    --variant-medium-contract-color-light: #7a5b3c;\r\n    --variant-medium-contract-color-dark: #bf7d3b;\r\n    --variant-medium-contract-color-link: #dde8c9;\r\n    --variant-medium-contract-color-note: #1e1ec8;\r\n}", ""]);



/***/ }),

/***/ 91652:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ":root {\r\n    --as-vertical-timeline-item-height: 40px;\r\n}\r\n\r\n.as-vertical-timeline {\r\n    display: inline-block;\r\n    color: white;\r\n    font-size: 14px;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    text-align: left;\r\n    padding: 5px;\r\n}\r\n\r\n.as-vertical-timeline-item {\r\n    height: var(--as-vertical-timeline-item-height);\r\n    white-space: nowrap;\r\n}\r\n\r\n.as-vertical-timeline-item.as-inactive {\r\n    color: rgba(200, 200, 200, 0.5);\r\n}\r\n\r\n.as-vertical-timeline-item.as-active .as-vertical-timeline-tile {\r\n    text-shadow: 1px 0 0 currentColor;\r\n}\r\n\r\n.as-vertical-timeline-item:not(:first-child) .as-vertical-timeline-icon-ctn::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    height: calc(var(--as-vertical-timeline-item-height) - 30px);\r\n    border-left: 2px solid currentColor;\r\n    position: absolute;\r\n    left: calc(50% - 1px);\r\n    bottom: calc(100% + 2px);\r\n}\r\n\r\n\r\n.as-vertical-timeline-icon-ctn {\r\n    display: inline-block;\r\n    margin-right: 20px;\r\n    position: relative;\r\n    vertical-align: middle;\r\n\r\n}\r\n\r\n.as-vertical-timeline-icon-ctn span {\r\n    font-size: 24px;\r\n}\r\n\r\n\r\n.as-vertical-timeline-tile {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n\r\n}\r\n\r\n\r\n/*//check-circle*/", ""]);



/***/ }),

/***/ 43034:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".as-vertical-tree-diagram {\r\n    --node-name-max-width: 200px;\r\n}\r\n\r\n\r\n.as-vertical-tree-diagram-node {\r\n\r\n}\r\n\r\n.template-ctn {\r\n    display: none;\r\n}\r\n\r\n.as-vertical-tree-diagram-node, .as-vertical-tree-diagram-node * {\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-vertical-tree-diagram-node {\r\n    display: inline-block;\r\n    vertical-align: top;\r\n    position: relative;\r\n    background: white;\r\n}\r\n\r\n.as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node:not(:first-child) {\r\n    margin-left: 10px;\r\n}\r\n\r\n.as-vertical-tree-diagram-node-name-ctn {\r\n    text-align: center;\r\n    padding-bottom: 9px;\r\n}\r\n\r\n.as-vertical-tree-diagram-node-name {\r\n    display: inline-block;\r\n    padding: 5px;\r\n    border: 1px solid #333;\r\n    position: relative;\r\n    white-space: normal;\r\n    max-width: var(--node-name-max-width);\r\n}\r\n\r\n.as-vertical-tree-diagram-node.as-has-child > .as-vertical-tree-diagram-node-name-ctn .as-vertical-tree-diagram-node-name::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    height: 10px;\r\n    left: 50%;\r\n    top: 100%;\r\n    border-left: 1px solid #333;\r\n}\r\n\r\n.as-vertical-tree-diagram-node.as-has-child.as-has-1-child > .as-vertical-tree-diagram-node-name-ctn .as-vertical-tree-diagram-node-name::before {\r\n    height: 20px;\r\n}\r\n\r\n.as-vertical-tree-diagram-child-ctn {\r\n    padding-top: 10px;\r\n\r\n}\r\n\r\n.as-vertical-tree-diagram-node:not(.as-has-1-child) > .as-vertical-tree-diagram-child-ctn {\r\n    border-top: 1px solid #333;\r\n}\r\n\r\n.as-vertical-tree-diagram-node:not(.as-has-child) > .as-vertical-tree-diagram-child-ctn {\r\n    display: none;\r\n}\r\n\r\n.as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    z-index: 1;\r\n    left: 50%;\r\n    bottom: 100%;\r\n    height: 10px;\r\n    border-left: 1px solid black;\r\n}\r\n\r\n.as-vertical-tree-diagram-node.as-has-1-child > .as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node::before,\r\n.as-vertical-tree-diagram-node.as-has-1-child > .as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node::after {\r\n    display: none;\r\n}\r\n\r\n\r\n.as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node:last-child::before {\r\n    left: unset;\r\n    right: 50%;\r\n}\r\n\r\n\r\n.as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node:first-child::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    z-index: 2;\r\n    right: 50%;\r\n    left: 0;\r\n    bottom: 100%;\r\n    height: 11px;\r\n    background-color: white;\r\n}\r\n\r\n.as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node:last-child::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    z-index: 2;\r\n    left: 50%;\r\n    right: 0;\r\n    bottom: 100%;\r\n    height: 11px;\r\n    background-color: white;\r\n}\r\n\r\n.as-vertical-tree-diagram-child-ctn > .as-vertical-tree-diagram-node:first-child:last-child::after {\r\n    display: none;\r\n}", ""]);



/***/ }),

/***/ 45930:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "\r\n.as-video-url-dialog-url {\r\n    max-width: calc(100vw - 8em - 40px);\r\n    width: 500px;\r\n    min-height: 30px;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.as-video-url-dialog input[type=\"number\"] {\r\n    width: 5em;\r\n}\r\n\r\n.as-video-url-dialog-row> label {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    width: 6em;\r\n}\r\n\r\n.as-video-url-dialog-row {\r\n    padding-bottom: 10px;\r\n    white-space: pre;\r\n}\r\n\r\n.as-video-url-dialog-row > * {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.as-video-url-dialog-video-image{\r\n    max-width: 200px;\r\n    max-height: 200px;\r\n\r\n}", ""]);



/***/ }),

/***/ 33122:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "/*margin for border size*/\r\n.as-vruler {\r\n    position: relative;\r\n    width: 1.5em;\r\n    border: solid 1px black;\r\n    overflow: hidden;\r\n    font-family: courier, \"courier new\", monospace;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n.as-vruler-line {\r\n    position: absolute;\r\n    right: 0;\r\n    width: 25%;\r\n    border-top: solid 1px rgb(17, 48, 43);\r\n    box-sizing: border-box;\r\n\r\n}\r\n\r\n.as-vruler-line.major {\r\n    width: 50%;\r\n    border-top: solid 1px rgb(5, 20, 18);\r\n}\r\n\r\n.as-vruler-major-number {\r\n    position: absolute;\r\n    text-align: center;\r\n    width:  5em;\r\n    pointer-events: none;\r\n    font-size: 0.7em;\r\n    right: calc(52% - 2em);\r\n    height: 1em;\r\n    transform-origin: center;\r\n    \r\n    -webkit-transform:rotate(90deg);\r\n    -moz-transform:rotate(90deg);\r\n    -o-transform: rotate(90deg);\r\n    -ms-transform:rotate(90deg);\r\n    transform: rotate(-90deg);\r\n}", ""]);



/***/ }),

/***/ 22839:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".absol-width-height-resizer {\r\n    position: relative;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.absol-width-height-resizer-anchor-bot-right {\r\n    cursor: nwse-resize;\r\n    position: absolute;\r\n    z-index: 1;\r\n    right: 0;\r\n    bottom: 0;\r\n    height: 13px;\r\n    width: 13px;\r\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAQUlEQVQoz2NgIBGkpaX9Z2IgA9BWU1pa2n+S/UGSZnRFBDVhU4BXEy4bcGrC5ySsmgj5AUMTMZ4mOehhmhjJ0QkA9TYwPsqIBKMAAAAASUVORK5CYII=');\r\n}\r\n\r\n.absol-width-height-resizer-anchor-bot-left {\r\n    cursor: nesw-resize;\r\n    position: absolute;\r\n    z-index: 1;\r\n    left: 0;\r\n    bottom: 0;\r\n    height: 13px;\r\n    width: 13px;\r\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABCSURBVChTY0hLS/vPQCJggtIkAco0keRMZMVEa0RXSJRGbIoIaoQpIMlGZEmiNRJSiFUjNkGCGrGaRAAwkq6JgQEAnaEwPtyU/MEAAAAASUVORK5CYII=');\r\n}\r\n\r\n.absol-width-height-resizer-anchor-top-right {\r\n    cursor: nesw-resize;\r\n    position: absolute;\r\n    z-index: 1;\r\n    right: 0;\r\n    top: 0;\r\n    height: 13px;\r\n    width: 13px;\r\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABMSURBVChTY0xLS/vPQGsAsoQJygYDdFuJdgUhjTgNwqcQpyYQwKURryYQwKaAoCYQwGUjQYCskGhNIABTTJImGABpQolcYgEZmhgYAEPpMD56IPESAAAAAElFTkSuQmCC')\r\n}\r\n\r\n.absol-width-height-resizer-anchor-top-left {\r\n    cursor: nwse-resize;\r\n    position: absolute;\r\n    z-index: 1;\r\n    top: 0;\r\n    left: 0;\r\n    height: 13px;\r\n    width: 13px;\r\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABNSURBVChTnZFbCgAgCAStw3r/GxQLClaSj/kJckcFBzMvqtKRprwHd6OncRRwN7GfKQFoIS0Ar/gVQGmCYkMpAWgwLYBSWHCPG9GQiDbsRTA+Srvt5gAAAABJRU5ErkJggg==');\r\n}\r\n\r\n.absol-width-height-resizer-content {\r\n    width: 100%;\r\n    height: 100%;\r\n    overflow: auto;\r\n}\r\n\r\n/* .absol-width-height-resizer */", ""]);



/***/ }),

/***/ 34454:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-blink-modal {\r\n    left: 10px;\r\n    right: 10px;\r\n    position: fixed;\r\n    --hide-top: -1000px;\r\n    --show-top: 10px;\r\n    top: var(--hide-top);\r\n    z-index: -10000000;\r\n    border-radius: 10px;\r\n    overflow: hidden;\r\n    backdrop-filter: blur(1.5rem);\r\n    -webkit-backdrop-filter: blur(1.5rem);\r\n    background-color: rgba(228, 228, 228, 0.6);\r\n    -webkit-box-shadow: 10px 9px 29px -2px rgba(0,0,0,0.3);\r\n    -moz-box-shadow: 10px 9px 29px -2px rgba(0,0,0,0.3);\r\n    box-shadow: 10px 9px 29px -2px rgba(0,0,0,0.3);\r\n    padding: 25px;\r\n    visibility: hidden;\r\n    opacity: 0;\r\n}\r\n\r\n.am-blink-modal.am-animation {\r\n    z-index: 10000000;\r\n    visibility: visible;\r\n    opacity: 1;\r\n    transition: top cubic-bezier(.59, .01, .2, .99) 0.2s;\r\n}\r\n\r\n\r\n.am-blink-modal.am-show {\r\n    top: var(--show-top);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n", ""]);



/***/ }),

/***/ 99322:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-bottom-tabbar {\r\n    position: fixed;\r\n    bottom: 0;\r\n    left: 0;\r\n    right: 0;\r\n    -webkit-box-shadow: 0px -2px 5px 0px rgba(0, 0, 0, 0.52);\r\n    -moz-box-shadow: 0px -2px 5px 0px rgba(0, 0, 0, 0.52);\r\n    box-shadow: 0px -2px 5px 0px rgba(0, 0, 0, 0.25);\r\n    /*filter: drop-shadow(0 0 0.75rem rgba(0, 0, 0, 0.25));*/\r\n    background-color: white;\r\n    z-index: 100;\r\n    font-size: 1rem;\r\n    user-select: none;\r\n    -moz-user-select: none;\r\n    -webkit-user-select: none;\r\n    height: 3rem;\r\n}\r\n\r\n.am-bottom-tabbar-line {\r\n    left: 40%;\r\n    width: 20%;\r\n    top: 0;\r\n    position: absolute;\r\n    border-top: 2px solid rgb(47, 147, 246);\r\n    box-sizing: border-box;\r\n    transition: left cubic-bezier(.47, 0, .4, 1) 0.1s;\r\n}\r\n\r\n.am-bottom-tabbar-content {\r\n    width: 100%;\r\n    display: table;\r\n    position: absolute;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    z-index: 5;\r\n}\r\n\r\n.am-bottom-tabbar-content-row {\r\n    display: table-row;\r\n}\r\n\r\n\r\n.am-bottom-tabbar-item {\r\n    display: table-cell;\r\n    text-align: center;\r\n    color: rgb(96, 96, 96);\r\n    transition: color cubic-bezier(.47, 0, .4, 1) 0.2s;\r\n    position: relative;\r\n}\r\n\r\n.am-bottom-tabbar-item.am-active {\r\n    color: rgb(47, 147, 246);\r\n\r\n}\r\n\r\n\r\n.am-bottom-tabbar-item > span {\r\n    font-size: 2em;\r\n    line-height: 1.5;\r\n}\r\n\r\n.am-bottom-tabbar-item-counter {\r\n    height: 1.4em;\r\n    left: calc(50% + 0.33em);\r\n    top: calc(50% - 1em);\r\n    font-size: 0.8em;\r\n    position: absolute;\r\n    min-width: 1.0em;\r\n    border-radius: 0.7em;\r\n    z-index: 1;\r\n    text-align: center;\r\n    background-color: rgb(254, 80, 81);\r\n    line-height: 1.4em;\r\n    color: white;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    padding-left: 0.2em;\r\n    padding-right: 0.2em;\r\n    box-sizing: content-box;\r\n}\r\n\r\n.am-bottom-tabbar-item-counter:empty {\r\n    display: none;\r\n}\r\n\r\n.am-bottom-tabbar-sub-item-ctn {\r\n    position: absolute;\r\n    left: 0;\r\n    right:0 ;\r\n    bottom: 0;\r\n    z-index: 1;\r\n    height: 3rem;\r\n    transition: all 200ms cubic-bezier(0.805, 0.125, 0.025, 1.325); /* custom */\r\n    transition-timing-function: cubic-bezier(0.805, 0.125, 0.025, 1.325); /* custom */\r\n    text-align: center;\r\n}\r\n\r\n.am-bottom-tabbar-sub-item-ctn.am-prepare-appear {\r\n    bottom: 0;\r\n    visibility: hidden;\r\n}\r\n\r\n\r\n.am-bottom-tabbar-sub-item-ctn.am-appear {\r\n    bottom: 3rem;\r\n}\r\n\r\n.am-bottom-tabbar-sub-item-ctn.am-prepare-disappear{\r\n    bottom: 0;\r\n}\r\n\r\n.am-bottom-tabbar-sub-item-box {\r\n    border-radius: 0.2rem;\r\n    display: inline-block;\r\n    background-color: white;\r\n    -webkit-box-shadow: 0px -2px 5px 0px rgba(0, 0, 0, 0.52);\r\n    -moz-box-shadow: 0px -2px 5px 0px rgba(0, 0, 0, 0.52);\r\n    box-shadow: 0px -2px 5px 0px rgba(0, 0, 0, 0.25);\r\n}\r\n\r\n.am-bottom-tabbar-sub-item-box .am-bottom-tabbar-item{\r\n    display: inline-block;\r\n    width: 4rem;\r\n}", ""]);



/***/ }),

/***/ 27634:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-cabinet-list {\r\n\r\n}\r\n\r\n.am-cabinet-list.am-searching .am-cabinet-item-drag{\r\n    pointer-events: none;\r\n    color: rgb(230, 230, 232);\r\n}\r\n\r\n.am-cabinet-item {\r\n    position: relative;\r\n    border-bottom: 1px solid #d6d6d6;\r\n}\r\n\r\n\r\n.am-cabinet-item:first-child {\r\n    border-top: 1px solid #d6d6d6;\r\n}\r\n\r\n\r\n\r\n\r\n.am-cabinet-item-drag {\r\n    width: 40px;\r\n    text-align: center;\r\n    display: none;\r\n    visibility: hidden;\r\n}\r\n\r\n.am-cabinet-item.as-board .am-cabinet-item-drag{\r\n    visibility: visible;\r\n}\r\n\r\n\r\n.am-cabinet-item-drag > i {\r\n    color: inherit;\r\n}\r\n\r\n.am-cabinet-list.am-draggable .am-cabinet-item-drag {\r\n    display: block;\r\n}\r\n\r\n.am-cabinet-item-body {\r\n    min-height: 39px;\r\n    white-space: nowrap;\r\n    display: flex;\r\n    align-items: center;\r\n    left: 0;\r\n    transition: left 0.1s;\r\n    position: relative;\r\n    background-color: white;\r\n    z-index: 3;\r\n\r\n}\r\n\r\n.am-cabinet-item.as-dragging .am-cabinet-item-body {\r\n    transition: none;\r\n}\r\n\r\n.am-cabinet-item-content {\r\n    flex-grow: 1;\r\n}\r\n\r\n.am-cabinet-item.am-flex-content .am-cabinet-item-content{\r\n    display: flex;\r\n    align-items: center;\r\n}\r\n\r\n.am-cabinet-item-quick-menu-btn {\r\n    width: 30px;\r\n    height: 30px;\r\n    background-color: transparent;\r\n    border: none;\r\n    padding: 0;\r\n    box-sizing: border-box;\r\n    transition: opacity 0.1s;\r\n    opacity: 1;\r\n    color: black;\r\n}\r\n\r\n.am-cabinet-item-quick-menu-btn i {\r\n    font-size: 20px;\r\n    color: inherit;\r\n}\r\n\r\n.am-cabinet-item-quick-menu-btn i{\r\n    font-size: var(--icon-fontsize);\r\n}\r\n\r\n\r\n.am-cabinet-item.as-board-moving {\r\n    transform: none;\r\n    left: var(--mk-navigator-bound-left) !important;\r\n}\r\n\r\n.am-cabinet-item.as-board-moving .am-cabinet-item-body {\r\n    background-color: rgb(169, 169, 172, 0.3);\r\n}\r\n\r\n.am-cabinet-item.as-board-moving .am-cabinet-item-right-action-ctn {\r\n    display: none;\r\n}\r\n\r\n.am-cabinet-item:not(.am-has-quick-menu) .am-cabinet-item-quick-menu-ctn {\r\n    display: none;\r\n}\r\n\r\n\r\n.am-cabinet-item-right-action-ctn {\r\n    position: absolute;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    display: flex;\r\n    align-items: stretch;\r\n    transition: width 0.1s;\r\n    background-color: #ebebeb;\r\n    /*border-radius: 4px;*/\r\n    /*overflow: hidden;*/\r\n}\r\n\r\n.am-cabinet-item-right-action-ctn:empty {\r\n    display: none;\r\n}\r\n\r\n.am-cabinet-item.as-dragging .am-cabinet-item-right-action-ctn {\r\n    transition: none;\r\n}\r\n\r\n.am-cabinet-item-action {\r\n    min-width: 60px;\r\n    padding: 0 8px;\r\n    flex-grow: 1;\r\n    background-color: transparent;\r\n    border: none;\r\n}\r\n\r\n.am-cabinet-item-action:not(:first-child) {\r\n    border-left: 1px solid #dddddd;\r\n}\r\n\r\n.am-cabinet-item-action:active {\r\n    -webkit-box-shadow: inset 0 0.2em 0.25em rgba(0, 0, 0, 0.125);\r\n    box-shadow: inset 0 0.2em 0.25em rgba(0, 0, 0, 0.125);\r\n}\r\n\r\n.am-cabinet-transparent-btn {\r\n    border: none;\r\n    width: 30px;\r\n    height: 30px;\r\n    background-color: transparent;\r\n    outline: none;\r\n}", ""]);



/***/ }),

/***/ 31546:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-cabinet-tree-list {\r\n\r\n}\r\n\r\n\r\n.am-cabinet-tree-list > .am-cabinet-tree:first-child > .am-cabinet-tree-node,\r\n.am-cabinet-tree-list.am-searching .am-cabinet-tree.am-first-result>.am-cabinet-tree-node{\r\n    border-top: 1px solid #d6d6d6;\r\n}\r\n\r\n.am-cabinet-tree {\r\n\r\n}\r\n\r\n.am-cabinet-tree:not(.am-has-children) > .am-cabinet-tree-node .am-cabinet-tree-node-toggle-ctn,\r\n.am-cabinet-tree:not(.am-opened) > .am-cabinet-tree-children,\r\n.am-cabinet-tree-children:empty {\r\n    display: none;\r\n}\r\n\r\n.am-cabinet-tree-node {\r\n    border-bottom: 1px solid #d6d6d6;\r\n}\r\n\r\n\r\n.am-cabinet-tree-node-body {\r\n    position: relative;\r\n    box-sizing: border-box;\r\n    --level-padding: 0px;\r\n    padding-left: calc(40px + var(--level-padding));\r\n    /*padding-left: 1em;*/\r\n}\r\n\r\n.am-cabinet-tree-node-toggle-ctn {\r\n    box-sizing: border-box;\r\n    position: absolute;\r\n    left: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    width: calc(40px + var(--level-padding));\r\n    text-align: right;\r\n    padding-right: 0.5em;\r\n}\r\n\r\n.am-cabinet-tree-node-toggle-ctn > span,\r\n.am-cabinet-tree-node-toggle-ctn::before {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    font-size: 20px;\r\n}\r\n\r\n\r\n .am-cabinet-tree-node-toggle-ctn .mdi::before{\r\n    -webkit-transform: rotate(0deg);\r\n    -ms-transform: rotate(0deg);\r\n    transform: rotate(0deg);\r\n    transition: transform 0.1s;\r\n}\r\n.am-cabinet-tree.am-opened > .am-cabinet-tree-node .am-cabinet-tree-node-toggle-ctn .mdi::before{\r\n    -webkit-transform: rotate(90deg);\r\n    -ms-transform: rotate(90deg);\r\n    transform: rotate(90deg);\r\n}\r\n\r\n.am-cabinet-tree-node-toggle-ctn::before {\r\n    content: \"\";\r\n    height: 100%;\r\n}\r\n\r\n\r\n.am-cabinet-tree-node-content {\r\n    min-height: 39px;\r\n}\r\n\r\n\r\n.am-cabinet-tree.am-flex-content > .am-cabinet-tree-node .am-cabinet-tree-node-content {\r\n    display: flex;\r\n    align-items: center;\r\n}\r\n\r\n\r\n.am-cabinet-tree-node:not(.am-has-quick-menu) .am-cabinet-tree-node-quick-menu-ctn {\r\n    display: none;\r\n}\r\n\r\n.am-cabinet-tree-node-quick-menu-ctn {\r\n    position: absolute;\r\n    right: 5px;\r\n    top: calc(50% - 15px);\r\n\r\n}\r\n\r\n\r\n.am-cabinet-tree-node.am-has-quick-menu .am-cabinet-tree-node-body {\r\n    padding-right: 40px;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.am-cabinet-tree-list.am-searching .am-cabinet-tree:not(.am-in-search-result){\r\n    display: none;\r\n}\r\n\r\n.am-cabinet-tree-list.am-searching>.am-cabinet-tree:first-child .am-cabinet-tree-node{\r\n    border-top: none;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n.am-cabinet-tree-list.am-searching,\r\n.am-cabinet-tree-list.am-searching .am-cabinet-tree.am-opened>.am-cabinet-tree-children {\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: stretch;\r\n}", ""]);



/***/ }),

/***/ 66066:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "/*Moved to absol-acomp*/", ""]);



/***/ }),

/***/ 36388:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-conversation {\r\n    position: relative;\r\n    height: 5em;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.am-conversation-avatar-ctn {\r\n    position: absolute;\r\n    left: 0.625em;\r\n    top: calc(50% - 1.725em);\r\n    height: 3.5em;\r\n    width: 3.5em;\r\n}\r\n\r\n.am-conversation-avatar-ctn .am-conversation-avatar{\r\n    width: 100%;\r\n    height: 100%;\r\n} \r\n\r\n.am-conversation-bottom-line {\r\n    position: absolute;\r\n    bottom: 0;\r\n    right: 0;\r\n    left: 5em;\r\n    border-bottom: 0.5px solid #dddddd;\r\n}\r\n\r\n.am-conversation-body {\r\n    position: absolute;\r\n    left: 5em;\r\n    overflow: hidden;\r\n    right: 3em;\r\n    padding-top: 0.5em;\r\n}\r\n\r\n.am-conversation-name {\r\n    line-height: 2;\r\n}\r\n\r\n.am-conversation-short-content {\r\n    text-overflow: ellipsis;\r\n    max-width: 100%;\r\n    height: 2em;\r\n    line-height: 2;\r\n    white-space: nowrap;\r\n    overflow: hidden;\r\n    font-size: 0.825em;\r\n}\r\n\r\n.am-conversation-time-ctn {\r\n    position: absolute;\r\n    right: 0.625em;\r\n    top: 0.825em;\r\n}\r\n\r\n.am-conversation-time {\r\n    font-size: 0.75em;\r\n}\r\n\r\n\r\n\r\n.am-conversation-counter {\r\n    height: 1.4em;\r\n    right: 0.78125em;\r\n    top: 3.3em;\r\n    font-size: 0.8em;\r\n    position: absolute;\r\n    min-width: 1.0em;\r\n    border-radius: 0.7em;\r\n    z-index: 1;\r\n    background-color: black;\r\n    text-align: center;\r\n    background-color: rgb(254, 80, 81);\r\n    line-height: 1.4em;\r\n    color: white;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    padding-left: 0.2em;\r\n    padding-right: 0.2em;\r\n    box-sizing: content-box;\r\n}\r\n\r\n\r\n.am-conversation-counter:empty {\r\n    display: none;\r\n}\r\n\r\n.am-conversation.am-status-unread .am-conversation-name,\r\n.am-conversation.am-status-unread .am-conversation-short-content {\r\n    font-weight: bold;\r\n}", ""]);



/***/ }),

/***/ 34038:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, "/**IN ACOMP*/\r\n", ""]);



/***/ }),

/***/ 41130:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-h-snap-scroller {\r\n    overflow-x: auto;\r\n}\r\n", ""]);



/***/ }),

/***/ 31000:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-navigator {}\r\n\r\n.am-navigator-content {\r\n    right: 100%;\r\n    top: 0;\r\n    bottom: 0;\r\n    z-index: 1001;\r\n    position: fixed;\r\n    /* touch-action: auto; */\r\n    overflow-y: scroll;\r\n}\r\n\r\n.am-navigator-content:empty {\r\n    background-color: gray;\r\n    width: 60vw;\r\n}\r\n\r\n.am-navigator-modal {\r\n    position: fixed;\r\n    left: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    width: 20px;\r\n    touch-action: none;\r\n    opacity: 0.001;\r\n}\r\n\r\n.am-navigator.am-dragging {\r\n    touch-action: none;\r\n    user-select: none;\r\n}\r\n\r\n\r\n.am-navigator.am-dragging .am-navigator-modal,\r\n.am-navigator.am-open .am-navigator-modal {\r\n    width: 100%;\r\n    background-color: rgb(169, 160, 170);\r\n    z-index: 1000;\r\n}\r\n\r\n.am-navigator.am-open .am-navigator-modal {\r\n    opacity: 0.5;\r\n}", ""]);



/***/ }),

/***/ 10883:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-mat-menu-button {\r\n    font-size: inherit;\r\n    position: relative;\r\n    display: block;\r\n    padding: 0;\r\n    padding-left: 1.07142857143em;\r\n    height: 3em;\r\n    box-sizing: border-box;\r\n    align-items: center;\r\n    border: none;\r\n    outline: none;\r\n    text-align: left;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n    border-top: 1px solid #ddd;\r\n\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    background-color: transparent;\r\n    color: black;\r\n}\r\n\r\n.am-mat-menu-button-level {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    white-space: pre;\r\n}\r\n\r\n.am-mat-menu-button:not(.am-status-close):not(.am-status-open):active {\r\n    background-color: rgb(169, 169, 169, 0.1);\r\n}\r\n\r\n\r\n.am-mat-menu-button .am-mat-menu-button-toggle-icon-ctn {\r\n    visibility: hidden;\r\n}\r\n\r\n.am-mat-menu-button.am-status-close .am-mat-menu-button-toggle-icon-ctn,\r\n.am-mat-menu-button.am-status-open .am-mat-menu-button-toggle-icon-ctn {\r\n    visibility: visible;\r\n}\r\n\r\n.am-mat-menu-button[data-level=\"1\"] .am-mat-menu-button-icon-ctn .am-mdi-rect {\r\n    background: rgb(136, 136, 136);\r\n}\r\n\r\n.am-mat-menu-button-icon-ctn {\r\n    height: 2em;\r\n    width: 2em;\r\n    text-align: center;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n}\r\n\r\n.am-mat-menu-button-icon-ctn > img {\r\n    display: inline-block;\r\n    font-size: inherit;\r\n    width: 2em;\r\n    height: 2em;\r\n}\r\n\r\n.am-mat-menu-button-icon-ctn > span {\r\n    font-size: 2em;\r\n    line-height: 1;\r\n}\r\n\r\n.am-mat-menu-button-text {\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n    margin-left: 1.07142857143em;\r\n    font-size: inherit;\r\n}\r\n\r\n.am-mat-menu-button-toggle-icon-ctn {\r\n    position: absolute;\r\n    right: 1.07142857143em;\r\n    top: 0.5em;\r\n    bottom: 0.5em;\r\n    width: 2em;\r\n    text-align: center;\r\n}\r\n\r\n.am-mat-menu-button-toggle-icon-ctn > span {\r\n    font-size: 1.5em;\r\n    line-height: 1.3333333;\r\n    color: rgb(191, 191, 191);\r\n}\r\n\r\n.am-mat-menu-button-toggle-icon-ctn > span:before {\r\n    transition: transform 0.2s;\r\n}\r\n\r\n.am-mat-menu-item > .am-mat-menu-button {\r\n    width: 100%;\r\n}\r\n\r\n.am-mat-menu-dropdown:empty {\r\n    display: none;\r\n}\r\n\r\n.am-mat-menu-dropdown {\r\n    overflow-y: hidden;\r\n    transition: max-height 0.2s ease-out;\r\n    max-height: 0;\r\n}\r\n\r\n\r\n.am-mat-menu {\r\n    background-color: white;\r\n    -webkit-box-shadow: 0px 1px 1px 0px #ddd;\r\n    -moz-box-shadow: 0px 1px 1px 0px #ddd;\r\n    box-shadow: 0px 1px 1px 0px #ddd;\r\n}", ""]);



/***/ }),

/***/ 23678:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-mdi-rect {\r\n    border-radius: 0.2em;\r\n    font-size: inherit;\r\n    height: 2em;\r\n    width: 2em;\r\n    text-align: center;\r\n    background-color: rgb(2, 121, 251);\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n}\r\n\r\n.am-mdi-rect-icon{\r\n    font-size: 1.5em;\r\n    line-height: 1.333333;\r\n    color: white;\r\n    display: inline-block;\r\n}\r\n", ""]);



/***/ }),

/***/ 8069:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-message-input-left {\r\n    position: absolute;\r\n    left: 10px;\r\n    bottom: 13px;\r\n}\r\n\r\n.am-message-input.as-message-input {\r\n    padding-left: 50px;\r\n}\r\n\r\n.am-message-input .as-message-input-emoji-btn-ctn {\r\n    left: unset;\r\n    right: 6px;\r\n}\r\n\r\n.am-message-input .as-message-input-pre-ctn::after {\r\n    height: 24px;\r\n}\r\n\r\n\r\n.am-message-input .as-message-input-plugin-file {\r\n    display: none;\r\n}\r\n\r\n.am-message-input .as-message-input-pre-ctn {\r\n    padding-left: 40px;\r\n    padding-right: 15px;\r\n    width: calc(100% - 49px);\r\n}\r\n\r\n.am-message-input .as-message-input-right {\r\n    bottom: 13px;\r\n}\r\n\r\n\r\n.as-message-input.as-mode-edit .am-message-input-plugin-camera,\r\n.as-message-input.as-has-text .am-message-input-plugin-camera {\r\n    display: none;\r\n}\r\n\r\n\r\n.am-message-input .as-message-input-plugin-btn {\r\n    width: 34px;\r\n    height: 34px;\r\n}\r\n\r\n\r\n.am-message-input:not(.as-has-text):not(.as-focus) .am-message-input-plugin-more {\r\n    background: linear-gradient(135deg, rgb(0, 120, 212), rgb(0, 188, 242));\r\n    color: white;\r\n}", ""]);



/***/ }),

/***/ 42338:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-message-tool {\r\n    position: fixed;\r\n    top: 0;\r\n    left: 0;\r\n    right: 0;\r\n    bottom: 0;\r\n    z-index: 100000;\r\n    background-color: rgba(0, 0, 0, 0.5);\r\n    font-size: 14px;\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    --box-height: 272px;\r\n    transition: background-color 0.25s;\r\n}\r\n\r\n.am-message-tool.am-hiding .am-message-tool-box {\r\n    bottom: calc(0px - var(--box-height));\r\n}\r\n\r\n.am-message-tool.am-hiding {\r\n    background-color: rgba(0, 0, 0, 0.0);\r\n}\r\n\r\n.am-message-tool-box {\r\n    position: fixed;\r\n    left: 0;\r\n    right: 0;\r\n    bottom: 0;\r\n    background-color: white;\r\n    padding-bottom: 10px;\r\n    transition: bottom 0.25s;\r\n}\r\n\r\n.am-message-tool-header {\r\n    position: relative;\r\n    height: calc(3em + 10px);\r\n    box-sizing: border-box;\r\n    text-align: center;\r\n}\r\n\r\n.am-message-tool-header::before {\r\n    content: \"\";\r\n    display: inline-block;\r\n    height: 100%;\r\n    vertical-align: middle;\r\n}\r\n\r\n\r\n.am-message-tool-header-close-btn-ctn {\r\n    position: absolute;\r\n    left: 5px;\r\n    top: calc(50% - 1.5em);\r\n}\r\n\r\n.am-message-tool-header-close-btn {\r\n    height: 3em;\r\n    width: 3em;\r\n    border-radius: 50%;\r\n    border: none;\r\n    color: black;\r\n    background-color: transparent;\r\n    outline: none;\r\n}\r\n\r\n.am-message-tool-header-close-btn:active {\r\n    background-color: rgba(169, 169, 169, 0.3);\r\n}\r\n\r\n.am-message-tool-header-close-btn span {\r\n    font-size: 2em;\r\n}\r\n\r\n.am-message-tool-title {\r\n    font-size: 1.5em;\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    font-weight: bolder;\r\n}\r\n\r\n.am-message-tool-body {\r\n    overflow-y: auto;\r\n    max-height: 60vh;\r\n}\r\n\r\n.am-message-tool-plugin {\r\n    display: flex;\r\n    height: 5em;\r\n}\r\n\r\n.am-message-tool-plugin-icon-ctn {\r\n    width: 5em;\r\n    text-align: center;\r\n    padding: 0.8em;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.am-message-tool-plugin-icon-ctn > span {\r\n    display: block;\r\n    width: 100%;\r\n    height: 100%;\r\n    font-size: 2em;\r\n    line-height: 1.7;\r\n    background-color: rgb(241, 241, 243);\r\n    border-radius: 0.3em;\r\n}\r\n\r\n.am-message-tool-plugin-content {\r\n    flex-grow: 1;\r\n    padding: 5px;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n.am-message-tool-plugin:not(:last-child) .am-message-tool-plugin-content {\r\n    border-bottom: 1px solid #dddddd;\r\n}\r\n\r\n.am-message-tool-plugin-name {\r\n    font-size: 1.5em;\r\n    font-weight: bold;\r\n    margin-bottom: 0.3em;\r\n}\r\n\r\n.am-message-tool-plugin-desc {\r\n    color: rgb(79, 79, 80);\r\n}", ""]);



/***/ }),

/***/ 38070:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-multi-check-menu{\r\n    --item-min-width: 60px;\r\n    max-height: var(--multi-select-menu-max-height);\r\n    max-width: calc(95vw - 60px);\r\n}\r\n\r\n.am-multi-check-menu .absol-selectbox-item-text span{\r\n    max-width: calc(95vw - 60px - 5em);\r\n    text-overflow: ellipsis;\r\n    overflow: hidden;\r\n}\r\n\r\n", ""]);



/***/ }),

/***/ 25583:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-navigator-menu {\r\n    font-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.am-navigator-menu-header {\r\n    background-image: url(http://absol.cf/assets/background/188-1881044_dual-android-navigation-drawer-background.jpg);\r\n    min-width: 12em;\r\n    background-size: cover;\r\n    color: white;\r\n    box-sizing: border-box;\r\n    padding-left: 0.625em;\r\n    padding-top: 0.625em;\r\n    padding-bottom: 0.625em;\r\n    padding-right: 0.125em;\r\n}\r\n\r\n.am-navigator-menu .am-navigator-content {\r\n    background-color: white;\r\n    overflow-y: auto;\r\n}\r\n\r\n.am-navigator-menu-avatar-ctn {\r\n    padding-top: 0.625em;\r\n    padding-bottom: 0.625em;\r\n}\r\n\r\n\r\n.am-navigator-menu-avatar {\r\n    width: 5em;\r\n    height: 5em;\r\n    border-radius: 50%;\r\n    background-image: url(https://avatars2.githubusercontent.com/u/9133017?s=460&v=4);\r\n    background-size: cover;\r\n}\r\n\r\n.am-navigator-menu-full-name {\r\n    font-size: 1.14285714286em;\r\n    font-weight: bold;\r\n    white-space: nowrap;\r\n}\r\n\r\n.am-navigator-menu-email {}\r\n\r\n\r\n.am-navigator-menu-group-name {\r\n    padding-left: 0.625em;\r\n    line-height: 2.5;\r\n    color: rgb(104, 104, 105);\r\n    font-weight: bold;\r\n}\r\n\r\n\r\n\r\n.am-navigator-menu-item {\r\n    position: relative;\r\n    height: 2.5em;\r\n    padding-left: 2.92857143em;\r\n}\r\n\r\n.am-navigator-menu-item:active{\r\n    background-color: rgba(169, 169, 169, 0.3 );\r\n}\r\n\r\n\r\n\r\n\r\n .am-navigator-menu-item-icon-ctn {\r\n    position: absolute;\r\n    left: 0.625em;\r\n    top: 0.5em;\r\n    bottom: 0.5em;\r\n    width: 1.5em;\r\n    height: 1.5em;\r\n}\r\n\r\n.am-navigator-menu-item-icon-ctn span {\r\n    font-size: 1.5em;\r\n    line-height: 1;\r\n}\r\n\r\n.am-navigator-menu-item-text {\r\n    font-size: inherit;\r\n    line-height: 2.5;\r\n}\r\n\r\n.am-navigator-menu-group:not(:last-child) {\r\n    border-bottom: 1px solid #ddd;\r\n}", ""]);



/***/ }),

/***/ 43657:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-select-box {\r\n\r\n}\r\n\r\n.am-select-box-modal .am-selectlist-item.as-selected {\r\n    display: none;\r\n}\r\n\r\n.am-select-box.disabled,\r\n.am-select-box.as-disabled {\r\n    pointer-events: none;\r\n    background-color: #ebebe4;\r\n}", ""]);



/***/ }),

/***/ 2222:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".am-tiny-profile-block {\r\n    height: 5.42857143em;\r\n    background-color: white;\r\n    position: relative;\r\n    box-sizing: border-box;\r\n    padding-top: 0.625em;\r\n    padding-bottom: 0.625em;\r\n    padding-left: 0.125em;\r\n    font-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\n.am-tiny-profile-block-avatar {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    width: 4em;\r\n    height: 4em;\r\n    border-radius: 50%;\r\n    background-image: url(https://avatars1.githubusercontent.com/u/32388488?s=400&v=4);\r\n    background-size: cover;\r\n}\r\n\r\n.am-tiny-profile-block-text-ctn {\r\n    display: inline-block;\r\n    vertical-align: middle;\r\n    padding-left: 0.125em;\r\n}\r\n\r\n\r\n.am-tiny-profile-block-name {\r\n    font-size: 1.5em;\r\n    font-weight: 400;\r\n}\r\n\r\n.am-tiny-profile-block-desc {\r\n    font-size: 0.8em;\r\n}", ""]);



/***/ }),

/***/ 35685:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".gdv-app {\r\n\r\n}\r\n\r\n.gdv-fragment {\r\n\r\n}\r\n\r\n.gdv-app > .gdv-app-frag-ctn,\r\n.gdv-app-frag-ctn > .gdv-fragment {\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n.gdv-app-frag-ctn.gdv-overlay {\r\n    position: fixed;\r\n    z-index: 100;\r\n    left: 0;\r\n    width: 100%;\r\n    top: 0;\r\n    bottom: 0;\r\n}\r\n", ""]);



/***/ }),

/***/ 54983:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".gdv-contact-item {\r\n    position: relative;\r\n    border-bottom: solid 1px #dddddd;\r\n    padding: 0.3em 6em 0.3em 0.3em;\r\n}\r\n\r\n.gdv-contact-item-name {\r\n    font-size: 1.5em;\r\n}\r\n\r\n.gdv-contact-item-status {\r\n    color: gray;\r\n}\r\n\r\n.gdv-contact-item.gdv-online .gdv-contact-item-status {\r\n    color: #3c9ef5;\r\n}\r\n\r\n.gdv-contact-item-voice-btn,\r\n.gdv-contact-item-video-btn {\r\n    position: absolute;\r\n    width: 2.5em;\r\n    height: 2.5em;\r\n    font-size: inherit;\r\n    padding: 0;\r\n    border: none;\r\n    top: calc(50% - 1.25em);\r\n    background-color: transparent;\r\n    color: darkcyan;\r\n    outline: none;\r\n}\r\n\r\n.gdv-contact-item-voice-btn:active,\r\n.gdv-contact-item-video-btn:active{\r\n    color: #12dddd;\r\n}\r\n\r\n.gdv-contact-item-video-btn{\r\n    right: 1em;\r\n}\r\n\r\n.gdv-contact-item-voice-btn{\r\n    right: 4em;\r\n}\r\n\r\n\r\n.gdv-contact-item-voice-btn span,\r\n.gdv-contact-item-video-btn span {\r\n    font-size: 2em;\r\n}\r\n\r\n.gdv-contact-item:not(.gdv-online) .gdv-contact-item-voice-btn,\r\n.gdv-contact-item:not(.gdv-online) .gdv-contact-item-video-btn{\r\n    pointer-events: none;\r\n    color: rgb(200, 200, 200);\r\n}\r\n", ""]);



/***/ }),

/***/ 28637:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".gdv-income-frag,\r\n.gdv-outgoing-frag {\r\n    position: relative;\r\n    /*position: fixed;*/\r\n    /*z-index: 100;*/\r\n    /*left: 0;*/\r\n    /*right: 0;*/\r\n    /*top: 0;*/\r\n    /*bottom: 0;*/\r\n    font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n    background-color: white;\r\n}\r\n\r\n.gdv-income-frag-info {\r\n    position: absolute;\r\n    left: 5%;\r\n    right: 5%;\r\n    top: 2em;\r\n}\r\n\r\n.gdv-income-frag-name {\r\n    font-size: 2.5em;\r\n}\r\n\r\n.gdv-income-frag-type {\r\n    color: rgb(120, 120, 120);\r\n}\r\n\r\n.gdv-income-frag-button-ctn {\r\n    position: absolute;\r\n    left: calc(25% - 2.5em);\r\n    right: calc(25% - 2.5em);\r\n    bottom: calc(7em - 2.5em);\r\n}\r\n\r\n.gdv-outgoing-frag-button-ctn {\r\n    position: absolute;\r\n    left: calc(50% - 2.5em);\r\n    right: calc(50% - 2.5em);\r\n    bottom: calc(7em - 2.5em);\r\n    text-align: center;\r\n}\r\n\r\n\r\n.gdv-income-frag-action-btn {\r\n    padding: 0;\r\n    font-size: inherit;\r\n    border: none;\r\n    outline: none;\r\n    border-radius: 50%;\r\n    width: 5em;\r\n    height: 5em;\r\n    color: white;\r\n    box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.4);\r\n}\r\n\r\n.gdv-income-frag-action-btn:active {\r\n    box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);\r\n}\r\n\r\n.gdv-income-frag-action-btn:disabled {\r\n    background-color: darkgray;\r\n    pointer-events: none;\r\n}\r\n\r\n.gdv-income-frag-action-btn span {\r\n    font-size: 2.5em;\r\n}\r\n\r\n.gdv-income-frag-action-btn:last-child {\r\n    float: right;\r\n}\r\n\r\n.gdv-income-frag-hangup-btn,\r\n.gdv-outgoing-frag-cancel-btn {\r\n    background-color: #d01c1c;\r\n}\r\n\r\n\r\n.gdv-income-frag-answer-btn {\r\n    background-color: #36be36;\r\n}", ""]);



/***/ }),

/***/ 64741:
/***/ ((module, exports, __webpack_require__) => {

exports = module.exports = __webpack_require__(55788)(false);
// Module
exports.push([module.id, ".gdv-main-frag {\r\n    position: relative;\r\n    overflow: hidden;\r\n}\r\n\r\n.gdv-main-frag-contact-list {\r\n    height: calc(100% - 3em);\r\n}", ""]);



/***/ }),

/***/ 80303:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24\" height=\"24\" >\r\n<path style=\"fill:currentColor\" d=\"M172.4,229.7c-4.3,0-11.8-1.9-33.7-14.3-3.8-2.1-8.7-1.4-11.6,1.9-7.5,8.3-12.3,11.7-17.4,12.3-5.5.6-10.2-1.5-15.2-3.8-4.1-1.9-8.8-4-15.3-5.4-1.6-.4-3.3-.6-4.8-.9-15.8-2.8-27.6-7.3-36.2-39.7-2.1-7.8-5.2-9.3-10.5-11.9-4.9-2.4-11.5-5.7-15-14.2-3.1-7.6-2.9-18,.5-33.6,8.2-37,29.3-38.6,39.4-39.3.2,0,.4,0,.6,0-.7-10,1.5-17.4,6.6-22.2,5.1-4.8,11.1-5,13.7-4.8h31.6l23.1-8.9c2.3-.9,4.1-2.6,5.1-4.8l1.4-3.1c4.7-10.2,15.1-16.9,26.4-16.9h5.9l28.4,7.7c12.3,3.3,21.1,14.6,21.4,27.3l.4,20.6c0,3.1-.4,6.2-1.3,9.2l-6.3,20.3c-.8,2.6-.4,5.3,1,7.6l4.9,7.8c5.5,8.9,5.8,20.1.8,29.3l-17,30.7c-1.4,2.5-1.5,5.4-.4,8,5.4,12.9.8,27.8-10.9,35.4-5.5,3.6-10,5.4-14.1,5.7-.4,0-.9,0-1.4,0ZM172.9,210.1h0ZM108,210h0ZM134.2,194.6c4.9,0,9.8,1.2,14.2,3.7,16.4,9.3,22.5,11.2,24.1,11.6.6-.2,2.2-.8,4.8-2.6,3.7-2.4,5.1-7.1,3.4-11.3-3.4-8.2-2.9-17.4,1.4-25.1l17-30.7c1.6-2.9,1.5-6.5-.2-9.3l-4.9-7.8c-4.5-7.1-5.6-15.9-3.1-23.9l6.3-20.3c.3-1,.4-1.9.4-2.9l-.4-20.6c0-4.1-2.9-7.7-6.9-8.7l-25.9-7h-3.3c-3.7,0-7,2.1-8.5,5.4l-1.4,3.1c-3.2,6.9-8.8,12.2-15.9,14.9l-26.5,10.2h-35.6c-.3,1.1-.6,3.4-.2,7.3.6,5.6-.5,10.2-3.4,13.6-4.3,5.2-10.5,5.7-15.5,6-8.6.6-16.7,1.3-21.7,24-3.2,14.5-2.3,20-1.5,22,.5,1.3,1.4,1.9,5.5,4,6.5,3.2,16.4,8.1,20.8,24.5,3,11.1,6.2,18.3,9.7,21.5,2.4,2.2,5.3,2.8,11,3.8,1.8.3,3.6.6,5.6,1.1,8.5,1.9,14.7,4.6,19.2,6.7,1.4.6,3.1,1.4,4.3,1.8,1-.8,2.8-2.5,5.6-5.6,5.6-6.2,13.6-9.6,21.7-9.6ZM53.4,83.8h0ZM71.3,73.3s0,0,0,0h0Z\"/>\r\n<circle style=\"fill:currentColor\" cx=\"143.5\" cy=\"150\" r=\"19.9\"/>\r\n</svg>");

/***/ }),

/***/ 42116:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 240 240\"><path style=\"fill:currentColor\" d=\"M200,20.1H40c-11,0-20,8.9-20,20v160.1c0,11,9,20,20,20h80.8c-5.6-5.8-10.1-12.6-13.2-20.1H40v-110.1h160v31.9c8.1,5,14.9,11.8,20,19.8V40.1c0-11.1-9-20-20-20ZM200,70.3H40v-30.1h160v30.1ZM216.6,189.7l-11.2-8.9c0-1.3.2-2.7.2-4,0-2.1,0-4.2-.3-6.3l11.1-8.8c.5-.9,1.3-2.3.7-3.2l-10.7-18.2c-.3-.2-.7-.4-1-.6-.7-.4-1.4-.8-1.7-1l-12.8,5.4-9.1-5.2-2.3-14c-.3-.2-.8-1-1.5-1.4,0,0,0,0,0,0-.3-.2-.7-.3-1.1-.2,0,0,0,0,0,0h-10.2s-10.4,0-10.4,0c-1.6,0-2.6,1-2.6,2.1l-2.1,14.2c-3.1,1.6-6.3,3.1-8.9,5.2l-13.1-5.2c-1.1,0-2.6,0-3.2,1l-10.5,18.4v3.2l11,8.4v10.5l-11,8.9c0,.5-1.1,2.1,0,3.2l10.5,18.4c0,1,2.1,1,3.2,1l13.1-5.2c2.6,2.1,5.8,4.2,8.9,5.2l2.1,13.7c0,1,1.6,2.1,2.6,2.1h20.7c1.2,0,2-1.3,2.5-2.2l2-14c3.1-1.2,6.5-2.9,9-5.1l13.3,5.2c.9.5,2.6-.3,3.1-1.2l10.4-18.1c.8-1.4.4-2.8-.5-3.3ZM201.4,200.3l-12.9-5c-4.5,4.7-9.8,7.6-16,8.9l-1.8,14.2h-8.4l-2.1-13.7c-6.3-1.6-11.6-4.7-15.8-9.5l-12.6,5.2-4.2-6.8,11-8.4c-2.1-6.3-2.1-12.6,0-18.9l-11-8.4,4.2-6.8,12.6,5.2c3.7-4.7,9.4-8.4,15.8-9.5l2.1-13.6h7.9l1.8,13.9c3.7.7,7,2,10,3.9,0,0,.1,0,.2.1,2.2,1.4,4.1,3.1,6,5.1,0,0,.1.2.2.2l12.4-5.2h.4c0-.1,3.6,6.4,3.6,6.4v.2c0,0,.2.2.2.2l-10.8,8.3c1.2,2.8,1.8,6,1.9,9.3,0,3-.4,6.1-1.5,9l10.8,8.6-3.9,6.8ZM181.1,175.9c0,8.1-6.6,14.7-14.7,14.7s-14.7-6.6-14.7-14.7,6.6-14.7,14.7-14.7,14.7,6.6,14.7,14.7Z\"/></svg>");

/***/ }),

/***/ 76634:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24\" height=\"24\" >\r\n<path d=\"M173.4,159.1c0,11-8.9,19.9-19.9,19.9s-19.9-8.9-19.9-19.9,8.9-19.9,19.9-19.9,19.9,8.9,19.9,19.9ZM201.4,174c-1.3,2.4-1.5,5.2-.4,7.8,5.2,12.5.8,26.9-10.5,34.2-5.3,3.4-9.7,5.2-13.7,5.6-.4,0-.9,0-1.4,0-4.2,0-11.5-1.8-32.6-13.8-3.7-2.1-8.4-1.3-11.2,1.8-7.2,8-11.9,11.3-16.8,11.9-5.3.6-9.9-1.5-14.7-3.6-4-1.8-8.5-3.8-14.9-5.2-1.6-.3-3.1-.6-4.7-.9-15.3-2.7-26.7-7.1-35.1-38.4-2-7.5-5.1-9-10.1-11.5-4.7-2.3-11.2-5.5-14.5-13.8-3-7.4-2.8-17.4.5-32.5,7.9-35.8,28.3-37.3,38.1-38.1.2,0,.4,0,.6,0-.7-9.6,1.4-16.9,6.4-21.5,5-4.7,10.7-4.8,13.3-4.6h30.6l22.4-8.6c2.2-.8,4-2.5,5-4.6l1.4-3c4.6-9.9,14.6-16.3,25.5-16.3h5.7l27.5,7.5c12,3.2,20.5,14.1,20.7,26.4l.4,20c0,3-.4,6-1.3,8.9l-6.1,19.7c-.8,2.5-.4,5.2.9,7.4l4.7,7.5c5.4,8.6,5.7,19.5.8,28.3l-16.4,29.7ZM173.4,159.1c0-11-8.9-19.9-19.9-19.9s-19.9,8.9-19.9,19.9,8.9,19.9,19.9,19.9,19.9-8.9,19.9-19.9ZM153.4,139.2c-11,0-19.9,8.9-19.9,19.9s8.9,19.9,19.9,19.9,19.9-8.9,19.9-19.9-8.9-19.9-19.9-19.9Z\" style=\"fill:currentColor\"/>\r\n</svg>");

/***/ }),

/***/ 58993:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\"  width=\"24\" height=\"24\"><path style=\"fill:currentColor\"  d=\"M110,110V20H20v90M40,90v-50h50v50M200,65c0,14-11,25-25,25s-25-11-25-25,11.1-25,25-25,25,11.1,25,25M65,140l-45,80h90M75.8,200h-21.6l10.8-19.2M220,65c0-25-20-45-45-45s-45,20-45,45,20,45,45,45,45-20,45-45M210.8,179.3v4l7.7,5.6c.7.5,1,1.4.7,2.2l-.2.5s-.2,1.3-1,2.1l-8,14.4s-1.6.8-2.4,0l-9.6-4c-2.4,1.6-4.8,3.2-7.2,4l-1.6,10.4c0,.8-.8,1.6-1.6,1.6h-16.8c-.8,0-1.6,0-1.6-1.6l-1.6-10.4c-2.4-.8-5.6-2.4-7.2-4.8l-9.6,4h-2.4l-8-14.4v-2.4l8.8-6.4v-8.8l-8-6.4s-.8-1.6,0-2.4l8.8-14.4s1.6-.8,2.4,0l9.6,4c2.4-1.6,4-3.2,7.2-4l1.6-10.4c0-.8.8-1.6,1.6-1.6h16.8c.8,0,1.6,0,1.6,1.6l1.6,10.4c2.4.8,4.8,2.4,7.2,4l9.6-4h2.4l8,14.4v2.4l-8.8,6.4v4ZM191.6,180.9c0-6.4-5.6-12-12-12s-12,5.6-12,12,5.6,12,12,12,12-5.6,12-12Z\" /></svg>");

/***/ }),

/***/ 54371:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg height=\"100%\" width=\"100%\" viewBox=\"0,0,2048,2048\" focusable=\"false\">\r\n<path style=\"fill:currentColor\" shape-rendering=\"optimizeQuality\" type=\"path\" class=\"as-font-color-text\"  d=\"M 1504 1408 l -156 -392 h -603 l -152 392 h -145 l 536 -1408 h 132 l 533 1408 m -602 -1236 h -4 l -254 725 h 515 m 744 639 v 512 h -2048 v -512 z\"></path>\r\n<path shape-rendering=\"optimizeQuality\" type=\"path\" class=\"as-font-color-contract\" d=\"M 2048 1536 v 512 h -2048 v -512 m 1920 128 h -1792 v 256 h 1792 z\"></path>\r\n<path shape-rendering=\"optimizeQuality\" type=\"path\" class=\"as-font-color-value\" d=\"M 1984 1984 h -1920 v -384 h 1920 z\"></path>\r\n</svg>");

/***/ }),

/***/ 7870:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 240 240\"><path style=\"fill:currentColor\" d=\"M116.4,119.8c0,.3,0,.6-.1.9-3.2,20.7-6.4,42.1-17.3,63.7-8.3,16.4-18.7,25-31,25.5-.4,0-.7,0-1.1,0-19.8,0-33.8-22-35.4-24.6-2.9-4.7-1.4-10.9,3.3-13.7,4.7-2.9,10.9-1.4,13.7,3.3,3.8,6.1,12.2,15,18.4,15s.2,0,.3,0c4.3-.2,9.3-5.4,13.9-14.5,9.1-18.1,12.3-37.1,15.1-55.6h-13.4c-7.1,0-12.9-5.8-12.9-12.9h0c0-7.1,5.8-12.9,12.9-12.9h17.8c3.6-17.2,9.3-34.3,21.6-50.1,16.9-21.7,30.6-22.7,39.1-19.8,11.7,4.1,19,18.2,18.8,36,0,5.5-4.5,9.9-10.1,9.9-5.5,0-9.9-4.6-9.9-10.1.1-9.6-3.1-16.1-5.4-16.9-1.3-.5-7.2,1-16.7,13.2-9,11.6-13.7,24.3-16.9,37.8h16.1c7.1,0,12.9,5.8,12.9,12.9h0c0,7.1-5.8,12.9-12.9,12.9h-20.7ZM181.7,174.2v3.5l6.7,4.9c.6.4.9,1.2.6,1.9v.5c-.1,0-.3,1.1-1,1.8l-7,12.6s-1.4.7-2.1,0l-8.4-3.5c-2.1,1.4-4.2,2.8-6.3,3.5l-1.4,9.1c0,.7-.7,1.4-1.4,1.4h-14.7c-.7,0-1.4,0-1.4-1.4l-1.4-9.1c-2.1-.7-4.9-2.1-6.3-4.2l-8.4,3.5h-2.1l-7-12.6v-2.1l7.7-5.6v-7.7l-7-5.6s-.7-1.4,0-2.1l7.7-12.6s1.4-.7,2.1,0l8.4,3.5c2.1-1.4,3.5-2.8,6.3-3.5l1.4-9.1c0-.7.7-1.4,1.4-1.4h14.7c.7,0,1.4,0,1.4,1.4l1.4,9.1c2.1.7,4.2,2.1,6.3,3.5l8.4-3.5h2.1l7,12.6v2.1l-7.7,5.6v3.5ZM164.9,175.6c0-5.6-4.9-10.5-10.5-10.5s-10.5,4.9-10.5,10.5,4.9,10.5,10.5,10.5,10.5-4.9,10.5-10.5Z\" /></svg>");

/***/ }),

/***/ 20677:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M200,19.9H40c-11,0-20,9-20,20v160.1c0,11,9,20,20,20h90v-20.1H40v-110.1h160v110.1h-10v20.1h10c11,0,20-9,20-20V39.9c0-11-9-20-20-20ZM200,70H40v-30.1h160v30.1ZM140,139.9h40v10.1h-10v70h10v9.9h-40v-9.9h10v-70h-10v-10.1Z\" style=\"stroke:none;fill:currentColor\"/>\r\n</svg>");

/***/ }),

/***/ 39314:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\r\n    <path style=\"fill:currentColor\" d=\"M20 3c.552 0 1 .448 1 1v16c0 .552-.448 1-1 1h-6c-.552 0-1-.448-1-1V4c0-.552.448-1 1-1h6zm-1 2h-4v14h4V5zM6 7c2.761 0 5 2.239 5 5s-2.239 5-5 5-5-2.239-5-5 2.239-5 5-5zm1 2H5v1.999L3 11v2l2-.001V15h2v-2.001L9 13v-2l-2-.001V9z\"/>\r\n</svg>");

/***/ }),

/***/ 28791:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\r\n    <path style=\"fill:currentColor\" d=\"M10 3c.552 0 1 .448 1 1v16c0 .552-.448 1-1 1H4c-.552 0-1-.448-1-1V4c0-.552.448-1 1-1h6zM9 5H5v14h4V5zm9 2c2.761 0 5 2.239 5 5s-2.239 5-5 5-5-2.239-5-5 2.239-5 5-5zm1 2h-2v1.999L15 11v2l2-.001V15h2v-2.001L21 13v-2l-2-.001V9z\"/>\r\n</svg>");

/***/ }),

/***/ 15436:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg viewBox=\"0 0 24 24\">\r\n    <path fill=\"currentColor\" d=\"M20 6H4V4H20V6M14.3 12C13.5 12.96 13 14.18 13 15.5C13 16.64 13.43 17.86 14 19V20H4V14H3V12L4 7H20L20.7 10.5C20.04 10.18 19.32 10 18.56 10L18.36 9H5.64L5.04 12H14.3M12 14H6V18H12V14M22 15.5C22 18.1 18.5 22 18.5 22S15 18.1 15 15.5C15 13.6 16.6 12 18.5 12S22 13.6 22 15.5M19.7 15.6C19.7 15 19.1 14.4 18.5 14.4S17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8S19.8 16.2 19.7 15.6Z\" />\r\n</svg>");

/***/ }),

/***/ 77083:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M225.5,147.3l-12.8-12.8c-1.9-1.9-5.1-1.9-7,0l-9.5,9.5,19.8,19.8,9.5-9.5c1.9-1.8,1.9-5,0-7h0ZM209.2,170.6l-39.4,39.4-20,20h-19.8v-19.8l.2-.2,19.6-19.6,39.6-39.6,10.5,10.6,9.2,9.3ZM160,20H60c-11-.1-20,8.8-20,19.9v159.9c0,11,8.9,20,20,20h40c0,0,0-29.7,0-29.7h-40V49.9l100,.2v69.7h20c0,0,0-79.7,0-79.7,0-11-8.9-20-20-20ZM65,39.7c-2.8,0-5-2.2-5-5s2.2-5,5-5,5,2.2,5,5-2.2,5-5,5ZM140,34.6c0,2.8-2.3,5.1-5.1,5.1h-49.9c-2.8,0-5.1-2.3-5.1-5.1v-5.1h60v5.1ZM120,169.9\" style=\"stroke:none;fill:currentColor\"/>\r\n</svg>");

/***/ }),

/***/ 55073:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<polygon xmlns=\"http://www.w3.org/2000/svg\" points=\"190 130 190 119.9 150 119.9 150 130 160 130 160 200 150 200 150 209.9 190 209.9 190 200 180 200 180 130 190 130\" style=\"fill:currentColor; stroke: none\"/>\r\n<path xmlns=\"http://www.w3.org/2000/svg\" d=\"M60,180V39.9l100,.2v69.7h20c0,0,0-79.7,0-79.7,0-11-8.9-20-20-20H60c-11-.1-20,8.8-20,19.9v159.9c0,11,8.9,20,20,20h40c0,0,40,0,40,0v-29.8H60ZM80,20h60v5.1c0,2.8-2.3,5.1-5.1,5.1h-49.9c-2.8,0-5.1-2.3-5.1-5.1v-5.1ZM65,20c2.8,0,5,2.2,5,5s-2.2,5-5,5-5-2.2-5-5,2.2-5,5-5Z\" style=\"fill:currentColor; stroke: none\"/>\r\n</svg>");

/***/ }),

/***/ 50296:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M160,20.3H60c-11-.1-20,8.8-20,19.9v159.9c0,11,8.9,20,20,20h40c0,0,22.9,0,22.9,0-12.1-7-22.1-17.4-28.7-29.8h-34.3V50.1l100,.2v98.3c6.9,0,13.6,1,20,2.7V40.3c0-11-8.9-20-20-20ZM65,40.2c-2.8,0-5-2.2-5-5s2.2-5,5-5,5,2.2,5,5-2.2,5-5,5ZM140,35.3c0,2.8-2.3,5.1-5.1,5.1h-49.9c-2.8,0-5.1-2.3-5.1-5.1v-5.1h60v5.1ZM160,158.6c-21.8,0-40.7,12.5-50,30.7,9.3,18.2,28.2,30.7,50,30.7s40.7-12.5,50-30.7c-9.3-18.2-28.2-30.7-50-30.7ZM160,208c-10.3,0-18.7-8.4-18.7-18.7s8.4-18.7,18.7-18.7,18.7,8.4,18.7,18.7-8.4,18.7-18.7,18.7ZM160,180.6c-4.8,0-8.7,3.9-8.7,8.7s3.9,8.7,8.7,8.7,8.7-3.9,8.7-8.7-3.9-8.7-8.7-8.7Z\" style=\"fill:currentColor; stroke: none\"/></svg>");

/***/ }),

/***/ 24722:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M200,19.6H40c-11,0-20,8.9-20,20v160.1c0,11,9,20,20,20h89.6c-8.7-5.1-16.2-12-22.2-20.1H40v-110.1h160v66.7c7.4,3.6,14.2,8.5,20,14.3V39.6c0-11.1-9-20-20-20ZM200,69.7H40v-30.1h160v30.1ZM167.4,158.6c-21.8,0-40.7,12.5-50,30.7,9.3,18.2,28.2,30.7,50,30.7s40.7-12.5,50-30.7c-9.3-18.2-28.2-30.7-50-30.7ZM167.4,208c-10.3,0-18.7-8.4-18.7-18.7s8.4-18.7,18.7-18.7,18.7,8.4,18.7,18.7-8.4,18.7-18.7,18.7ZM176.2,189.3c0,4.8-3.9,8.7-8.7,8.7s-8.7-3.9-8.7-8.7,3.9-8.7,8.7-8.7,8.7,3.9,8.7,8.7Z\" style=\"stroke:none;fill:currentColor\"/>\r\n</svg>");

/***/ }),

/***/ 55330:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M183.9,209.9h-72.5l35.9-89.9L111.4,30h72.5l35.9,89.9-35.9,89.9ZM140.9,189.9h29.4l27.9-69.9-27.9-69.9h-29.4l27.9,69.9-27.9,69.9ZM89.8,209.9H17.3l35.9-89.9L17.3,30h72.5l35.9,89.9-35.9,89.9ZM46.8,189.9h29.4l27.9-69.9-27.9-69.9h-29.4l27.9,69.9-27.9,69.9Z\" style=\"stroke:none;fill:currentColor\"/>\r\n</svg>");

/***/ }),

/***/ 42592:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg class=\"process-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\">\r\n<path style=\"stroke:none;fill:currentColor\" d=\"M12,15.9h-.4c-2.2,0-4-1.8-4-4s1.8-4,4-4,4.2,1.9,4,4.4c-1.7.6-3,1.9-3.6,3.6M13.6,11.9c0-1.1-.9-2-2-2s-2,.9-2,2,.9,2,2,2,2-.9,2-2M22.6,19.3c0,0,.1.2,0,.3l-1,1.8c0,0-.2.1-.3,0l-1.2-.5c-.3.2-.6.4-.9.5l-.2,1.3c0,.1-.1.2-.2.2h-2.1c-.1,0-.2,0-.2-.2l-.2-1.3c-.3-.1-.7-.3-.9-.6l-1.2.5c0,0-.2,0-.3,0l-1-1.8c0,0,0-.2,0-.3l1.1-.8c0-.2,0-.3,0-.5s0-.4,0-.6l-1-.8c0,0-.1-.2,0-.3l1.1-1.8c0,0,.2-.1.3,0l1.2.5h0c.3-.2.5-.4.9-.5h0s.2-1.3.2-1.3c0-.1.1-.2.2-.2h2.1c.1,0,.2,0,.2.2l.2,1.3h0c.3.1.6.3.9.5h0s1.2-.5,1.2-.5c0,0,.2,0,.3,0l1,1.8c0,0,0,.2,0,.3l-1.1.8h0c0,.2,0,.4,0,.5s0,.3,0,.5h0s1.1.8,1.1.8ZM17.8,16.5c-.8,0-1.5.7-1.5,1.5s.7,1.5,1.5,1.5,1.5-.7,1.5-1.5-.7-1.5-1.5-1.5ZM21.4,8.7l-2-3.5c-.1-.2-.4-.2-.6-.2l-2.5,1c-.5-.4-1.1-.8-1.7-1l-.4-2.7c0-.2-.3-.4-.5-.4h-4c-.3,0-.5.2-.5.4l-.4,2.7c-.6.3-1.2.6-1.7,1l-2.5-1c-.2,0-.5,0-.6.2l-2,3.5c0,.2,0,.5,0,.6l2.1,1.6v2l-2.1,1.7c0,.1-.2.4,0,.6l2,3.5c0,.2.4.2.6.2l2.5-1c.5.4,1.1.8,1.7,1l.4,2.6c0,.2.3.4.5.4h3.4c-.5-.6-.8-1.1-1.1-1.9h-1.1l-.4-2.6c-1.2-.3-2.2-.9-3-1.8l-2.4,1-.8-1.3,2.1-1.6c-.4-1.2-.4-2.4,0-3.6l-2.1-1.6.8-1.3,2.4,1c.7-.9,1.8-1.6,3-1.8l.4-2.6h1.5l.4,2.6c1.2.3,2.2.9,3,1.8l2.4-1,.8,1.3-2.1,1.6c.2.6.3,1.2.3,1.8h.5c.5,0,1,0,1.5.2v-1.2l2.1-1.6c.1,0,.2-.4.1-.6Z\"/>\r\n</svg>");

/***/ }),

/***/ 8161:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg width=\"$width\" height=\"$height\" version=\"1.1\" viewBox=\"0 0 $width $height\" xmlns=\"http://www.w3.org/2000/svg\">\r\n    <g fill=\"none\" stroke=\"#f00\">\r\n        <path d=\"m0 0 $width $height\"/>\r\n        <path d=\"m$width 0-$width $heightz\" stroke-width=\"1px\"/>\r\n    </g>\r\n</svg>\r\n");

/***/ }),

/***/ 40420:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg class=\"as-spinner-ico\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"  viewBox=\"0 0 100 100\" preserveAspectRatio=\"xMidYMid\">\r\n    <g><circle cx=\"73.801\" cy=\"68.263\" fill=\"#e15b64\" r=\"4\">\r\n        <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"0s\"></animateTransform>\r\n    </circle><circle cx=\"68.263\" cy=\"73.801\" fill=\"#f47e60\" r=\"4\">\r\n        <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.062s\"></animateTransform>\r\n    </circle><circle cx=\"61.481\" cy=\"77.716\" fill=\"#f8b26a\" r=\"4\">\r\n        <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.125s\"></animateTransform>\r\n    </circle><circle cx=\"53.916\" cy=\"79.743\" fill=\"#abbd81\" r=\"4\">\r\n        <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.187s\"></animateTransform>\r\n    </circle><circle cx=\"46.084\" cy=\"79.743\" fill=\"#849b87\" r=\"4\">\r\n        <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.25s\"></animateTransform>\r\n    </circle><circle cx=\"38.519\" cy=\"77.716\" fill=\"#6492ac\" r=\"4\">\r\n        <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.312s\"></animateTransform>\r\n    </circle><circle cx=\"31.737\" cy=\"73.801\" fill=\"#637cb5\" r=\"4\">\r\n        <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.375s\"></animateTransform>\r\n    </circle><circle cx=\"26.199\" cy=\"68.263\" fill=\"#6a63b6\" r=\"4\">\r\n        <animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;360 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\" begin=\"-0.437s\"></animateTransform>\r\n    </circle><animateTransform attributeName=\"transform\" type=\"rotate\" calcMode=\"spline\" values=\"0 50 50;0 50 50\" times=\"0;1\" keySplines=\"0.5 0 0.5 1\" repeatCount=\"indefinite\" dur=\"1.4925373134328357s\"></animateTransform></g>\r\n</svg>");

/***/ }),

/***/ 15608:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg\n   viewBox=\"0 0 24 24\"\n   version=\"1.1\"\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   class=\"as-toggle-header-ico\">\n  <path\n     class=\"as-icon-table\"\n     d=\"M 1 1 L 1 1.5 L 1 23 L 23 23 L 23 1 L 1 1 z M 2 2 L 22 2 L 22 10 L 2 10 L 2 2 z M 2 11 L 5 11 L 5 14 L 2 14 L 2 11 z M 6 11 L 9 11 L 9 14 L 6 14 L 6 11 z M 10 11 L 14 11 L 14 14 L 10 14 L 10 11 z M 15 11 L 18 11 L 18 14 L 15 14 L 15 11 z M 19 11 L 22 11 L 22 14 L 19 14 L 19 11 z M 2 15 L 5 15 L 5 18 L 2 18 L 2 15 z M 6 15 L 9 15 L 9 18 L 6 18 L 6 15 z M 10 15 L 14 15 L 14 18 L 10 18 L 10 15 z M 15 15 L 18 15 L 18 18 L 15 18 L 15 15 z M 19 15 L 22 15 L 22 18 L 19 18 L 19 15 z M 2 19 L 5 19 L 5 22 L 2 22 L 2 19 z M 6 19 L 9 19 L 9 22 L 6 22 L 6 19 z M 10 19 L 14 19 L 14 22 L 10 22 L 10 19 z M 15 19 L 18 19 L 18 22 L 15 22 L 15 19 z M 19 19 L 22 19 L 22 22 L 19 22 L 19 19 z \" />\n  <path\n     style=\"fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;\"\n     d=\"m 9,6 h 6\"\n      class=\"as-icon-minus\" />\n  <path\n     style=\"fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;\"\n     d=\"M 12,9 V 3\"\n     class=\"as-icon-add\" />\n</svg>\n");

/***/ }),

/***/ 70858:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M200.1,20H39.9c-11,0-19.9,8.9-19.9,19.9v160.2c0,11,8.9,19.9,19.9,19.9h160.1c11,0,19.9-8.9,19.9-19.9V39.9c0-11-8.9-19.9-19.9-19.9ZM120,190c0,5.5-4.5,10-10,10h-60c-5.5,0-10-4.5-10-10v-80c0-5.5,4.5-10,10-10h60c5.5,0,10,4.5,10,10v80ZM200,190c0,5.5-4.5,10-10,10h-50c-5.5,0-10-4.5-10-10v-30c0-5.5,4.5-10,10-10h50c5.5,0,10,4.5,10,10v30ZM200,130c0,5.5-4.5,10-10,10h-50c-5.5,0-10-4.5-10-10v-20c0-5.5,4.5-10,10-10h50c5.5,0,10,4.5,10,10v20ZM200,80c0,5.5-4.5,10-10,10H50c-5.5,0-10-4.5-10-10v-30c0-5.5,4.5-10,10-10h140c5.5,0,10,4.5,10,10v30Z\" style=\"stroke:none;fill:currentColor\"/>\r\n</svg>");

/***/ }),

/***/ 24453:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg id=\"Layer_2\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\"><path style=\"fill:currentColor\" d=\"M160.1,144.7c-6.2-2.8-13-4.3-20.2-4.4h-.2c-27.5,0-49.9,22.3-49.9,49.9s22.3,49.9,49.9,49.9,49.9-22.3,49.9-49.9-1.5-14-4.3-20.2c-5-11.2-14-20.3-25.2-25.3ZM153.9,215.1c-2.8,2.4-5.9,4-9.5,4.7v5.3h-10.1v-5c-2.7-.2-5.2-.7-7.4-1.4-5.1-1.6-7.6-4.1-7.6-7.5s.5-3.1,1.5-4.2c1-1.1,2.3-1.7,3.9-1.7s3.3.6,6.4,1.6c1.2.4,2.2.8,3.2,1,1.6.4,3,.6,4.1.6,2.6,0,4.6-.6,6-1.9,0,0,0,0,.1,0,1.5-1.3,2.2-3,2.2-5.1s-.8-2.7-2.3-3.8c-1.1-.8-2.7-1.6-4.7-2.2-2-.6-3.8-1.2-5.4-1.7-4.3-1.4-6.9-2.4-7.8-2.9-4.8-2.7-7.1-6.8-7.1-12.3s2-10,5.9-13.4c2.6-2.2,5.6-3.8,9-4.5v-5.3h10.1v5.1c1.7.3,3.4.7,5,1.3,4.2,1.5,6.3,3.7,6.3,6.5s-.5,3-1.5,4.2c-1,1.2-2.3,1.8-3.9,1.8s-2.3-.2-3.7-.7c-.8-.3-1.5-.5-2.2-.7-2.2-.7-3.9-1-5.1-1-1.9,0-3.4.4-4.8,1.3-.1,0-.2.2-.3.2-1.1.9-1.7,2.1-1.7,3.7s.5,2,1.7,2.8c1.2.9,3,1.7,5.4,2.5,1.7.5,3.3,1.1,4.7,1.6,4.1,1.4,6.9,2.6,8.5,3.6,4.8,3.1,7.1,7.7,7.1,13.8s-2,10.2-6.1,13.7ZM80.2,199.9c.8,7.1,3,13.9,6.2,20H30c-11,0-20-9-20-20V40.2c0-11,9-20,20-20h159.8c11,0,20,8.9,20,20v42.8c-5.2-1.6-10.8-2.5-16.6-2.5s-2.1,0-3.2,0v-20.6c0-11-9-20-20-20H50c-11,0-20,8.9-20,20v120c0,11,9,20,20,20h30.2ZM239.7,140.3c0,24.2-17.3,44.4-40.1,48.9-.1-6.9-1.4-13.4-3.6-19.6,13.6-2.8,23.9-14.9,23.9-29.4s-13.4-30-30-30-26.5,10.2-29.3,23.7c-6.1-2.3-12.7-3.6-19.5-3.7,4.6-22.8,24.8-39.9,48.9-39.9s49.9,22.3,49.9,49.9ZM199.7,158.1l-15-13.2,1.4-26.3c.1-2,1.8-3.6,3.8-3.6s3.6,1.5,3.8,3.5l1.5,22,10.1,12.2c1.3,1.6,1.1,3.9-.5,5.2h0c-1.4,1.3-3.5,1.2-4.9,0ZM159.8,90.3H49.8v-20h110v20ZM119.8,130.1H49.8v-20h70v20ZM49.8,160.1h20.1v20.1h-20.1v-20.1Z\"/></svg>");

/***/ }),

/***/ 85792:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<svg class=\"procedure-outline-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"24px\" height=\"24px\">\r\n<path d=\"M225.5,144.3l-9.5,9.5-19.8-19.8,9.5-9.5c1.8-1.9,5-1.9,7,0l12.8,12.8c1.9,1.9,1.9,5.1,0,7ZM60,180.4h50v19.6H40c-11,0-20-9-20-20V49.9c0-11,9-20,20-20h160c11,0,20,9,20,20v60h-20v-40H40v90.5c0,11,9,20,20,20ZM170,50c0,5.5,4.5,10,10,10s10-4.5,10-10-4.5-10-10-10-10,4.5-10,10ZM140,50c0,5.5,4.5,10,10,10s10-4.5,10-10-4.5-10-10-10-10,4.5-10,10ZM110,50c0,5.5,4.5,10,10,10s10-4.5,10-10-4.5-10-10-10-10,4.5-10,10ZM189.5,140.8l-39.6,39.6-19.6,19.6-.2.2v19.8h19.8l20-20,39.4-39.4-9.2-9.3-10.5-10.6Z\" style=\"stroke:none;fill:currentColor\"/>\r\n</svg>");

/***/ }),

/***/ 37828:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("\r\n.as-ck-alert {\r\n    padding: .75rem 1.25rem;\r\n    margin-bottom: 1rem;\r\n    border: 1px solid transparent;\r\n    border-radius: .188rem;\r\n}\r\n\r\n.as-ck-alert.as-variant-notice {\r\n    color: #7b5700;\r\n    background-color: #fbedcc;\r\n    border-color: #fae6b8;\r\n}\r\n\r\n.as-ck-alert.as-variant-warning {\r\n    color: #852d19;\r\n    background-color: #ffddd6;\r\n    border-color: #ffd0c5;\r\n}\r\n\r\n.as-ck-alert.as-variant-info {\r\n    color: #352c64;\r\n    background-color: #e0ddf2;\r\n    border-color: #d4cfed;\r\n}\r\n\r\n.as-ck-alert.as-variant-success {\r\n    color: #2a601f;\r\n    background-color: #dcf1d8;\r\n    border-color: #ceebc8;\r\n}\r\n\r\n\r\n.cke_contents_ltr ul {\r\n    list-style: none;\r\n}\r\n\r\n.cke_contents_ltr ul li {\r\n    position: relative;\r\n}\r\n\r\n.cke_contents_ltr ul li::before {\r\n    color: #007bff;\r\n    content: '●';\r\n    position: absolute;\r\n    left: -1.2em;\r\n    top: -0.1em;\r\n    display: inline-block;\r\n}\r\n\r\n.cke_contents_ltr thead {\r\n    background-color: #d6d6d6;\r\n\r\n}\r\n\r\n.cke_contents_ltr table {\r\n    border-collapse: collapse;\r\n}\r\n\r\n.cke_contents_ltr table[align=\"center\"] {\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n}\r\n\r\n.cke_contents_ltr table[align=\"right\"] {\r\n    margin-left: auto;\r\n}\r\n\r\n\r\n.cke_contents_ltr thead td {\r\n    padding: 10px;\r\n    border: 1px solid #efefef;\r\n    font-weight: bold;\r\n}\r\n\r\n.cke_contents_ltr thead td:last-child {\r\n    border-right-color: #dddddd;\r\n}\r\n\r\n\r\n.cke_contents_ltr thead td:first-child {\r\n    border-left-color: #dddddd;\r\n}\r\n\r\n\r\n.cke_contents_ltr tbody td {\r\n\r\n}\r\n\r\n.cke_contents_ltr tbody tr:nth-child(odd) {\r\n    background-color: rgb(245, 245, 245);\r\n}\r\n\r\n.cke_contents_ltr tbody tr:nth-child(even) {\r\n    background-color: white;\r\n}\r\n\r\n.cke_contents_ltr tbody td {\r\n    padding: 5px 10px;\r\n    border: 1px solid #ddd;\r\n}\r\n\r\n\r\n.cke_button_icon.cke_button__insert_expression_icon {\r\n    background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiICB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgIDxwYXRoIGZpbGw9IiMwMDAwMDAiIGQ9Ik01LDNIN1Y1SDVWMTBBMiwyIDAgMCwxIDMsMTJBMiwyIDAgMCwxIDUsMTRWMTlIN1YyMUg1QzMuOTMsMjAuNzMgMywyMC4xIDMsMTlWMTVBMiwyIDAgMCwwIDEsMTNIMFYxMUgxQTIsMiAwIDAsMCAzLDlWNUEyLDIgMCAwLDEgNSwzTTE5LDNBMiwyIDAgMCwxIDIxLDVWOUEyLDIgMCAwLDAgMjMsMTFIMjRWMTNIMjNBMiwyIDAgMCwwIDIxLDE1VjE5QTIsMiAwIDAsMSAxOSwyMUgxN1YxOUgxOVYxNEEyLDIgMCAwLDEgMjEsMTJBMiwyIDAgMCwxIDE5LDEwVjVIMTdWM0gxOU0xMiwxNUExLDEgMCAwLDEgMTMsMTZBMSwxIDAgMCwxIDEyLDE3QTEsMSAwIDAsMSAxMSwxNkExLDEgMCAwLDEgMTIsMTVNOCwxNUExLDEgMCAwLDEgOSwxNkExLDEgMCAwLDEgOCwxN0ExLDEgMCAwLDEgNywxNkExLDEgMCAwLDEgOCwxNU0xNiwxNUExLDEgMCAwLDEgMTcsMTZBMSwxIDAgMCwxIDE2LDE3QTEsMSAwIDAsMSAxNSwxNkExLDEgMCAwLDEgMTYsMTVaIiAvPgo8L3N2Zz4=');\r\n    background-position: 0 0px;\r\n    background-size: 16px;\r\n}\r\n\r\n.cke_button_icon.cke_button__insert_variable_icon {\r\n    background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiICB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgIDxwYXRoIGZpbGw9IiMwMDAwMDAiIGQ9Ik0yMC40MSwzQzIxLjgsNS43MSAyMi4zNSw4Ljg0IDIyLDEyQzIxLjgsMTUuMTYgMjAuNywxOC4yOSAxOC44MywyMUwxNy4zLDIwQzE4LjkxLDE3LjU3IDE5Ljg1LDE0LjggMjAsMTJDMjAuMzQsOS4yIDE5Ljg5LDYuNDMgMTguNyw0TDIwLjQxLDNNNS4xNywzTDYuNyw0QzUuMDksNi40MyA0LjE1LDkuMiA0LDEyQzMuNjYsMTQuOCA0LjEyLDE3LjU3IDUuMywyMEwzLjYxLDIxQzIuMjEsMTguMjkgMS42NSwxNS4xNyAyLDEyQzIuMiw4Ljg0IDMuMyw1LjcxIDUuMTcsM00xMi4wOCwxMC42OEwxNC40LDcuNDVIMTYuOTNMMTMuMTUsMTIuNDVMMTUuMzUsMTcuMzdIMTMuMDlMMTEuNzEsMTRMOS4yOCwxNy4zM0g2Ljc2TDEwLjY2LDEyLjIxTDguNTMsNy40NUgxMC44TDEyLjA4LDEwLjY4WiIgLz4KPC9zdmc+');\r\n    background-position: 0 0px;\r\n    background-size: 16px;\r\n}\r\n\r\n.cke_button_icon.cke_button__insert_dynamic_link_icon {\r\n    background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiICB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgIDxwYXRoIGZpbGw9IiMwMDAwMDAiIGQ9Ik0zIDFDMS44OSAxIDEgMS44OSAxIDNWMTRDMSAxNS4xMSAxLjg5IDE2IDMgMTZIMTRDMTUuMTEgMTYgMTYgMTUuMTEgMTYgMTRWMTFIMTRWMTRIM1YzSDE0VjVIMTZWM0MxNiAxLjg5IDE1LjExIDEgMTQgMU05IDdDNy44OSA3IDcgNy44OSA3IDlWMTJIOVY5SDIwVjIwSDlWMThIN1YyMEM3IDIxLjExIDcuODkgMjIgOSAyMkgyMEMyMS4xMSAyMiAyMiAyMS4xMSAyMiAyMFY5QzIyIDcuODkgMjEuMTEgNyAyMCA3SDkiIC8+Cjwvc3ZnPg==');\r\n    background-position: 0 0px;\r\n    background-size: 16px;\r\n}\r\n\r\n\r\n.as-ck-widget-expression {\r\n    color: #1da1ff;\r\n}\r\n\r\n.as-ck-widget-variable {\r\n    color: #144f25;\r\n}\r\n\r\n\r\n.cke_button__image_mgn_dialog_icon {\r\n    background: url($basePath/plugins/icons.png) no-repeat 0 -960px !important;\r\n}\r\n\r\n\r\nbody .cke_contents_ltr h1,\r\nbody .cke_contents_ltr h2,\r\nbody .cke_contents_ltr h3,\r\nbody .cke_contents_ltr h4,\r\nbody .cke_contents_ltr h5,\r\nbody .cke_contents_ltr h6 {\r\n    font-weight: normal;\r\n    line-height: 1.2;\r\n}\r\n\r\nbody .cke_contents_ltr {\r\n    line-height: 1.6;\r\n    font-size: inherit;\r\n    font-family: sans-serif, Arial, Verdana, \"Trebuchet MS\", \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\r\n    background-color: #fff;\r\n    word-wrap: break-word;\r\n    text-align: left;\r\n}\r\n\r\n.cke_contents_ltr blockquote {\r\n    font-style: italic;\r\n    font-family: inherit;\r\n    border-style: solid;\r\n    border-color: #ccc;\r\n    border-width: 0;\r\n    padding-left: 20px;\r\n    padding-right: 8px;\r\n    border-left-width: 5px;\r\n}\r\n\r\nbody .cke_contents_ltr a {\r\n    color: #0782C1;\r\n}\r\n\r\nbody .cke_contents_ltr ol,\r\nbody .cke_contents_ltr ul,\r\nbody .cke_contents_ltr dl {\r\n    /* IE7: reset rtl list margin. (#7334) */\r\n    *margin-right: 0px;\r\n    /* Preserved spaces for list items with text direction different than the list. (#6249,#8049)*/\r\n    padding: 0 40px;\r\n}\r\n\r\n\r\nbody.cke_contents_ltr { /*editor*/\r\n    font-size: 14px;\r\n}\r\n\r\n\r\nbody .cke_contents_ltr hr\r\n{\r\n    border: 0px;\r\n    border-top: 1px solid #ccc;\r\n}\r\n\r\nbody .cke_contents_ltr img.right\r\n{\r\n    border: 1px solid #ccc;\r\n    float: right;\r\n    margin-left: 15px;\r\n    padding: 5px;\r\n}\r\n\r\nbody .cke_contents_ltr img.left\r\n{\r\n    border: 1px solid #ccc;\r\n    float: left;\r\n    margin-right: 15px;\r\n    padding: 5px;\r\n}\r\n\r\nbody .cke_contents_ltr pre\r\n{\r\n    white-space: pre-wrap; /* CSS 2.1 */\r\n    word-wrap: break-word; /* IE7 */\r\n    -moz-tab-size: 4;\r\n    tab-size: 4;\r\n}\r\n\r\nbody .cke_contents_ltr .marker\r\n{\r\n    background-color: Yellow;\r\n}\r\n\r\nbody .cke_contents_ltr span[lang]\r\n{\r\n    font-style: italic;\r\n}\r\n\r\nbody .cke_contents_ltr figure\r\n{\r\n    text-align: center;\r\n    outline: solid 1px #ccc;\r\n    background: rgba(0,0,0,0.05);\r\n    padding: 10px;\r\n    margin: 10px 20px;\r\n    display: inline-block;\r\n}\r\n\r\nbody .cke_contents_ltr figure > figcaption\r\n{\r\n    text-align: center;\r\n    display: block; /* For IE8 */\r\n}\r\n\r\nbody .cke_contents_ltr a > img {\r\n    padding: 1px;\r\n    margin: 1px;\r\n    border: none;\r\n    outline: 1px solid #0782C1;\r\n}\r\n\r\n/* Widget Styles */\r\nbody .cke_contents_ltr .code-featured\r\n{\r\n    border: 5px solid red;\r\n}\r\n\r\nbody .cke_contents_ltr .math-featured\r\n{\r\n    padding: 20px;\r\n    box-shadow: 0 0 2px rgba(200, 0, 0, 1);\r\n    background-color: rgba(255, 0, 0, 0.05);\r\n    margin: 10px;\r\n}\r\n\r\nbody .cke_contents_ltr .image-clean\r\n{\r\n    border: 0;\r\n    background: none;\r\n    padding: 0;\r\n}\r\n\r\nbody .cke_contents_ltr .image-clean > figcaption\r\n{\r\n    font-size: .9em;\r\n    text-align: right;\r\n}\r\n\r\nbody .cke_contents_ltr .image-grayscale\r\n{\r\n    background-color: white;\r\n    color: #666;\r\n}\r\n\r\nbody .cke_contents_ltr .image-grayscale img, img.image-grayscale\r\n{\r\n    filter: grayscale(100%);\r\n}\r\n\r\nbody .cke_contents_ltr .embed-240p\r\n{\r\n    max-width: 426px;\r\n    max-height: 240px;\r\n    margin:0 auto;\r\n}\r\n\r\nbody .cke_contents_ltr .embed-360p\r\n{\r\n    max-width: 640px;\r\n    max-height: 360px;\r\n    margin:0 auto;\r\n}\r\n\r\nbody .cke_contents_ltr .embed-480p\r\n{\r\n    max-width: 854px;\r\n    max-height: 480px;\r\n    margin:0 auto;\r\n}\r\n\r\nbody .cke_contents_ltr .embed-720p\r\n{\r\n    max-width: 1280px;\r\n    max-height: 720px;\r\n    margin:0 auto;\r\n}\r\n\r\nbody .cke_contents_ltr .embed-1080p\r\n{\r\n    max-width: 1920px;\r\n    max-height: 1080px;\r\n    margin:0 auto;\r\n}\r\n");

/***/ }),

/***/ 87333:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("function safeThrow(error) {\r\n    setTimeout(function () {\r\n        throw  error;\r\n    }, 0);\r\n}\r\n\r\nfunction EventEmitter() {\r\n    if (!this._azar_extendEvents) {\r\n        Object.defineProperty(this, '_azar_extendEvents', {\r\n            enumerable: false,\r\n            value: this._azar_extendEvents || { supported: {}, prioritize: {}, nonprioritize: {} }\r\n        });\r\n        Object.defineProperty(this, '__azar_force', {\r\n            value: true,\r\n            enumerable: false\r\n        });\r\n    }\r\n}\r\n\r\n\r\nEventEmitter.prototype.defineEvent = function (name) {\r\n    if (name instanceof Array) {\r\n        for (var i = 0; i < name.length; ++i)\r\n            this._azar_extendEvents.supported[name[i]] = true;\r\n    }\r\n    else\r\n        this._azar_extendEvents.supported[name] = true;\r\n    return this;\r\n};\r\n\r\nEventEmitter.prototype.isSupportedEvent = function (name) {\r\n    return true;\r\n};\r\n\r\n\r\nEventEmitter.prototype.emit = function (eventName, data) {\r\n    this.fire.apply(this, arguments);\r\n};\r\n\r\nEventEmitter.prototype.fire = function (eventName, data) {\r\n    var others = Array.prototype.slice.call(arguments, 1);\r\n    if (this.isSupportedEvent(eventName)) {\r\n        var listenerList;\r\n        var i;\r\n        if (this._azar_extendEvents.prioritize[eventName]) {\r\n            listenerList = this._azar_extendEvents.prioritize[eventName].slice();\r\n            for (i = 0; i < listenerList.length; ++i) {\r\n                try {\r\n                    listenerList[i].wrappedCallback.apply(this, others);\r\n                } catch (e) {\r\n                   safeThrow(e);\r\n                }\r\n            }\r\n        }\r\n\r\n        if (this._azar_extendEvents.nonprioritize[eventName]) {\r\n            listenerList = this._azar_extendEvents.nonprioritize[eventName].slice();\r\n            for (i = 0; i < listenerList.length; ++i) {\r\n                try {\r\n                    listenerList[i].wrappedCallback.apply(this, others);\r\n                } catch (e) {\r\n                    safeThrow(e);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    else {\r\n        if (this.dispatchEvent) {\r\n            var event = new Event(eventName);\r\n            data && Object.assign(event, data);\r\n            this.dispatchEvent(event);\r\n        }\r\n        else\r\n            throw new Error(\"Not support event \" + eventName);\r\n    }\r\n    return this;\r\n};\r\n\r\n\r\nEventEmitter.prototype.eventEmittorOnWithTime = function (isOnce, arg0, arg1, arg2) {\r\n    if (typeof arg0 == 'object') {\r\n        for (var key in arg0) {\r\n            this.eventEmittorOnWithTime(isOnce, key, arg0[key]);\r\n        }\r\n        return this;\r\n    }\r\n    else {\r\n        if (typeof arg1 == 'object') {\r\n            return this.eventEmittorOnWithTime(isOnce, arg0, arg1.callback, arg1.cap);\r\n        }\r\n        else {\r\n            var eventArr = this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] || [];\r\n            var eventIndex = -1;\r\n            for (var i = 0; i < eventArr.length; ++i) {\r\n                if (eventArr[i].wrappedCallback == arg1) {\r\n                    eventIndex = i;\r\n                    break;\r\n                }\r\n            }\r\n            if (eventIndex < 0) {\r\n                var event = { isOnce: isOnce, eventName: arg0, callback: arg1, cap: !!arg2 };\r\n                //wrappedCallback will be call\r\n                if (isOnce) {\r\n                    event.wrappedCallback = function () {\r\n                        event.callback.apply(this, arguments);\r\n                        this.off(event.eventName, event.wrappedCallback, event.cap);\r\n                    };\r\n                }\r\n                else {\r\n                    event.wrappedCallback = event.callback;\r\n                }\r\n\r\n                if (!this.isSupportedEvent(arg0)) {\r\n                    if (this.addEventListener) {\r\n                        this.addEventListener(arg0, event.wrappedCallback, !!arg2);\r\n                    }\r\n                    else {\r\n                        this.attachEvent('on' + arg0, arg1, !!arg2);\r\n                    }\r\n                }\r\n\r\n                eventArr.push(event);\r\n                this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] = eventArr;\r\n            }\r\n            else {\r\n                console.warn(\"dupplicate event\");\r\n            }\r\n\r\n        }\r\n        return this;\r\n    }\r\n};\r\n\r\n\r\nEventEmitter.prototype.on = function (arg0, arg1, arg2) {\r\n    this.eventEmittorOnWithTime(false, arg0, arg1, arg2);\r\n    return this;\r\n};\r\n\r\n\r\nEventEmitter.prototype.once = function (arg0, arg1, arg2) {\r\n    this.eventEmittorOnWithTime(true, arg0, arg1, arg2);\r\n    return this;\r\n};\r\n\r\nEventEmitter.prototype.off = function (arg0, arg1, arg2) {\r\n    if (typeof arg0 == 'object') {\r\n        for (var key in arg0) {\r\n            this.off(key, arg0[key]);\r\n        }\r\n        return this;\r\n    }\r\n    else {\r\n        if (typeof arg1 == 'object') {\r\n            return this.off(arg0, arg1.callback, arg1.cap);\r\n        }\r\n        else {\r\n            var eventArr = this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] || [];\r\n            var newEventArray = [];\r\n            for (var i = 0; i < eventArr.length; ++i) {\r\n                var event = eventArr[i];\r\n                if (event.wrappedCallback == arg1) {\r\n                    //Dont add to newEventArray\r\n                    if (this.isSupportedEvent(arg0)) {\r\n                    }\r\n                    else {\r\n                        if (this.removeEventListener) {\r\n                            this.removeEventListener(event.eventName, event.wrappedCallback, !!event.cap);\r\n                        }\r\n                        else {\r\n                            this.detachEvent('on' + event.eventName, event.wrappedCallback, !!event.cap);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    newEventArray.push(event);\r\n                }\r\n            }\r\n            this._azar_extendEvents[arg2 ? 'prioritize' : 'nonprioritize'][arg0] = newEventArray;\r\n            return this;\r\n        }\r\n    }\r\n\r\n};\r\n\r\n\r\nvar TYPE_WORKER = 'WORKER';\r\n\r\n/**\r\n *\r\n * @param {Worker|HTMLIFrameElement|WorkerGlobalScope|Window=} host\r\n */\r\nfunction IFrameBridge(host) {\r\n    EventEmitter.call(this);\r\n    /***\r\n     *\r\n     * @type {Worker|HTMLIFrameElement|WorkerGlobalScope|Window|WorkerGlobalScope|Window}\r\n     */\r\n    this.host = host || self;\r\n    this.sender = null;\r\n    this.receiver = null;\r\n    this.origin = null;\r\n    this.type = 'NOT_DETECT';\r\n    this.id = \"UNSET\";\r\n\r\n    this.sync = this._detectHost().then(() => this._attach());\r\n\r\n    this.__azarResolveCallbacks = {};\r\n    this.__azarRejectCallbacks = {};\r\n}\r\n\r\nIFrameBridge.prototype._detectHost = function () {\r\n          this.type = TYPE_WORKER;\r\n          this.sender = this.host;\r\n          this.receiver = this.host;\r\n          return Promise.resolve();\r\n};\r\n\r\n\r\nIFrameBridge.prototype._attach = function () {\r\n    if (this.receiver.addEventListener) {\r\n        this.receiver.addEventListener(\"message\", this.__azarMessageListener.bind(this), false);\r\n    }\r\n    else if (this.receiver.attachEvent) {\r\n        this.receiver.attachEvent(\"onmessage\", this.__azarMessageListener.bind(this));\r\n    }\r\n    else {\r\n        this.receiver.onmessage = this.__azarMessageListener.bind(this);\r\n    }\r\n};\r\n\r\n\r\nIFrameBridge.getInstance = function () {\r\n    if (!IFrameBridge.shareInstance) {\r\n        var origin = location.origin;\r\n        var rootOrigin = IFrameBridge.getParentUrl().match(/^(http|https):\\/\\/[^/]+/);\r\n        if (rootOrigin) {\r\n            rootOrigin = rootOrigin[0];\r\n        }\r\n        else {\r\n            rootOrigin = origin;\r\n        }\r\n\r\n        // IFrameBridge.shareInstance = new IFrameBridge(self, rootOrigin == origin? undefined: \"*\" || rootOrigin );\r\n        var host = self;\r\n        IFrameBridge.shareInstance = new IFrameBridge(host, rootOrigin);\r\n    }\r\n    return IFrameBridge.shareInstance;\r\n};\r\n\r\n\r\nObject.defineProperties(IFrameBridge.prototype, Object.getOwnPropertyDescriptors(EventEmitter.prototype));\r\nIFrameBridge.prototype.constructor = IFrameBridge;\r\n\r\n\r\nIFrameBridge.getParentUrl = function () {\r\n    var parentUrl = (window.location != window.parent.location)\r\n        ? document.referrer\r\n        : document.location.href;\r\n    return parentUrl;\r\n};\r\n\r\nIFrameBridge.prototype.__azarMessageListener = function (event) {\r\n    this.__azarHandleData(event.data);\r\n};\r\n\r\n\r\nIFrameBridge.prototype.__azarHandleData = function (data) {\r\n    if (data.bridgeId !== this.id) return;\r\n    if (data.type) {\r\n        if (data.type == \"INVOKE\") {\r\n            try {\r\n                var result = this.__azarSelfInvoke(data.name, data.params);\r\n                if (result && typeof result.then == 'function') {\r\n                    result.then(function (result) {\r\n                        this.__azarResolve(data.taskId, result);\r\n                    }.bind(this))\r\n                        .catch(function (err) {\r\n                            safeThrow(err);\r\n                            this.__azarResolve(data.taskId, null, err);\r\n                        }.bind(this));\r\n                }\r\n                else {\r\n                    this.__azarResolve(data.taskId, result);\r\n                }\r\n            } catch (err) {\r\n                safeThrow(err);\r\n                this.__azarResolve(data.taskId, null, err);\r\n            }\r\n        }\r\n        else if (data.type == \"INVOKE_RESULT\") {\r\n            if (this.__azarResolveCallbacks[data.taskId]) {\r\n                if (data.error) {\r\n                    this.__azarRejectCallbacks[data.taskId](data.error);\r\n                }\r\n                else {\r\n                    this.__azarResolveCallbacks[data.taskId](data.result);\r\n                }\r\n                delete this.__azarResolveCallbacks[data.taskId];\r\n                delete this.__azarRejectCallbacks[data.taskId];\r\n            }\r\n        }\r\n        else if (data.type == \"EMIT\") {\r\n            this.fire.apply(this, data.params);\r\n        }\r\n        else this.fire('message', data, this);\r\n    }\r\n};\r\n\r\n\r\nIFrameBridge.prototype.__azarResolve = function (taskId, result, error) {\r\n    var data = {\r\n        type: \"INVOKE_RESULT\",\r\n        taskId: taskId,\r\n        result: result,\r\n        error: error,\r\n        bridgeId: this.id\r\n    };\r\n\r\n    if (this.origin) {\r\n        this.sender.postMessage(data, this.origin);\r\n    }\r\n    else {\r\n        this.sender.postMessage(data);\r\n    }\r\n};\r\n\r\n\r\nIFrameBridge.prototype.__azarSelfInvoke = function (name, params) {\r\n    if (typeof this[name] == 'function') {\r\n        return this[name].apply(this, params);\r\n    }\r\n    else {\r\n        return this[name];\r\n    }\r\n};\r\n\r\n\r\nIFrameBridge.prototype.emit = function () {\r\n    var params = [];\r\n    params.push.apply(params, arguments);\r\n    this.sync.then(function () {\r\n        var data = {\r\n            type: \"EMIT\",\r\n            params: params,\r\n            bridgeId: this.id\r\n        };\r\n        if (this.origin) {\r\n            this.sender.postMessage(data, this.origin);\r\n        }\r\n        else {\r\n            this.sender.postMessage(data);\r\n        }\r\n    }.bind(this));\r\n    return this;\r\n};\r\n\r\n\r\nIFrameBridge.prototype.invoke = function (name) {\r\n    var params = [];\r\n    params.push.apply(params, arguments);\r\n    params.shift();\r\n    return this.sync.then(function () {\r\n        var indent = randomIdent(32);\r\n        var data = {\r\n            type: 'INVOKE',\r\n            params: params,\r\n            taskId: indent,\r\n            name: name,\r\n            bridgeId: this.id\r\n        };\r\n        if (this.origin) {\r\n            this.host.postMessage(data, this.origin);\r\n        }\r\n        else {\r\n            this.host.postMessage(data);\r\n        }\r\n        return new Promise(function (resolve, reject) {\r\n            this.__azarResolveCallbacks[indent] = resolve;\r\n            this.__azarRejectCallbacks[indent] = reject;\r\n        }.bind(this));\r\n    }.bind(this));\r\n};\r\n\r\nIFrameBridge.prototype.importScriptURLs = function () {\r\n    return this.invoke.apply(this, ['_receiveScriptURLs'].concat(Array.prototype.slice.call(arguments)));\r\n};\r\n\r\nIFrameBridge.prototype.importScript = function (code) {\r\n    var blob = new Blob([code], { type: 'application/javascript' });\r\n    var url = URL.createObjectURL(blob);\r\n    return this.importScriptURLs(url);\r\n};\r\n\r\n\r\nIFrameBridge.prototype.createMethod = function (name, fx) {\r\n    this[name] = function () {\r\n        return this.invoke.apply(this, [name].concat(Array.prototype.slice.call(arguments)));\r\n    };\r\n    return this.invoke.apply(this, ['_receiveMethod', name, fx.toString()]);\r\n};\r\n\r\n\r\nIFrameBridge.prototype._receiveScriptURLs = function () {\r\n    if (self.importScripts) {\r\n        self.importScripts.apply(self, arguments);\r\n    }\r\n};\r\n\r\n\r\nIFrameBridge.prototype._receiveMethod = function (name, code) {\r\n    this[name] = (new Function('return ' + code))();\r\n};\r\n\r\n\r\nvar IFrameBridge_prototype_descriptors = Object.getOwnPropertyDescriptors(IFrameBridge.prototype);\r\ndelete IFrameBridge_prototype_descriptors.constructor;\r\n\r\nObject.defineProperties(self, IFrameBridge_prototype_descriptors);\r\nIFrameBridge.call(self, self);");

/***/ }),

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


var content = __webpack_require__(68042);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(63608);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(19001);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(1682);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(71843);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(26106);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(23368);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(2943);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(76241);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(16172);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(72254);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(75021);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(4334);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(63909);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(94142);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(85009);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(9680);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(76457);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(15118);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(15132);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(2526);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(64273);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(96048);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(67338);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(3397);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(45406);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(37437);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(74100);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(6478);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(21908);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(16189);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(36485);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(40468);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(94492);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(4487);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(48367);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(70131);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(34854);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(35593);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(5543);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(47110);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(67691);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(49931);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(82375);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(20893);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(14237);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(76209);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(85225);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(36240);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(70729);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(42305);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(38278);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(70058);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(64713);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(17726);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(69847);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(55498);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(26394);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(12761);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(98375);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(40091);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(5848);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(68491);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(48904);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(47965);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(16951);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(80918);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(78257);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(33448);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(82720);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(77557);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(41154);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(78351);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(26993);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(16972);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(90646);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(36155);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(31610);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(63899);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(30780);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(42453);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(31142);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(93586);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(78239);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(61209);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(4559);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(68551);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(13478);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(59355);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(23542);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(60182);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(4994);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(17289);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(92183);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(54894);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(6322);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(86923);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(32206);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(89423);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(87111);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(86778);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(4476);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(19910);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(65199);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(84679);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(670);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(75575);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(52296);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(44439);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(79127);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(26085);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(74315);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(74015);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(78875);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(22652);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(50475);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(1449);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(30238);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(63519);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(54771);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(70095);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(61048);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(64178);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(70194);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(30619);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(29496);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(29581);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(91652);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(43034);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(45930);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(33122);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(22839);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(34454);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(99322);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(27634);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(31546);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(66066);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(36388);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(34038);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(41130);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(31000);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(10883);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(23678);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(8069);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(42338);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(38070);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(25583);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(43657);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(2222);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(35685);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(54983);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(28637);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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


var content = __webpack_require__(64741);

if(typeof content === 'string') content = [[module.id, content, '']];

var transform;
var insertInto;



var options = {"hmr":true}

options.transform = transform
options.insertInto = undefined;

var update = __webpack_require__(76723)(content, options);

if(content.locals) module.exports = content.locals;

if(false) {}

/***/ }),

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

/*
	MIT License http://www.opensource.org/licenses/mit-license.php
	Author Tobias Koppers @sokra
*/

var stylesInDom = {};

var	memoize = function (fn) {
	var memo;

	return function () {
		if (typeof memo === "undefined") memo = fn.apply(this, arguments);
		return memo;
	};
};

var isOldIE = memoize(function () {
	// Test for IE <= 9 as proposed by Browserhacks
	// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
	// Tests for existence of standard globals is to allow style-loader
	// to operate correctly into non-standard environments
	// @see https://github.com/webpack-contrib/style-loader/issues/177
	return window && document && document.all && !window.atob;
});

var getTarget = function (target, parent) {
  if (parent){
    return parent.querySelector(target);
  }
  return document.querySelector(target);
};

var getElement = (function (fn) {
	var memo = {};

	return function(target, parent) {
                // If passing function in options, then use it for resolve "head" element.
                // Useful for Shadow Root style i.e
                // {
                //   insertInto: function () { return document.querySelector("#foo").shadowRoot }
                // }
                if (typeof target === 'function') {
                        return target();
                }
                if (typeof memo[target] === "undefined") {
			var styleTarget = getTarget.call(this, target, parent);
			// 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) {
					styleTarget = null;
				}
			}
			memo[target] = styleTarget;
		}
		return memo[target]
	};
})();

var singleton = null;
var	singletonCounter = 0;
var	stylesInsertedAtTop = [];

var	fixUrls = __webpack_require__(57008);

module.exports = function(list, options) {
	if (typeof DEBUG !== "undefined" && DEBUG) {
		if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
	}

	options = options || {};

	options.attrs = typeof options.attrs === "object" ? options.attrs : {};

	// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
	// tags it will allow on a page
	if (!options.singleton && typeof options.singleton !== "boolean") options.singleton = isOldIE();

	// By default, add <style> tags to the <head> element
        if (!options.insertInto) options.insertInto = "head";

	// By default, add <style> tags to the bottom of the target
	if (!options.insertAt) options.insertAt = "bottom";

	var styles = listToStyles(list, options);

	addStylesToDom(styles, options);

	return function update (newList) {
		var mayRemove = [];

		for (var i = 0; i < styles.length; i++) {
			var item = styles[i];
			var domStyle = stylesInDom[item.id];

			domStyle.refs--;
			mayRemove.push(domStyle);
		}

		if(newList) {
			var newStyles = listToStyles(newList, options);
			addStylesToDom(newStyles, options);
		}

		for (var i = 0; i < mayRemove.length; i++) {
			var domStyle = mayRemove[i];

			if(domStyle.refs === 0) {
				for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();

				delete stylesInDom[domStyle.id];
			}
		}
	};
};

function addStylesToDom (styles, options) {
	for (var i = 0; i < styles.length; i++) {
		var item = styles[i];
		var domStyle = stylesInDom[item.id];

		if(domStyle) {
			domStyle.refs++;

			for(var j = 0; j < domStyle.parts.length; j++) {
				domStyle.parts[j](item.parts[j]);
			}

			for(; j < item.parts.length; j++) {
				domStyle.parts.push(addStyle(item.parts[j], options));
			}
		} else {
			var parts = [];

			for(var j = 0; j < item.parts.length; j++) {
				parts.push(addStyle(item.parts[j], options));
			}

			stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
		}
	}
}

function listToStyles (list, options) {
	var styles = [];
	var newStyles = {};

	for (var i = 0; i < list.length; i++) {
		var item = list[i];
		var id = options.base ? item[0] + options.base : item[0];
		var css = item[1];
		var media = item[2];
		var sourceMap = item[3];
		var part = {css: css, media: media, sourceMap: sourceMap};

		if(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});
		else newStyles[id].parts.push(part);
	}

	return styles;
}

function insertStyleElement (options, style) {
	var target = getElement(options.insertInto)

	if (!target) {
		throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");
	}

	var lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];

	if (options.insertAt === "top") {
		if (!lastStyleElementInsertedAtTop) {
			target.insertBefore(style, target.firstChild);
		} else if (lastStyleElementInsertedAtTop.nextSibling) {
			target.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);
		} else {
			target.appendChild(style);
		}
		stylesInsertedAtTop.push(style);
	} else if (options.insertAt === "bottom") {
		target.appendChild(style);
	} else if (typeof options.insertAt === "object" && options.insertAt.before) {
		var nextSibling = getElement(options.insertAt.before, target);
		target.insertBefore(style, nextSibling);
	} else {
		throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");
	}
}

function removeStyleElement (style) {
	if (style.parentNode === null) return false;
	style.parentNode.removeChild(style);

	var idx = stylesInsertedAtTop.indexOf(style);
	if(idx >= 0) {
		stylesInsertedAtTop.splice(idx, 1);
	}
}

function createStyleElement (options) {
	var style = document.createElement("style");

	if(options.attrs.type === undefined) {
		options.attrs.type = "text/css";
	}

	if(options.attrs.nonce === undefined) {
		var nonce = getNonce();
		if (nonce) {
			options.attrs.nonce = nonce;
		}
	}

	addAttrs(style, options.attrs);
	insertStyleElement(options, style);

	return style;
}

function createLinkElement (options) {
	var link = document.createElement("link");

	if(options.attrs.type === undefined) {
		options.attrs.type = "text/css";
	}
	options.attrs.rel = "stylesheet";

	addAttrs(link, options.attrs);
	insertStyleElement(options, link);

	return link;
}

function addAttrs (el, attrs) {
	Object.keys(attrs).forEach(function (key) {
		el.setAttribute(key, attrs[key]);
	});
}

function getNonce() {
	if (false) {}

	return __webpack_require__.nc;
}

function addStyle (obj, options) {
	var style, update, remove, result;

	// If a transform function was defined, run it on the css
	if (options.transform && obj.css) {
	    result = typeof options.transform === 'function'
		 ? options.transform(obj.css) 
		 : options.transform.default(obj.css);

	    if (result) {
	    	// If transform returns a value, use that instead of the original css.
	    	// This allows running runtime transformations on the css.
	    	obj.css = result;
	    } else {
	    	// If the transform function returns a falsy value, don't add this css.
	    	// This allows conditional loading of css
	    	return function() {
	    		// noop
	    	};
	    }
	}

	if (options.singleton) {
		var styleIndex = singletonCounter++;

		style = singleton || (singleton = createStyleElement(options));

		update = applyToSingletonTag.bind(null, style, styleIndex, false);
		remove = applyToSingletonTag.bind(null, style, styleIndex, true);

	} else if (
		obj.sourceMap &&
		typeof URL === "function" &&
		typeof URL.createObjectURL === "function" &&
		typeof URL.revokeObjectURL === "function" &&
		typeof Blob === "function" &&
		typeof btoa === "function"
	) {
		style = createLinkElement(options);
		update = updateLink.bind(null, style, options);
		remove = function () {
			removeStyleElement(style);

			if(style.href) URL.revokeObjectURL(style.href);
		};
	} else {
		style = createStyleElement(options);
		update = applyToTag.bind(null, style);
		remove = function () {
			removeStyleElement(style);
		};
	}

	update(obj);

	return function updateStyle (newObj) {
		if (newObj) {
			if (
				newObj.css === obj.css &&
				newObj.media === obj.media &&
				newObj.sourceMap === obj.sourceMap
			) {
				return;
			}

			update(obj = newObj);
		} else {
			remove();
		}
	};
}

var replaceText = (function () {
	var textStore = [];

	return function (index, replacement) {
		textStore[index] = replacement;

		return textStore.filter(Boolean).join('\n');
	};
})();

function applyToSingletonTag (style, index, remove, obj) {
	var css = remove ? "" : obj.css;

	if (style.styleSheet) {
		style.styleSheet.cssText = replaceText(index, css);
	} else {
		var cssNode = document.createTextNode(css);
		var childNodes = style.childNodes;

		if (childNodes[index]) style.removeChild(childNodes[index]);

		if (childNodes.length) {
			style.insertBefore(cssNode, childNodes[index]);
		} else {
			style.appendChild(cssNode);
		}
	}
}

function applyToTag (style, obj) {
	var css = obj.css;
	var media = obj.media;

	if(media) {
		style.setAttribute("media", media)
	}

	if(style.styleSheet) {
		style.styleSheet.cssText = css;
	} else {
		while(style.firstChild) {
			style.removeChild(style.firstChild);
		}

		style.appendChild(document.createTextNode(css));
	}
}

function updateLink (link, options, obj) {
	var css = obj.css;
	var sourceMap = obj.sourceMap;

	/*
		If convertToAbsoluteUrls isn't defined, but sourcemaps are enabled
		and there is no publicPath defined then lets turn convertToAbsoluteUrls
		on by default.  Otherwise default to the convertToAbsoluteUrls option
		directly
	*/
	var autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;

	if (options.convertToAbsoluteUrls || autoFixUrls) {
		css = fixUrls(css);
	}

	if (sourceMap) {
		// http://stackoverflow.com/a/26603875
		css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
	}

	var blob = new Blob([css], { type: "text/css" });

	var oldSrc = link.href;

	link.href = URL.createObjectURL(blob);

	if(oldSrc) URL.revokeObjectURL(oldSrc);
}


/***/ }),

/***/ 87294:
/***/ (() => {

/* (ignored) */

/***/ }),

/***/ 95036:
/***/ (() => {

/* (ignored) */

/***/ }),

/***/ 52361:
/***/ (() => {

/* (ignored) */

/***/ }),

/***/ 94616:
/***/ (() => {

/* (ignored) */

/***/ }),

/***/ 82398:
/***/ ((module) => {

"use strict";
module.exports = JSON.parse('["3g2","3ga","3gp","7z","aa","aac","ac","accdb","accdt","ace","adn","ai","aif","aifc","aiff","ait","amr","ani","apk","app","applescript","asax","asc","ascx","asf","ash","ashx","asm","asmx","asp","aspx","asx","au","aup","avi","axd","aze","bak","bash","bat","bin","blank","bmp","bowerrc","bpg","browser","bz2","bzempty","c","cab","cad","caf","cal","cd","cdda","cer","cfg","cfm","cfml","cgi","chm","class","cmd","code-workspace","codekit","coffee","coffeelintignore","com","compile","conf","config","cpp","cptx","cr2","crdownload","crt","crypt","cs","csh","cson","csproj","css","csv","cue","cur","dart","dat","data","db","dbf","deb","default","dgn","dist","diz","dll","dmg","dng","doc","docb","docm","docx","dot","dotm","dotx","download","dpj","ds_store","dsn","dtd","dwg","dxf","editorconfig","el","elf","eml","enc","eot","eps","epub","eslintignore","exe","f4v","fax","fb2","fla","flac","flv","fnt","folder","fon","gadget","gdp","gem","gif","gitattributes","gitignore","go","gpg","gpl","gradle","gz","h","handlebars","hbs","heic","hlp","hs","hsl","htm","html","ibooks","icns","ico","ics","idx","iff","ifo","image","img","iml","in","inc","indd","inf","info","ini","inv","iso","j2","jar","java","jpe","jpeg","jpg","js","json","jsp","jsx","key","kf8","kmk","ksh","kt","kts","kup","less","lex","licx","lisp","lit","lnk","lock","log","lua","m","m2v","m3u","m3u8","m4","m4a","m4r","m4v","map","master","mc","md","mdb","mdf","me","mi","mid","midi","mk","mkv","mm","mng","mo","mobi","mod","mov","mp2","mp3","mp4","mpa","mpd","mpe","mpeg","mpg","mpga","mpp","mpt","msg","msi","msu","nef","nes","nfo","nix","npmignore","ocx","odb","ods","odt","ogg","ogv","ost","otf","ott","ova","ovf","p12","p7b","pages","part","pcd","pdb","pdf","pem","pfx","pgp","ph","phar","php","pid","pkg","pl","plist","pm","png","po","pom","pot","potx","pps","ppsx","ppt","pptm","pptx","prop","ps","ps1","psd","psp","pst","pub","py","pyc","qt","ra","ram","rar","raw","rb","rdf","rdl","reg","resx","retry","rm","rom","rpm","rpt","rsa","rss","rst","rtf","ru","rub","sass","scss","sdf","sed","sh","sit","sitemap","skin","sldm","sldx","sln","sol","sphinx","sql","sqlite","step","stl","svg","swd","swf","swift","swp","sys","tar","tax","tcsh","tex","tfignore","tga","tgz","tif","tiff","tmp","tmx","torrent","tpl","ts","tsv","ttf","twig","txt","udf","vb","vbproj","vbs","vcd","vcf","vcs","vdi","vdx","vmdk","vob","vox","vscodeignore","vsd","vss","vst","vsx","vtx","war","wav","wbk","webinfo","webm","webp","wma","wmf","wmv","woff","woff2","wps","wsf","xaml","xcf","xfl","xlm","xls","xlsm","xlsx","xlt","xltm","xltx","xml","xpi","xps","xrb","xsd","xsl","xspf","xz","yaml","yml","z","zip","zsh"]');

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// 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/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 in strict mode.
(() => {
"use strict";


var _GadevoirApp = _interopRequireDefault(__webpack_require__(90919));
var _config = _interopRequireDefault(__webpack_require__(94147));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var APP = new _GadevoirApp["default"](_config["default"]);
APP.getView().addTo(document.body);
APP.start();
})();

/******/ })()
;

VaKeR 2022